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)?
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.
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