Forum: Mikrocontroller und Digitale Elektronik CAN Fehlersuche


von Roland N. (eroli)


Lesenswert?

Hallo zusammen,

ich stoße mal wieder auf Probleme, bei deinen ich mich über eure Hilfe 
sehr freuen würde.
Mittlerweile läuft mein selbst gebautes CAN-Gateway eigentlich sehr gut. 
Der letzte Schritt, bis das Projekt für mich komplett abgegrast ist, ist 
es nun das Board für Single-Wire-CAN zu erweitern. Dazu habe ich beide 
CAN-Transceiver über einen Transistor in der GND-Leitung zuschaltbar 
gemacht.

Der neue Single-Wire-CAN Transceiver ist nun der MC33897, das Datenblatt 
findet ihr hier:
http://cache.freescale.com/files/analog/doc/data_sheet/MC33897.pdf

Es kommt immer noch der alte CAN-Controller MCP2515 zum Einsatz:
http://ww1.microchip.com/downloads/en/DeviceDoc/21801d.pdf

Leider habe ich im Moment keinen schönen Schaltplan, daher schildere ich 
euch die Schaltung mal in Textform:
Pin 1, 7, 8, 14 (GND): sind alle verbunden und verlaufen durch einen 
Transistor zu GND
Pin 2 (TXD): Direkt mit Pin 1 des MCP2515 (TXCAN) verbunden
Pin 3 (MODE0): Liegt an Vcc, also an 3,3V
Pin 4 (MODE1): Liegt an Vcc, also an 3,3V
Pin 5 (RXD): Laut Datenblatt über einen PullUp (16,2 kOhm) an Vcc 
verbunden und mit Pin 2 des MCP2515 (RXCAN) verbunden
Pin 6 (NC): nicht verbunden
Pin 9 (CNTL): nicht verbunden
Pin 10 (VBAT): mit Abgriff des Netzteils verbunden, liegt bei 8,4V
Pin 11 (LOAD): über 6,49kOhm mit Pin 12 (BUS) verbunden
Pin 12 (BUS): geht zur CAN-Buchse, verbunden mit CANH (Pin 7 im 
SUB-D9-Buchse)
Pin 13 (NC): nicht verbunden

Alle Masseverbindungen des Transceivers sind mit einander verbunden und 
verlaufen dann zum Transistor (BC 337-40) und zwar zum Pin 1, dem 
Kollektor. Pin 3, der Emitter, geht dann zurück zur wirklichen Masse. 
Pin 2, die Basis, ist über einen Vorwiderstand (2kOhm) mit dem Pin des 
Mikrocontrollers verbunden.
Die Schaltung ist aus dem Artikel: 
http://www.mikrocontroller.net/articles/Transistor
(siehe Emitterschaltung bzw. 'Wohin mit der Last?' (FAQ))

An der Kollektor-Emitter-Strecke des Transistor kann ich verschiedene 
Spannungen messen:
1. Beide Transceiver aus: 3,6V
2. Nur CAN an: 2,8V
3. Nur SWCAN an: 0V
Die Differenz zwischen Punkt 1 und 2 verwundert mich an dieser Stelle 
ehrlich gesagt ein wenig...

Kann ich so den SW-CAN-Transceiver, welcher mit 8,4V betrieben wird (ist 
innerhalb der Spezifikationen) zuverlässig an und aus schalten? Fällt 
euch bei der Verkabelung des Transceivers vielleicht etwas auf?

von Rudolph (Gast)


Lesenswert?

Roland M. schrieb:
> Dazu habe ich beide CAN-Transceiver über einen Transistor in der GND-Leitung 
zuschaltbar gemacht.

Da wäre ich sehr skeptisch, ob das so funktionieren kann.
Die werden sich über die interne Schutz-Beschaltung dann irgendwoher ein 
Bezugs-Potential suchen und irgendwas machen.
Auch ein abschalten von VCC hilft nicht, dann versorgt sich der Chip 
über die Signale.

Sauber ist da nur wenn der Chip einen Enable Pin hat mit dem sich seine 
Ausgänge hochohmig schalten lassen, der Chip in einem definierten 
Betriebszustand abgeschaltet wird.

Ich kenne eine Kombination von LowSpeed und HighSpeed CAN in zwei 
Versionen.
- man bestückt jeweils nur einen Teil
- man bestückt auf der Bus-Seite nur jeweils eine von zwei Drosseln und 
die Abschluss-Widerstände oder nicht, auf der Logik-Seite führt man 
mindestens die RXD Pins über einen Schalter, bei Bedarf auch mehr 
Ausgänge.

Und Single-Wire-CAN? Konnten das nicht die normalen LowSpeed Transceiver 
auch? Also sowas wie ein TJA1054 / TJA1055.
Aber LowSpeed ist ohnehin ziemlich tot.

von Hans (Gast)


Lesenswert?

Der Chip hat doch die beiden MODE-Eingänge. Wenn beide auf Masse liegen, 
so geht der Transceiver in einen sleep Modus. Was hälst du davon diese 
zu benutzen?

von Roland N. (eroli)


Lesenswert?

Hallo zusammen,

vielen Dank für den Hinweis zur Zuschaltbarkeit als Fehlerquelle. Ich 
habe die Schaltung nun nochmals modifiziert, damit ich diese potentielle 
Fehlerquelle ausschließen kann.

Dazu habe ich als erstes den alten Transceiver sowohl von der 
CAN-Buchse, als auch vom CAN-Controller abgelötet. Außerdem habe ich den 
Transistor in der GND-Leitung des neuen Transceivers entfernt und eine 
permanente Verbindung eingebaut.

Somit betreibe ich nun ein Board, welches aus dem MCP2515 als 
CAN-Controller und dem MC33897 als SW-CAN-Transceiver besteht. Leider 
hat sich das Fehlerverhalten nicht geändert und ich bin weiterhin nicht 
in der Lage mittels dieses Receivers CAN-Nachrichten zu empfangen...
(Wurde mittels einer SW-CAN-Hardware mit PC-Interface getestet)

Habt ihr vielleicht noch neue Ideen, wie ich dem Problem auf die 
Schliche kommen kann?

von Roland N. (eroli)


Lesenswert?

Hallo zusammen,

ich glaube ich bin mittlerweile wieder einen kleinen Schritt weiter. Der 
Transceiver versorgt den Controller mit sinnvollen Pegeln auf der RXD 
Leitung. Auch auf der TXD Leitung sehe ich immer mal wieder einen kurzen 
Pegel, obgleich mein Board nur Nachrichten mitliest. Ich denke mal das 
ist ein ACK oder so...

Allerdings wird bei mir nach kurzer Zeit im CANINTF das ERRIF Flag 
gesetzt. Wenn ich dann das EFLG Register auslese, sehe ich das folgende 
Bits gesetzt sind:
Bit 0: EWARN (TEC or REC >= 96)
Bit 1: RXWAR (REC >= 96)
Bit 3: RXEP Receive Error-Passive Flag (REC >= 128)

Wie kann das sein? Liegt das eventuell an einer falsch eingestellten 
Baudrate?

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.