Forum: Mikrocontroller und Digitale Elektronik SJA1000: Pegel am TX-Ausgang


von Tilman (Gast)


Angehängte Dateien:

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

von Tilman (Gast)


Angehängte Dateien:

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

von Tilman (Gast)


Angehängte Dateien:

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

von eProfi (Gast)


Lesenswert?

Schwingt der Quarz?
Kannst Du Register auslesen?
Sind wirklich alle Vss / Vdd richtig angeschlossen (nachmessen)?

von Tilman (Gast)


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.

von Peter D. (peda)


Lesenswert?

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

von Tilman (Gast)


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

von Tilman (Gast)


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 ?

von Tilman (Gast)


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.

von Michael X. (Firma: vyuxc) (der-michl)


Lesenswert?

Tilman schrieb:
> Über Output-Control-Register habe ich beide Transitoren aktiviert
> (Push-Pull-Betrieb):

Warum Push-Pull? In deiner Schaltung brauchst du Open Drain.

von Tilman (Gast)


Angehängte Dateien:

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

von Tilman (Gast)


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

von Tilman (Gast)


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

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.