Forum: Mikrocontroller und Digitale Elektronik Test CAN Transceiver


von Bruno K. (Gast)


Lesenswert?

Hi Leute,

ich bin gerade dabei mein CAN-Transceiver zu testen (TJA1054).
Ich hab mir zuerst überlegt, auf den TXD-Eingang mit einem 
Labornetzgerät verschiedene Pegel (5V bzw. 0V) zu geben.
Langsam bekomme ich aber das Gefühl, dass es so einfach nicht geht. An 
CANH und CANL ergibt sich nämlich kein Unterschied, egal was an TXD 
anliegt.
Mache ich was falsch oder funktioniert das grundsätzlich nicht?

Mit freundlichen Grüßen
B0bbyR4y

von Michael (Gast)


Lesenswert?

Klaro. Müsste prinzipiell so gehen.
Folgende Details beachten:
- Terminierung vorhanden?
- Hat der Transceiver eine DTO Funktion? Dann ändert sich der
Pegel ggf. nur kurz
- Was Du am TXD Eingang anlegst, kannst "spiegelt" der Transceiver an 
einem RXD Ausgang zurück.

Hoffe, das hilft Dir schonmal.

Viele Grüße,
Michael

von Soul E. (Gast)


Lesenswert?

Bruno Kempf schrieb:

> Ich hab mir zuerst überlegt, auf den TXD-Eingang mit einem
> Labornetzgerät verschiedene Pegel (5V bzw. 0V) zu geben.

Das funktioniert nicht, der Transceiver schaltet bei zu langen Lowpegeln 
ab. Gib mit dem Frequenzgenerator 100 kHz drauf.

Und vergiss die Terminierung nicht, sonst ist der rezessive Pegel 
("high" am Bus) daneben.

von Bruno K. (Gast)


Lesenswert?

Hi Michael,
die Terminierung habe ich drin, das Problem ist, dass ich sehen will was 
auf den Busleitung (CANH und CANL) rauskommt. Der RXD ist mir (erstmal) 
egal.

@ Soul Eye
Okay... das hab ich mir schon gedacht :-/ leider habe ich gerade keinen 
Funktionsgenerator. Gibt es da keine andere Möglichkeit?

von Klaus W. (mfgkw)


Lesenswert?

Bruno Kempf schrieb:
> Das Problem ist, dass ich gerade keinen Funktionsgenerator

Kein µC greifbar, der in einer Endlosschleife einen Pin an- und 
abschaltet?

von Bruno K. (Gast)


Lesenswert?

Hi Klaus,
nein leider nicht. So weit bin ich noch nicht, dass ich paar µC 
rumliegen habe. Kommt noch ;-)

Danke für die Antworten. Sobald der µC für mein Board da ist, werde ich 
diesen verwenden, um zu testen.

von Rudolph (Gast)


Lesenswert?

Poste doch einfach mal die Schaltung um Deinen Low-Speed Transceiver 
herum.
Der TJA1054 an sich funktioniert ja, nur richtig benutzen muss man den 
auch.

von Bruno K. (Gast)


Angehängte Dateien:

Lesenswert?

Hi Rudolph,
im Anhang ist der Schaltplan zu meinem Testaufbau. An VCC hängen noch 
10µF nach Masse, die ich im Schaltplan vergessen habe.
/ERR und /WAKE sind offen.
Der INH-Pin funktioniert einwandfrei. Falls EN=1 und /STB=0 (Go-to-Sleep 
Mode) geht INH auf 0V und der Schaltregler schaltet sich aus.
Nachdem ich die verschiedenen Stromsparmodi getestet hatte, wollte ich 
sehen was auf CANH/CANL rauskommt, wenn ich auf RXD einen High-Pegel 
(5V) oder Low-Pegel (0V) gebe. Und da liegt das Problem. Egal ob an TXD 
5V oder 0V liegen, am Pegel von CANH und CANL ändert sich nichts!

von Rudolph (Gast)


Lesenswert?

Also WAKE würde ich eher nicht offen lassen, fest auf VBAT wenn die 
Funktion nicht genutzt wird.
Die Widerstände an RTL und RTH müssen mindestens 500 Ohm haben, nimm mal 
4k7 oder so.

Für STB und EN machen sich Pulldown Widerstände eigentlich gut, im Reset 
gehen die Pins vom Controller ja normalerweise auf Tristate.
Wenn IHN benutzt wird sowieso.

Und wie schon oben beschrieben, das Signal muss zappeln.
Im Datenblatt steht die tdet - failure detection time, je nach Fehler 
sind das minimal 0,1ms bis maximal 8ms.

Aber das würde ich so eh nicht testen, man kann schon erwarten, dass der 
Chip an sich das macht was im Datenblatt steht. :-)
Oft tun die das auch. :-)

Nur, wo wird überhaupt noch LowSpeed CAN eingesetzt?

von Max G. (l0wside) Benutzerseite


Lesenswert?

Rudolph schrieb:
> Also WAKE würde ich eher nicht offen lassen, fest auf VBAT wenn die
> Funktion nicht genutzt wird.

Ohne ins Datenblatt geschaut zu haben: ist WAKE nicht ein Ausgang?

Max

von Rudolph (Gast)


Lesenswert?

