Forum: Mikrocontroller und Digitale Elektronik CAN-Bus Bitrate ermitteln/messen


von Jan W. (gaffel-k)


Lesenswert?

Hallo zusammen,

für ein neues Projekt muss ich an einem Kfz die Geschwindigkeit des 
Innenraum-CAN-Bus haben. Gibt es eine Möglichkeit das direkt auf den 
CAN_H und CAN_L Leitungen zu messen? Oder weiß zufällig jemand welche 
Bitrate Mercedes für den Low-Speed CAN Bus (CAN B) im Innenraum 
verwendet?

Eine weitere Frage wäre, ob es andere Low-Speed Transceiver für den 
Low-Speed (Fault Tolerant Bus) als den TJA1054 (bzw. 1053) gibt? Habe 
nur den bis jetzt gefunden.

Vielen dank schon mal

Jan

von dunno.. (Gast)


Lesenswert?

Jan W. schrieb:
> für ein neues Projekt muss ich an einem Kfz die Geschwindigkeit des
> Innenraum-CAN-Bus haben. Gibt es eine Möglichkeit das direkt auf den
> CAN_H und CAN_L Leitungen zu messen? Oder weiß zufällig jemand welche
> Bitrate Mercedes für den Low-Speed CAN Bus (CAN B) im Innenraum
> verwendet?

Try and Error wäre möglich.

Du könntest den Controller auf Listen only (Error Passive) einstellen, 
und eben die üblichen verdächtigen Bitraten durchgehen. Filter offen 
lassen, wenn du was kriegst, hast du die richtige Rate gefunden.

von Peter D (Gast)


Lesenswert?

Jan W. schrieb:
> für ein neues Projekt muss ich an einem Kfz die Geschwindigkeit des
> Innenraum-CAN-Bus haben. Gibt es eine Möglichkeit das direkt auf den
> CAN_H und CAN_L Leitungen zu messen? Oder weiß zufällig jemand welche
> Bitrate Mercedes für den Low-Speed CAN Bus (CAN B) im Innenraum
> verwendet?

125 kBit/s

Jan W. schrieb:
> Eine weitere Frage wäre, ob es andere Low-Speed Transceiver für den
> Low-Speed (Fault Tolerant Bus) als den TJA1054 (bzw. 1053) gibt? Habe
> nur den bis jetzt gefunden.

TJA1055
AMIS-41683
AMIS-41682
MAX3054
MAX3055
MAX3056
LT1796

(Dir ist schon klar, dass ein Fault Tolerant High-Speed Transceiver 
natürlich auch für Low-Speed geht oder ?)

von Jan W. (gaffel-k)


Lesenswert?

