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?
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.
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?
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.