In diesen Tagen sind eine Reihe von CAN-Modulen in Mikrocontrollern eingebaut. Der PIC18F2480 ist ein Beispiel dafür. Ist dieser Mikrocontroller (mit integriertem CAN) in der Lage, einen CAN-Bus alleine anzusteuern, oder ist ein externer CAN-Transceiver / Controller erforderlich?
Ich glaube, CAN hat sowohl eine Software- als auch eine Hardwareschicht, und wie es aussieht, scheinen diese CAN-fähigen Mikrocontroller nur die Software zu haben, aber es heißt nicht, dass sie den CAN-Bus so wie er ist ansteuern können oder nicht.
Ich möchte mehr als sechs Mikrocontroller über einen CAN-Bus verbinden und möchte wissen, ob ich über alle einen Transceiver benötige oder ob das eingebaute Material die Kommunikation aus Software- und Hardware-Sicht bewältigen kann.
Angenommen, ich habe die erforderlichen Abschlusswiderstände und andere kleine diskrete Komponenten (Kappen, Widerstände usw.).
Die Mikrocontroller- Familie LPC11Cxx (ARM Cortex-M0-basiert) enthält den integrierten CAN-Transceiver.
quelle
Ja, du brauchst einen Tranceiver. Die CAN-Pins am Mikro empfangen und senden. Der CAN-Bus selbst verwendet ein Twisted-Pair-Kabel mit differentieller Signalisierung auf zwei Drähten, die als HIGH und LOW bezeichnet werden.
Eine der Aufgaben des Transceivers besteht darin, den auf dem TX-Pin vorhandenen Logikpegel in CAN-Bus-Signale umzuwandeln:
Das andere ist, das, was sich auf dem Bus befindet, zu nehmen und es wieder in einen Logikpegel umzuwandeln, um es vom RX-Pin zu Ihrem Mikro zurückzusenden.
quelle
Sie benötigen einen CAN-Transceiver-Chip zwischen der CPU und dem CAN-Bus. Schauen Sie sich den MCP2551 an.
Update 17. August 2017:
Ich bin gerade auf der Microchip Masters-Konferenz. Die Ingenieure von Microchip haben mir sofort mitgeteilt, dass eines der neuen Teile, die aus der Übernahme von Atmel hervorgegangen sind, sowohl billiger als auch besser als das MCP2551 ist.
quelle
Analog Devices verfügt über eine beispielhafte CAN-Transceiver-Schaltung , die einen Differenzverstärker verwendet.
Ich habe das nicht ausprobiert, bin mir dessen nur bewusst. Interessiert auch, ob es mit einem Operationsverstärker implementiert werden könnte
Der Vorteil der Verwendung eines dedizierten IC-CAN-Transceivers besteht darin, dass die Arbitrierung für Sie erledigt wird und Sie sich keine Sorgen um Busstörungen machen müssen. Wenn Sie nur den Bus beobachten und es sich nicht um eine fehlerkritische Umgebung handelt, ist die Schaltung möglicherweise in Ordnung. Während der mcp2551 sehr beliebt ist, gibt es viele Optionen für Schnittstellen-Chips.
Eine neue Entwicklung sind die System Base-Chips, die Spannungsregelung, Leistungsmodi und ESD-Schutz vor dem Bus umfassen.
Wie oben erwähnt, ist der LCP11C24 von NXP insofern einzigartig, als der Prozessor einen CAN-Transceiver enthält. Ein Demoboard kostet damit nur 19 US-Dollar. Eine weitere kostengünstige Lösung ist die Verwendung des Cypress PSoC5-Demoboards CY8CKIT-059 für 9,38 USD. Die PSoC5 hat keinen CAN-Controller. es geht noch einen Schritt weiter: Der Controller ist in den FPGA-ähnlichen Universalblöcken implementiert. Die Register des Controllers werden über die GUI der IDE konfiguriert, was das Filtern und F & E ziemlich einfach macht.
Eine wichtige Methode, die ich beim Durchsuchen von Datenblättern gefunden habe, ist, dass das mcu TTL mit CAN-Tx und CAN-Rx beschriftet ist, während die Datenleitungen der Transceiver zum Bus immer mit CAN-H und CAN-L beschriftet sind. Ich mag die Diagramme in der anderen Antwort nicht, in denen TxRx gezeigt wird, das an den Bus angeschlossen wird; Dies verstößt gegen die Konvention und trägt zur Verwirrung bei.
quelle