Ja das wäre möglich, Problem ist nur dass ich bis jetzt nur High-Speed 
Transceiver hier habe zum testen, die Kommunikation läuft auch 
wunderbar, also Hard und Software funktionieren (Einmal ein STM32 mit 
SN650VD.... als Sender und ein ATMEGA mit MCP2551/TJA1050 als Empfänger.

Oder kann ich mit dem Highspeed Transceiver am Lowspeed Bus hängen und 
mitlauschen? Da werden ja unterschiedliche Pegel für Dominant/Rezessiv 
verwendet.

von Jan W. (gaffel-k)


Lesenswert?

Peter D schrieb:
> (Dir ist schon klar, dass ein Fault Tolerant High-Speed Transceiver
> natürlich auch für Low-Speed geht oder ?)

Nein, aber vielen Dank für den hinweiß und die Bitrate.

Welche Fault-Tolerant HS Transceiver gibt es denn? Habe hier TJA1050 und 
SN65HVD230 hier, wobei der SN... ja ein 3V Typ ist.

Jan

von Jens E. (surfjenser)


Lesenswert?

Wenn du mit STM32 arbeitest, solltest du darauf achten, dass die 
Transceiver mit 3,3V Pegeln klar kommen. Z.B. TJA1055/3 und AMIS-41683 
sind dafür ausgelegt

von Jan W. (gaffel-k)


Lesenswert?

Ja weiß ich, der SN65.... ist ja ein 3V3 Typ, auf dem 
Steckbrett/Basteltisch läuft ja auch alles.


Jan W. schrieb:
> Peter D schrieb:
>> (Dir ist schon klar, dass ein Fault Tolerant High-Speed Transceiver
>> natürlich auch für Low-Speed geht oder ?)
>
> Nein, aber vielen Dank für den hinweiß und die Bitrate.

Und das obwohl HS und LS mit verschiedenen Pegeln arbeiten?

: Bearbeitet durch User
von mh (Gast)


Lesenswert?

Peter D schrieb:
> (Dir ist schon klar, dass ein Fault Tolerant High-Speed Transceiver
> natürlich auch für Low-Speed geht oder ?)

Bist Du Dir da sicher?
Wikipedia sagt z.B. "Die beiden gängigsten Realisierungen der 
physikalischen Schichten nach ISO 11898-2 (Highspeed-CAN) und ISO 
11898-3 (Lowspeed-CAN) unterscheiden sich außer in der Datenrate in 
weiteren Eigenschaften und sind deshalb nicht zueinander kompatibel."


Für die ursprügliche Frage nach der Geschwindigkeit: einfach mal mit dem 
Oszi nachmessen. Man sieht die Bits recht deutlich und kann dann die 
Länge vermessen. Nebenbei sieht man dann auch ob es wirklich ein 
Low-Speed CAN ist oder vielleicht doch ein langsamer High-Speed...

von npn (Gast)


Lesenswert?

mh schrieb:
> Für die ursprügliche Frage nach der Geschwindigkeit: einfach mal mit dem
> Oszi nachmessen. Man sieht die Bits recht deutlich und kann dann die
> Länge vermessen. Nebenbei sieht man dann auch ob es wirklich ein
> Low-Speed CAN ist oder vielleicht doch ein langsamer High-Speed...

Das wollte ich auch gerade sagen. Oszi ran und die kürzesten Pulse 
messen. Das ergibt dann die Bitrate.

von Rudolph R. (rudolph)


Lesenswert?

Peter D schrieb:
> (Dir ist schon klar, dass ein Fault Tolerant High-Speed Transceiver
> natürlich auch für Low-Speed geht oder ?)

Dir ist schon klar, dass der Unterschied zwischen LowSpeed / Fault 
Tolerant und High-Speed nicht nur in der Geschwindigkeit liegt?

von Jan W. (gaffel-k)


Lesenswert?

Bin mir wegen LS und HS auch nicht sicher, aber werde morgen einfach mit 
dem TJA1050 (HS Transc.) im Listen-Only-Modus lauschen. Bitrate soll ja 
125kbit/s sein.

Zur not habe ich erst am WE ein Oszi zur Hand

Danke aber schon mal

Jan

von Jan W. (gaffel-k)


Lesenswert?

So, habe eben mal mit den üblichen Bitraten (125,100,50,20 und 10 
kbit/s) im Liste-Only Modus am CAN-Bus gelauscht, aber es wurde nichts 
empfangen, rein gar nichts.

Habe mit dem STM32 mal verschiedene Standard und Extended Data Frames 
gesendet, die werden alle Empfangen, auch bei verschiedenen Bitraten, 
also Hard- und Software funktionieren. Auch verschiedenste IDs wurden 
empfangen.

Dann scheint also der Highspeed-Transceiver nicht mit dem Lowspeed-Bus 
zusammen spielen zu wollen. Schade, dann muss ich erst mal kaufen und 
basteln.

Oder kann es noch andere Gründen geben warum das nicht funktioniert? 
Wenn dann ja noch eine falsche Bitrate oder?


Jan

von ?!? (Gast)


Lesenswert?

Jan W. schrieb:
> Oder kann es noch andere Gründen geben warum das nicht funktioniert?
> Wenn dann ja noch eine falsche Bitrate oder?

Versuchs mal mit 83,33 kBit/s (kein Witz!). Die arbeiten mit krummen 
Bitraten, keine Standard-Geschwindigkeiten.
Müßtest du aber auch mit dem Oszi messen können.

von Jan W. (gaffel-k)


Lesenswert?

Nop, 83,33kbit/s geht auch nicht, aber komme bei dieser Bitrate auf eine 
Fehlerquote von 0,4%, aber müsste ja noch ok sein oder?

Werde am Wochenende mal mit nem Oszi messen.

Dann einfach den kürzesten Impuls nehmen und mit F=1/T die Frequenz 
errechnen und frequenz=bitrate? oder wie rechne ich das

Jan

von ?!? (Gast)


Lesenswert?

Jan W. schrieb:
> Nop, 83,33kbit/s geht auch nicht, aber komme bei dieser Bitrate
> auf eine
> Fehlerquote von 0,4%, aber müsste ja noch ok sein oder?
Ja.
>
> Werde am Wochenende mal mit nem Oszi messen.
>
> Dann einfach den kürzesten Impuls nehmen und mit F=1/T die Frequenz
> errechnen und frequenz=bitrate? oder wie rechne ich das
Genau so.
>
> Jan

von Jan W. (gaffel-k)


Lesenswert?

Danke dir.

Habe gerade mal ein wenig gegoogelt (keine ahnung warum ich das nicht 
vorher schon gemacht habe :-) ) aber 83,33kbit/s scheint die richtige zu 
sein.

