Hallo zusammen, mein MSP430(F5438) soll durch eine Kombination aus CAN-Controller MCP2515 und CAN-Transceiver SN65HVD230D erweitert werden. Bevor ich die neue Hardware nun aber verlöte, würde ich mich über eine Rückmeldung freuen, ob ich auch wirklich nichts vergessen habe. Ich gehe die Pins mal entsprechend der Nummerierung durch: MCP2515 1 - TXCAN - Verbunden mit Pin1 vom Transceiver (D_TO_TXCAN) 2 - RXCAN - Verbunden mit Pin4 vom Transceiver (R_TO_RXCAN) 3 - CLKOUT / SOF - nicht verbunden 4 - TX0RTS - nicht verbunden 5 - TX1RTS - nicht verbunden 6 - TX2RTS - nicht verbunden 7 - OSC2 - verbunden mit Quarz (16Mhz) 8 - OSC1 - verbunden mit Quarz (16Mhz) 9 - GND - verbunden mit GND 10 - VCC - verbunden mit VCC 11 - RX0BF - nicht verbunden 12 - INT - nicht verbunden 13 - SCK - verbunden mit UCA1CLK des MSP's (P3.6) 14 - SI - verbunden mit UCA1SIMO des MSP's (P5.6) 15 - SO - verbunden mit UCA1SOMI des MSP's (P5.7) 16 - CS - verbunden UCA1STE des MSP's (P5.5) 17 - RESET - verbunden mit dem Reset-Pin des MSP's Der SN65HVD230D ist wie folgt verschaltet: 1 - D_TO_TXCAN - verbunden mit TXCAN vom MCP2515 2 - GND - verbunden mit GND 3 - VCC - verbunden mit VCC 4 - R_TO_RXCAN - verbunden mit RXCAN vom MCP2515 5 - VRET - nicht verbunden 6 - CANL - verbunden mit CAN-BUS (CANL) 7 - CANH - verbunden mit CAN-BUS (CANH) 8 - RSLOPE - verbunden mit GND (einfachste Möglichkeit für schnelle Baudrates?) Ist es damit möglich anständig mit dem CAN-Controller zu arbeiten? Oder wäre es doch eine empfehlenswerte Idee die Pins TX0RTS, TX1RTS, TX2RTS, RX0BF, RX1BF und INT mit dem MSP430 zu verbinden? Ferner frage ich mich, wozu die RTS und BF Register genau da sind? Diese sind doch nur erforderlich, wenn man mit Interrupts arbeiten möchte, oder? Es sollten sich aber doch auch alle Funktionen mittels des SPI-Interfaces realisieren lassen oder nicht? (Ist mein SPI richtig verkabelt?) Noch etwas: Sobald der MCP2515 eine CAN-Nachricht empfangen hat, ist dieser doch bestimmt dazu in der Lage einen Interrupt zu erzeugen. Muss ich dafür den Pin INT mit einen freien Pin meines MSP's verbinden oder benötige ich die anderen Pins dafür (TX?RTS, RX?BF)? Durch die vielen Einstellungsmöglichkeiten des MCPs, tue ich mich etwas schwer mit dieser neuen Materie. Daher würde ich mich über jedes erklärendes Wort sehr freuen. Ich bedanke mich bereits jetzt für jede nützliche Antwort :-) PS: Wenn ihr einen Schaltplan anstatt der Liste bevorzugen würdet, kann ich euch den gerne auch noch nachliefern ;-)
Ohne den Baustein im Detail zu kennen, ein paar Anmerkungen. Den MSP430 kenne ich (und verstehe etwas von CAN), außerdem habe ich natürlich ins DB geschaut. Roland M. schrieb: > 17 - RESET - verbunden mit dem Reset-Pin des MSP's Das ist eine schlechte Idee. Hänge den Reset an einen GPIO des MSP, dann kannst du den Baustein gezielt (de-)aktivieren. > Der SN65HVD230D ist wie folgt verschaltet: > 3 - VCC - verbunden mit VCC Abblock-C nicht vergessen. > 8 - RSLOPE - verbunden mit GND (einfachste Möglichkeit für schnelle > Baudrates?) Im Datenblatt steht was von 10k...100k, die Grafik passt aber nicht so recht dazu. Mache 10k rein, sie tun dir nicht weh. > Ist es damit möglich anständig mit dem CAN-Controller zu arbeiten? Oder > wäre es doch eine empfehlenswerte Idee die Pins TX0RTS, TX1RTS, TX2RTS, > RX0BF, RX1BF und INT mit dem MSP430 zu verbinden? Das hat Microchip doch schön beschrieben: "When a message is moved into either of the receive buffers, the appropriate CANINTF.RXnIF bit is set. This bit must be cleared by the MCU in order to allow a new message to be received into the buffer. This bit provides a positive lockout to ensure that the MCU has finished with the message before the MCP2515 attempts to load a new message into the receive buffer. If the CANINTE.RXnIE bit is set, an interrupt will be generated on the INT pin to indicate that a valid message has been received. In addition, the associated RXnBF pin will drive low if configured as a receive buffer full pin. See Section 4.4 “RX0BF and RX1BF Pins” for details. Du kannst dir also aussuchen, ob du /INT auswerten und dann per SPI nachschauen willst, was denn nun los ist oder ob du es gerne mundgerecht per Leitung serviert hättest. Wenn du per SPI permanent abfragst, kannst du vielleicht sogar auf /INT verzichten. Bei SPI fängt der Peripheriebaustein aber nicht von sich aus an zu reden, du musst ihn schon fragen. Die Verdrahtung sieht ganz ok aus. Auf Basis deiner Fragen habe ich die dumpfe Ahnung, dass du noch einiges vor dir hast. Viel Erfolg (das ist nicht ironisch gemeint). Max
:
Bearbeitet durch User
Wie mein Vorredner schon schrieb: Widerstand an RSlope des Tranceivers. Ich nutze meist 680R. Zum MSP430 Reset kann ich nichts sagen, ich nutze Atmegas. Bei denen hänge ich Reset des MCP2515 an den Reset des uC mit der Atmega-üblichen Beschaltung 10k Pull-Up und C nach GND. Roland M. schrieb: > Noch etwas: Sobald der MCP2515 eine CAN-Nachricht empfangen hat, ist > dieser doch bestimmt dazu in der Lage einen Interrupt zu erzeugen. Muss > ich dafür den Pin INT mit einen freien Pin meines MSP's verbinden oder > benötige ich die anderen Pins dafür Jep, Interrupt-Ausgang des CAN-Controllers an den uC. Der Interrupt-gesteuerte Empfang von Botschaften erleichtert m.E. die Programmierung und spart Rechenzeit.
Ich hatte mal einen F5508 mit einem MCP2515 und TJA1043 verwendet. Da musste noch ein RC-Glied zwischen MCP2515 und TJA1043 RX. Könnte sein, dass Du das auch gebrauchen könntest. Gruß Gunther
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.