SJA1000: Pegel am TX-Ausgang

Gast #1927257
Lesenswert?

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
Angehängte Dateien:
Gast #1927461
Lesenswert?

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
Angehängte Dateien:
Gast #1927620
Lesenswert?

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
Angehängte Dateien:
Gast #1928183
Lesenswert?

> 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.
Gast #1928259
Lesenswert?

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..
Gast #1953787
Lesenswert?

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 ?
Gast #1953842
Lesenswert?

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.
Gast #1954862
Lesenswert?

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
Angehängte Dateien:
Gast #1955010
Lesenswert?

- 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...
Gast #1956395
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren