Hallo, bin gerade auf eine Frage gekommen, die hoffentlich jemand beantworten kann... Wenn der Treiber des TRX im hochohmigen Zustand (Senden eines rezessiven Bits) eine Spannungsdifferenz (durch ein dominantes Bit) erkennt, bricht dieser das Senden ab und das Senden der anderen Nachricht mit der höheren Priorität (dominanter Zustand) wird fortgesetzt. Ein angebundener CAN-Controller registriert dies und bricht seinerseits das Versenden (serieller Bitstrom) der Nachricht ab. Macht das wirklich der Treiber des TRX? Oder ergibt sich das Verhalten implizit durch die Beschaltung im Transceiver? Wenn der Transceiver eine 1 anlegt und es kommt trotzdem eine 0 auf dem bus raus (wenn jemand anderes 0 sendet), muss dann der Controller abbrechen? Herzlichen Dank für hilfreiche Antworten...
Ja, der Controller muss abbrechen, weil ein späteres dominantes Bit sonst den Datenframe ungewünscht verändert.
Hallo Akashi, Was einige Can-Transceiver machen ist, dass sie eine Störung des CAN-Bus durch langfristige dominante BUS-Level verhindern, in dem sie die maximale Zeit für ein LOW-Bit am BUS begrenzen. Dies bedeutet, wenn TX auf der Controler-Seite dauerhaft dominant ist, dass der Transmitter nach einer geweissen Zeit deaktiviert wird. Somit können aber unter Umständen immer noch Nachrichten am Bus zerstört werden, wenn auch später wieder eine Kommunikation zwischen ungestörten Teilnehmern möglich ist. Weiter können diese Transceiver dann auch verhindern, dass am BUS dominant gesendet wird, wenn der RX auf der Controler-Seite rezessiv gehalten wird. Denn der Can-Controller würde den BUS für frei halten, und somit den Datenverkehr der anderen stören. Ein Nachteil dabei: Minimale Bitrate bei TJA1040 z.B.: 40Kbit/s. Die Übertragung muss, wie Fabian schreibt, immer sofort beendet werden, wenn das aktuell am BUS anligende Bit nicht zum gesendeten passt. Ich bin nicht sicher, aber ich meine gelesen zu haben, dass diese sofortigen Abbrüche aber eben wirklich nur während der Arbitrierung gemacht werden. Im Falle der darauf folgenden Nutzdaten kann das also abweichen. Auch wichtig ist, dass alle aktiven Empfangs-Teilnehmer am BUS eine Nachricht mit ACK bestätigen, egal ob sie für den einzelnen zu gebrauchen war oder nicht. Ein einzelner BUS-Teilnehemer würde endlos senden, wenn nicht mindestens ein "Zuhörer" am Bus hängt der das ACK macht. Der Sender geht dabei auch nicht auf "ERROR BUS-OFF". MFG:MBP Markus.
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.