Hallo ich beobachte ein merkwürdiges Verhalten an Tx-Ausgang des SJA1000: - Ohne den Optokoppler U$2 ist der Pegel 0V bzw. 5 V -- wie erwartet - Mit dem Optokoppler ist der Pegel 4V bzw. 5V. Über Output-Control-Register habe ich beide Transitoren aktiviert (Push-Pull-Betrieb): #define OUTPUT_CONTROL_SETUP 0x1a Ist der Vorwiderstand zu gross ? Was kann die Ursache für den geringen Spannungshub ? Die Schaltung und die Bauteílwerte sind eine Standartschaltung, die ich aus dem Netz habe... Danke Tilman
Hallo Ich habe den SJA 1000 entfernt, und dann an der TX0-Leitung gemessen: 4Volt. Scheint mir plausibel: Durch das Messen ensteht ein kleiner Strom, der zu einem Spannungsabfall in der im Optokoppler eingebauten Diode führt (siehe Anhang). Kann das bedeuten, dass die Ausgangsstufe nach Masse des SJA1000 nicht richtig durchschaltet ? (Ich habe ein Diagramm der Ausgangstufe angehängt) Danke Tilman
Hallo Ich habe den Optokoppler sperat auf eine Steckboard aufgebaut. a) Ich habe wiederum etwa 4 Volt an der offenen Kathode der Optokopter-LED gemessen. Das stimmt mit der vorherigen Messung (SJA1000+6N137) überein. b) Wenn ich dann über den Widerstand R1 eine Verbindung nach Masse herstelle, messe ich nur noch circa 3 Volt an der Kathode. Der Spannungsabfall über der Diode ist genug, um den Optokoppler durchzuschalten (Im Gegensatz zur vorherigen Messung SJA1000+6N137. Da waren es 4 Volt) Kann ich daraus schliessen, dass der Innenwiderstand des SJA1000 einfach zu gross ist ? Kann es sich um ein Konfigurationsproblem des SJA1000 handeln ? Nach meinem Dafürhalten habe ich das Output-Control-Register mit Push-Pull-Betrieb richtig gesetzt. Dafür spricht auch, dass die Spannung am TX0-Ausgang des SJA1000 ohne externe Beschaltung (d.h. ohne den Optokoppler 6N137) die Werte 0 Volt bzw 5 Volt annimmt. Die Schaltung für die galvanische Trennung stammt aus dem Datenblatt des PCA82C250 (www.nxp.com/documents/data_sheet/PCA82C250.pdf Bild 10 -- ich habe es ausgeschnitten und an das Posting angehängt) Viele Grüsse Tilman
Schwingt der Quarz? Kannst Du Register auslesen? Sind wirklich alle Vss / Vdd richtig angeschlossen (nachmessen)?
> Schwingt der Quarz? Kannst Du Register auslesen? > Sind wirklich alle Vss / Vdd richtig angeschlossen (nachmessen)? Ich habe den Quarz und die Betriebsspannungen am SJA1000 nicht nachgemessen, da da ich die Register auslesen und beschreiben kann :-) Ich denke daher, dass diese in Ordnung sind. - Die Schreiblese-Zyklen sind konsistent, d.h. die ausgelesenen Daten entsprechen den geschriebenen. - Auch das Umschalten in den PelicanMode scheint zu funktionieren (das legen jedenfalls die ausgelesenen Daten nahe) Wenn ich den 6N137 entferne und eine CAN-Message zum Senden absetze, sehe ich einen Signalwechsel 0 auf 5 Volt auf TX0 (Vermutlich der Beginn einer Arbitrierung). Mit eingesetzem 6N137 ist der Signalwechsel von 4 Volt auf 5 Volt. Der Spannungsabfall von circa 1 Volt über der LED des Optkoppler reicht offenbar nicht aus, um diese zum Leuchten zu bringen. Die Betriebsspannung am 6N137 habe ich übrigens gemessen. Sie hat die nominellen 5 Volt.
0x1A sollte stimmen. Das Fehlerbild deutet darauf hin, daß Du Pin 15 (VSS3) nicht angeschlossen hast. Du mußt alle VCC/GND Pins anschließen! Peter
Gute Idee. Jedoch: Pin 15 und die anderen Massen sind angeschlossen. Der gemessene Widerstand zwischen Pin 15 und einem Referenzpunkt beträgt 0.4 Ohm (vermutlich ist er noch niedriger, da mein Voltmeter im niedrigen Bereich nicht sehr genau ist..
Hallo ich habe den CAN controller ausgetauscht. Gleiches Verhalten. Ausserdem habe ich die Idee von Peter nochmal aufgegriffen, und die Lötstellen am Sockel des SJA1000 nochmal erwärmt. Das wären nicht die ersten kalten Lötstellen gewesen. Desweiteren habe ich auf einen möglichen Masseversatz gemessen ( Spannung zwischen Pin 15 des SJA1000 und der Systemmasse beim Senden einer CAN-Message ). Den gibt es leider nicht. Gegen die eine Masse, die nicht verbunden ist, spricht auch die Tatsache, dass bei Entfernen des 6N137 die Spannung beim Senden einer Message zwischen 0 und 5 Volt wechselt (wie gesagt, mit 6N137 wechselt die Spannung zwischen 4 und 5 Volt) Tja, ich bin etwas ratlos, was ich noch machen kann. Ist die Dimensionierung der galvanischen Trennung fehlerhaft ? Oder verhalten sich die 6N137 verschiedener Hersteller unterschiedlich ?
Ich habe nun auf beiden Seiten von R1 bei inaktiven Bus gemessen: An beiden Enden sind es 4 Volt gegen Masse. Es fliesst also kein Strom durch den Widerstand über die Ausgangsstufe nach Masse (abgesehen vom einem kleinen Strom, der beim Messen über das Oszi fliesst). Entweder besteht also keine Masseverbindung über die Ausgangsstufe vom SJA1000, oder aber der Stromfluss ist sehr gering, so dass der Spannungsabfall über R1 sehr klein ist.
Tilman schrieb: > Über Output-Control-Register habe ich beide Transitoren aktiviert > (Push-Pull-Betrieb): Warum Push-Pull? In deiner Schaltung brauchst du Open Drain.
Ich habe es als PullDown probiert (OCR=0x0a). TXD floatet dann nur. Erst bei setzen des Polarität-bits (OCR=0x0e) tut sich was am Bus. Leider kommt es nun zu Kollission am Bus und es werden keine Messages übertragen. Ich habe Tabelle 48 aus dem Datenblatt des SJA1000 angehängt, das die Konfigrationen zeigt. Ganz schlüssig ist es nicht: Was bedeutet TxD ? Ist das ein logisches Signal (0=recessiv;1=dominant zum Beispiel) ? Oder ein physikalisches (1=5V;0=GND) ? Danke Tilman
- Habe mir das Blockschaltbild nochmal angesehen (am 7.11. gepostet). TxD ist damit der Eingang in die Ausgangstufe. Gemäss Note 4 der gestern geposteten Tabelle bedeutet TxD=0 dominant, und TxD=1 rezessiv. Verwunderlich bleibt, dass der PullDown ohne gesetztes Polarity-Bit (OCR=0x0a) nicht funktionierte. Ich habe einen Fehler im Rx-Zweig gefunden, der dem SJA1000 immer ein rezessives Signal zurückliest (Rx0 ist immer grösser als Rx1 -- siehe auch Bild im ersten Posting). Vielleicht ist das beobachtete Verhalten eine Folge der Rückmessung des Buszustands. Ich behebe es, und probiere es nochmal...
So, nun habe ich den Rx-Zweig korrigiert. Und nun messe ich mit OCR=0x0a einen LOW-Pegel für ein dominantes Symbol, und float (circa 4V) bei einem rezessiven Symbol. Messages übertragen funktioniert zwar noch nicht -- das dürfte vor allem am Treiber liegen. Erstmal ein Dankeschön an alle, die mich untersützt haben. Tilman
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.