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
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
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.
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?
Bruno Kempf schrieb: > Das Problem ist, dass ich gerade keinen Funktionsgenerator Kein µC greifbar, der in einer Endlosschleife einen Pin an- und abschaltet?
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.
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.
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!
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?
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
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.
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!
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.
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
Irgendwie klappt das mit dem Link ja nicht richtig, 2. Versuch anderes Bild. :-) http://www.tiny-labs.com/_/rsrc/1341410108926/thesis-log/week-05---problems-with-customs-still-soldering-and-some-paper-work/_figure_CAN-Pegel_eng.PNG
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 -.-
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.