Dann scheint wie gesagt der HS-Transceiver nicht mit dem LS-Bus zu 
laufen


jan

von Soul E. (Gast)


Lesenswert?

Nein, HS- und FT-CAN sind elektrisch nicht kompatibel. Zum Gucken kannst 
Du CAN_L über einen Spannungsteiler oder Schutzwiderstand direkt an 
CAN_RX Deines Controllers anschliessen. Da liegen bei High (rezessiv) ca 
5 V und bei low (dominant) 1-2 V an. Damit kommen die meisten 
CMOS-Eingänge klar. Für einen 3,3V-Controller muss das Ganze natürlich 
2/3 runtergeteilt werden.

Das Du mit dieser Lösung nicht in Serie gehst versteht sich von selbst 
;-)


TJA1054 könnte ich Dir zuschicken, die wollen aber VDD = 5 V sehen.

von mh (Gast)


Lesenswert?

Jan W. schrieb:
> Dann einfach den kürzesten Impuls nehmen und mit F=1/T die Frequenz
> errechnen und frequenz=bitrate? oder wie rechne ich das

Du meinst wahrscheinlich das Richtige. Allerdings ist hier T 
(Periodendauer) und Frequenz irreführend, da diese ja "ganze 
Schwingungen" betreffen...
Ein Bit ist dagegen ja nur ein "Pegel" des Signals und nicht eine 
Schwingung.

Such einfach die kürzeste Zeit zwischen zwei Flanken, der Kehrwert davon 
ist dann die Bitrate.

von Jan W. (gaffel-k)


Lesenswert?

soul e. schrieb:
> Das Du mit dieser Lösung nicht in Serie gehst versteht sich von selbst
> ;-)
>
> TJA1054 könnte ich Dir zuschicken, die wollen aber VDD = 5 V sehen.

Versteht sich von selbst  :-) aber zum testesn klingt das ja ganz gut, 
den TJA1054 gibt es ja nur in SOP-Package oder? Was willst denn haben? 
Versand? Zahlweise?

Mein System läuft eh mit 5V, reichen die 5V auch für Vbatt des TJA?



mh schrieb:
> Such einfach die kürzeste Zeit zwischen zwei Flanken, der Kehrwert davon
> ist dann die Bitrate.

Zwischen zwei gleichen Flanken? Also zwischen zwei steigenden z.b.?

von Soul E. (Gast)


Lesenswert?

Jan W. schrieb:

> Versteht sich von selbst  :-) aber zum testesn klingt das ja ganz gut,
> den TJA1054 gibt es ja nur in SOP-Package oder? Was willst denn haben?
> Versand? Zahlweise?

Richtig, den gibt es nur in SO-14. Geht notfalls auch auf Lochraster, 
wenn man jeden zweiten Pin hochbiegt und über Drähte anschliesst.

Mit aufgerundetem Porto bist Du dabei --> pn


> Mein System läuft eh mit 5V, reichen die 5V auch für Vbatt des TJA?

Sicher. So wie in Fig.7 im Datenblatt 
http://www.nxp.com/documents/data_sheet/TJA1054A.pdf . /STB und EN 
kannst Du fest auf High legen und /ERR erstmal ignorieren.

> Zwischen zwei gleichen Flanken? Also zwischen zwei steigenden z.b.?

Nein, zwischen zwei unterschiedlichen.

von Rudolph (Gast)


Lesenswert?

Vector hat da ein kostenloses E-Learning Seminar im Internet.

Da sieht man auch, dass die Bus-Pegel zwischen HS und LS ganz anders 
sind:

https://elearning.vector.com/index.php?&wbt_ls_seite_id=504216&root=376493&seite=vl_can_introduction_de

von Rainer (Gast)


Lesenswert?

Hallo,

die Bitrate per Oszi ausmessen geht recht einfach:
http://www.canhack.de/viewtopic.php?t=13#5111

Grüssle

von Jan W. (gaffel-k)


Lesenswert?

soul e. schrieb:
> Zum Gucken kannst
> Du CAN_L über einen Spannungsteiler oder Schutzwiderstand direkt an
> CAN_RX Deines Controllers anschliessen.

genau so habe ich es gemacht und erst mal vielen dank dafür, es 
funktioniert jetzt!

Kann jetzt schön auf dem Innenraum-can-bus lauschen, die Birate beträgt 
übrigens wie erwähnt 83,33kbit/s.
Und so wie es aussieht werden nur Standard-IDs verwendet.

Jetzt warte ich noch auf ein paar Bauteile und dann bastel ich mir 
Controller und LS-Transceiver zusammen.

Vielen dank noch mal an alle

Jan

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
Noch kein Account? Hier anmelden.