Was bedeutet diese CAN-Bus-Wellenform?

7

Ich versuche, die ECAN-Funktionalität auf einem dsPIC33 zum Laufen zu bringen. Ich habe zwei identische dsPIC33s mit jeweils identischen CAN-Transceivern, die über einen kurzen Bus (3 Zoll) verbunden sind. Man sendet, man empfängt. Ich sehe jedoch keine Nachrichten, sondern nur eine sich wiederholende Wellenform mit einer Periode von 34,5us. Schlägt dies eine bestimmte Fehlerbedingung auf einem CAN-Bus vor?

Logikanalysator auf TX & RX

Raketenmagnet
quelle
Könnten Sie Ihrer Frage die Bit-Timing-Parameter hinzufügen, insbesondere die beabsichtigte Baudrate? Sie sollten auch beachten, dass es keine Leitung mit der Bezeichnung "CAN RX" oder "CAN TX" gibt. So funktioniert CAN nicht: CAN verfügt über ein Leitungspaar, das von allen Knoten auf dem Bus gemeinsam genutzt wird, um auf das Medium zuzugreifen wird durch das Schiedsverfahren ausgehandelt.
0x6d64
1
Am Transceiver befinden sich Leitungen mit den Namen CAN TX und CAN RX. Entschuldigung, ich hätte das erwähnen sollen, aber ich nahm an, dass es offensichtlich wäre.
Raketenmagnet

Antworten:

10

Es stellte sich heraus, dass die Antwort aus den obigen Wellenformen ersichtlich sein sollte.

Wenn TX niedrig wird, wird auch RX niedrig. Aber wenn TX hoch geht, braucht RX mehr als 1us, um wieder zu steigen. Das ist mehr als eine ganze Weile! CAN kann unter diesen Bedingungen nicht arbeiten.

Der Grund, warum RX hinter TX zurückbleibt, wäre mit einem geeigneten Oszilloskop und nicht mit einem einfachen Logikanalysator offensichtlich gewesen. Da der Bus so kurz war, habe ich mir nicht die Mühe gemacht, die Abschlusswiderstände hinzuzufügen, da ich nicht dachte, dass Reflexionen ein Problem darstellen würden. Die Widerstände sind aber auch wichtig, um die geringe Kapazität des But zu entladen, damit es schnell genug von dominant zu rezessiv übergehen kann.

Durch das Löten der Widerstände werden auf magische Weise ganze CAN-Meldungen angezeigt.

Raketenmagnet
quelle
Das war mein Vorschlag :)
Martin Thompson
Ich hätte es wirklich besser wissen sollen. Ich benutze CAN-Busse erst seit 10 Jahren.
Raketenmagnet
4

An den Abschlusswiderständen ist nichts Magisches. Sie sind für einen CAN-Bus unbedingt erforderlich. Sie können als "Abschlusswiderstände" bezeichnet werden, und dies ist in der Tat Teil ihrer Funktion, wenn der Bus lang genug ist, um eine Übertragungsleitung zu sein. Sie bewirken jedoch auch, dass ein entladener Bus in den rezessiven Zustand übergeht. Dies ist eine grundlegende Annahme, auf der das CAN-Protokoll basiert.

Stellen Sie sich CAN als einen passiv hochgezogenen Open-Collector-Bus vor, außer dass er (normalerweise) als Differenzpaar implementiert ist. Die Abschlusswiderstände terminieren nicht nur die Übertragungsleitung, sondern wirken auch als Pullup-Widerstand. In der differentiellen CAN-Implementierung sind sie wirklich Pull-Together-Widerstände, haben aber logischerweise die gleiche Funktion wie Pullup auf einem Single-Ended-Open-Collector-Bus.

Beachten Sie, dass der CAN-Standard den tatsächlichen physischen Bus nicht spezifiziert. Für kurze Strecken auf derselben Karte mit den richtigen Bitraten können Sie can als Single-Ended Passiv Pulled Bus implementieren. Wenn Sie nichts Besonderes tun, ist die Verwendung von zwei CAN-Transceiver-Chips, um zwischen nur zwei Knoten mit einem Abstand von 3 Zoll auf derselben Platine zu wechseln, ein grober Overkill und eine Verschwendung von Geld, Leistung, Platz und Teilen.

Olin Lathrop
quelle
Der 3 "Bus war nur zum Testen. Es wird länger dauern, wenn die PICs funktionieren.
Rocketmagnet