CAN-Übertragungs- und Abschlusswiderstände

Ich habe versucht, ein CAN-Netzwerk mit PIC18F25K80-Mikrocontrollern und einem MCP2551 einzurichten, um zwischen ihnen zu kommunizieren. Kann ich zwei einfache Drähte als CAN-Bus verwenden, indem ich nur CANL, CANH der Transceiver anschließe? Ich konnte mit dem Aufbau, den ich mit zwei Drähten gemacht habe, nicht einmal Daten übertragen! Soll ich sie mit etwas Widerstand beenden?

Versuchen Sie es mit Twisted Pair und vorzugsweise mit Screened Twisted Pair
Wenn die Buslänge klein ist, könnte es funktionieren, aber es ist immer besser, eine Terminierung zu haben.
@Swanand: Nein. Das Beenden der Leitung ist nur ein Teil des Zwecks der Widerstände. Der andere Teil besteht darin, den passiven Zustand des Busses sicherzustellen. In diesem Sinne sind sie wie der Pullup-Widerstand eines Open-Collector-Busses. Ohne den Widerstand ist der passive Zustand undefiniert.

Antworten (2)

Es besteht die Annahme einer gemeinsamen 0 V zwischen den beiden Schaltungen oder zumindest einer Differenz zwischen den 0 V der Schaltungen innerhalb der Gleichtakt-Differenzspannung.

Für eine korrekte CAN-Übertragung benötigen Sie

  • durchgehende Verdrahtung zwischen den beiden Knoten, CANH zu CANH und CANL zu CANL. Nicht gekreuzt, nicht kurzgeschlossen, nicht unterbrochen. Twisted-Pair ist bei niedrigen Datenraten/sehr kurzen Kabeln nicht zwingend erforderlich zB wenige cm bei 50kBaud im Labor.
  • mindestens einen Abschlusswiderstand, ohne geht gar nichts. Wenn die Datenraten/Kabellängen steigen, sollten Sie wirklich an jedem Ende einen mit dem richtigen Wert haben, 120R.
  • Mindestens ein Empfänger läuft mit der gleichen Datenrate (und anderen Bit-Timings), um den ACK-Impuls zu senden, andernfalls erhalten Sie vom Sender der ersten Nachricht unendliche Wiederholungen.
  • gemeinsame 0V-Referenz zwischen allen Knoten
Ich habe festgestellt, dass ein gemeinsames 0v für höhere Geschwindigkeiten sehr wichtig ist. In einem System, das wir hatten, reichte eine GND-Differenz von nur 0,3 V zwischen den angegebenen aus, um eine erhebliche Anzahl von Nachrichtenfehlern zu verursachen. Die Reduzierung dieses Unterschieds durch Hinzufügen dickerer Drähte reduzierte die Anzahl der Fehler.

Der CAN-Bus muss mit 120 Ohm terminiert werden.

Geben Sie hier die Bildbeschreibung ein

Ich verwende die Split-Terminierungsmethode mit einem niedrigen (10 nF) Keramikkondensator am Vref-Pin des letzten Geräts im Bus. Es ist Pin 5 auf dem MCP2551 .

Split-Terminierung mit Kondensator gegen Masse ist in Ordnung, aber das Anschließen dieses Kondensators an Vref des MCP2551 macht keinen Sinn. Sie suchen nach einer AC-Masse. Das ist bestenfalls eine Spannungsquelle und funktioniert genauso gut wie echte Masse, aber dieser Pin hat eine begrenzte Strombelastbarkeit und ist nicht dazu gedacht, Transienten zu absorbieren.
Sie verbinden die Mitte des Splits mit Vref und den Kondensator von der Mitte mit GND.
Ich habe den Vref-Pin unbeschaltet gelassen und eine Standardterminierung mit 120 Ohm Auflösung verwendet, konnte aber immer noch nicht zwischen den Platinen kommunizieren.