Ist es für den CAN-Bus in Ordnung, CANH- und CANL-Leitungen auszutauschen?

7

Ähnlich wie bei Frage Ist es in einem USB-Kabel in Ordnung, die D + - und D- -Drähte auszutauschen? Ist es in Ordnung, wenn wir CAN-H- und CAN-L-Leitungen miteinander verbinden?

CAN ist ein differenzielles Protokoll. Ist es so, dass dominante und rezessive Bits nichts anderes als Spannungsunterschiede auf diesen Leitungen sind?

Informationen über andere differenzielle Protokolle wären ebenfalls nützlich.

Swanand
quelle
Ich denke, es würde zwei Unterschiede geben: H / L-Prioritätswechsel, und die Daten werden bitweise invertiert. Aber ich weiß nicht genug über CAN, um sicher zu antworten.
Travisbartley
1
Nr. Nr. @ Trav1s Nr. Beachten Sie, dass die Spannungsdifferenz eine bestimmte Polarität hat und dass rezessiv bedeutet, dass keine Spannungsdifferenz vorliegt.
Starblue

Antworten:

12

Ich konnte keine Referenz finden, die eine endgültige Antwort gab. Aber wenn ich mir ein paar Datenblätter ansehe, denke ich nicht. USB schaut auf das Vorhandensein oder Fehlen einer Änderung der Spannung. Während CANBus die Spannung selbst betrachtet.

Hier ist ein Beispiel für eine USB-Übertragung:

USB NRZ

Die Einsen und Nullen werden abhängig davon codiert, ob es einen Übergang gibt oder nicht.

Im Gegensatz zu CANBus, bei dem der Unterschied in den Spannungspegeln wie in diesem App-Hinweis dargestellt wird :

CANBus-Differential

Wenn wir uns ein Datenblatt für einen CANBus-Transceiver ansehen, zum Beispiel den MCP2551 , sehen wir etwas in der Art von:

  Sym                  Characteristic                   Min     Max  Units
VDIFF(r)(i)    Recessive differential input voltage    -1.0    +0.5    V
VDIFF(d)(i)    Dominant differential input voltage      0.9     5.0    V

Da eine negative Spannung erwähnt wird, glaube ich, dass die Polarität wichtig ist und sie nicht den absoluten Wert der Differenzspannung annehmen.

Also wenn wir haben:

C.EINN.H.=2.5V.
C.EINN.L.=2.5V.

Normalerweise würde der Transceiver Folgendes tun:

C.EINN.H.- -C.EINN.L.=2.5V.- -2.5V.=0.0V.=R.ecessichve

Wenn Sie die Zeilen vertauschen würden, würde dies Folgendes bewirken:

C.EINN.L.- -C.EINN.H.=2.5V.- -2.5V.=0.0V.=R.ecessichve

So weit, ist es gut. Das Problem kommt, wenn wir haben:

C.EINN.H.=3.5V.
C.EINN.L.=1.5V.

Hier würde der Transceiver normalerweise Folgendes tun:

C.EINN.H.- -C.EINN.L.=3.5V.- -1.5V.=2.0V.=D.Ömichneinnt

Wenn Sie die Zeilen vertauschen würden, würde dies Folgendes bewirken:

C.EINN.L.- -C.EINN.H.=1.5V.- -3.5V.=- -2.0V.=R.ecessichve(Öut Öf spec)

Sie als Empfänger würden also nur rezessive Bits sehen.

embedded.kyle
quelle
3
Aah ... Interessant .... und und und 7 aufeinanderfolgende rezessive Bits sind nichts anderes als Fehlerbedingung ... Wie intelligente Spezifikationsdesigner sind! :)
Swanand
Zweifel: Warum wird -2V als rezessiv angesehen?
Swanand
Zweifel
Peter Mortensen
1
@Swanand Das Datenblatt für diesen bestimmten Chip besagt, dass Spannungen zwischen -1,0 V und + 0,5 V rezessiv sind. Wie oben erwähnt, wird der Chip wahrscheinlich eine Spannung von -2,0 V als rezessives Bit sehen, obwohl sie außerhalb der Spezifikation liegt. Obwohl der Wert technisch genau wie eine Spannung von 0,7 V (zwischen rezessiv und dominant) unbestimmt ist, könnte es auch einer sein. Das Bedienen von Elektronik außerhalb der Spezifikation ist Schrödingers Katze, daher ist es am besten, dies nicht zu tun, wenn Sie keine Kopfschmerzen wünschen.
embedded.kyle
1
@Swanand - 7 rezessive Bits sind keine Fehlerbedingung, sie treten ständig auf einem Leerlaufbus auf. Und der Fehlerrahmen wird durch dominante Bits angezeigt.
Martin Thompson
2

Das Vertauschen von CAN-High- und CAN-Low-Leitungen funktioniert nicht. Dies ist leicht empirisch festzustellen. Ich und meine Mitarbeiter tauschen manchmal versehentlich die Leitungen aus, und es ist sofort ersichtlich, dass es nicht funktioniert.

Peter Mortensen
quelle
Die Antwort von @ embedded.kyle erklärt, warum dies passiert.
Swanand
1

Alles hängt vom Transciver-Modell ab. Sie sind eine gewisse Flexibilität in Bezug auf den Wert von CAN_H und CAN_L, aber ich denke, dass der Wert von CAN_H auf jeden Fall höher sein muss (zumindest für alle Modelle, die ich gesehen habe).

Wenn Sie nur den Kabelstift wechseln, sollte es funktionieren, sobald alle CAN_L miteinander und auch mit dem CAN_H verbunden sind.

WhiteV
quelle