Max G. schrieb:
> Ohne ins Datenblatt geschaut zu haben: ist WAKE nicht ein Ausgang?

Nein, WAKE ist der Eingang mit dem man den Transceiver durch lokale 
Ereignisse wach machen kann.
INH ist der dazugehörige Ausgang.

Bei IHN ist noch zu beachten, dass das keine Push-Pull Stufe ist, da 
braucht man noch ein Pulldown wenn dieser nicht im Spannungsregler 
enthalten ist.

von Bruno K. (Gast)


Lesenswert?

Hi Rudolph,

danke für die Antwort!
Ja ich bezweifle es auch nicht das die funktionieren :-)
Wollte mir CANH und CANL nur mal "kurz" auf dem Oszi angucken. Aber das 
mit kurz war wohl nichts.
Ich will über I/O-Pins vom Mikrocontroller die Botschaft, die vom 
CAN-Controller gesendet wird, manipulieren. Mal das Verhalten der CANH 
und CANL zu betrachten, wenn ein HIGH oder ein LOW Pegel an RXD anliegt, 
wäre interessant gewesen.
Aber des wird so auch klappen.

Danke nochmal für die Hilfe!

von Bruno K. (Gast)


Lesenswert?

Für den INH-Pin hab ich schon ein Beschaltung vorgesehen, da (wie du dir 
gedacht hast) kein Pull-Down im Schaltregler integriert ist.
Funktioniert soweit alles. Wenn ich in den Sleep-Modus bzw. Go-to-Sleep 
Modus wechsle schaltet sich der Schaltregler aus und sobald ich an WAKE 
12V anlege wacht er wieder auf und der Schaltregler wird auch wieder 
aktiviert.

von Rudolph (Gast)


Lesenswert?

Bruno Kempf schrieb:
> Mal das Verhalten der CANH
> und CANL zu betrachten, wenn ein HIGH oder ein LOW Pegel an RXD anliegt,
> wäre interessant gewesen.

Gibt es doch genug Bilder vom. :-)
Zum Beispiel das hier:
rtsys.informatik.uni-kiel.de/svn/teaching/sem/06ws-rt/lwi/shared/picture 
s/can-lowspeed.jpg

von Rudolph (Gast)


Lesenswert?


von Bruno K. (Gast)


Lesenswert?

Ja das Bild kommt mir bekannt vor :-)
Also kann ich davon ausgehen, dass ein HIGH Pegel an RXD in ein 
rezessives Bit (entspricht ja einer 1) und ein LOW Pegel in ein 
dominantes Bit umgesetzt wird? Ohne irgendwelche zusätzliche Aktionen, 
die im Controller oder Transceiver ablaufen?
Davon gehe ich zumindest aus. Bin aber ein bisschen verunsichert worden, 
weshalb ich mir das ganze nochmal ansehen wollte.

Die Frage hätte ich gleich stellen sollen -.-

von Rudolph (Gast)


Lesenswert?

Bruno Kempf schrieb:
> Also kann ich davon ausgehen, dass ein HIGH Pegel an RXD in ein
> rezessives Bit...

Wenn das Bild stimmt. :-)
Da man weder einen Einfluss darauf hat was der Transceiver macht, noch 
wie der Controller die CAN-Botschaft Bit-für-Bit zusammen baut, hat mich 
die physikalische Seite nur ganz am Anfang mal am Rande interessiert. 
:-)

LowSpeed ist ja auch quasi tot, damit gibt es ja erstmal nur noch eine 
physikalische CAN-Schnittstelle.

von Soul E. (Gast)


Lesenswert?

Bruno Kempf schrieb:

> Also kann ich davon ausgehen, dass ein HIGH Pegel an RXD in ein
> rezessives Bit (entspricht ja einer 1) und ein LOW Pegel in ein
> dominantes Bit umgesetzt wird? Ohne irgendwelche zusätzliche Aktionen,
> die im Controller oder Transceiver ablaufen?

Low ist dominant, das ist richtig. "TxD" bezieht sich auf den 
Controller, d.h. das ist der Eingang zum Senden, der mit dem 
gleichnamigen Ausgang des Controllers verbunden wird. Da beim Layout 
trotzdem gerne Unfälle passieren, sehen Profis zwei Null- bis 100 
Ohm-Widerstände vor, die dann kurz vor Serie entfallen können.

Der Transceiver setzt nur die Spannung um und tut nichts am Timing. Es 
gibt allerdings ein paar Schutzfunktionen, die dazu führen, dass er bei 
arg unplausiblen Signalen abschaltet. Bitstuffing, Message Filter, 
Acknowledge etc macht alles der CAN-Controller im Microcontroller, und 
zwar für Dich transparent. D.h. wenn der richtig eingestellt ist, 
brauchst Du Dich um nichts zu kümmern. Die SW schreibt ihre Bytes in die 
Mailbox und die Message geht raus, bzw wenn eine zum Filter passende 
reinkommt, wird die in der Mailbox abgelegt und ein Interrupt ausgelöst.


Lowspeed-Can ist in der Tat selten geworden. Er hat aber den Vorteil, 
dass er auch mit einer durchgescheuerten Leitung noch funktioniert und 
man mit der Terminierung nochmehr Blödsinn anstellen kann, bevor die 
Bitfehlerrate signifikant ansteigt.

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.