Hallo zusammen, nach einigen Tagen weiß ich nicht mehr weiter und bitte um Hilfe. Ich habe folgendes CAN-Bus-Minimalsystem aufgebaut: Node A (Sender): Arduino Nano und MCP2515-Modul. Node B (Empfänger): ESP32 DevKitC und SN65HV230-Modul Beide Seiten sind auf 125kHz initialisiert. Verbindung CANH, CANL und GND sind da. Ich habe diverse Bibliotheken ausprobiert, dann zur Eingrenzung des Problems nur Node A laufen lassen, an Stelle von Node B hängt ein weiteres MCP2515-Interface, welches nur mit Betriebsspannung versorgt wird. Die Auswertung der Fehlercodes aus der Library (https://github.com/coryjfowler/MCP_CAN_lib) hat mir gezeigt, dass der MCP immer in einen TX-Timeout läuft (Fehlercode 7). Wenn ich nicht in "loop" initialisiere, ist irgandwann kein TX-Buffer mehr frei und der Fehlercode wechselt auf 6. Das MCP-Interface ist dieses: https://42project.net/shop/module/kommunikationsmodule/spi-mcp2515-can-bus-modul-tja1050-transceiver-shield-5v-33v-fuer-arduino-und-pi/ Ich habe folgendes schon getestet/probiert: * "nacktes" MCP2515-Modul statt Node B * Spannungsversorgung über Labornetzteil statt über den USB * CANH/CANL vertauscht * verschiedene CAN-Bitraten ausprobiert * SPI_Clock mit 16MHz statt 8MHz ausprobiert Alles hat keinen Erfolg gebracht. Jetzt weiß ich nicht mehr weiter :-( Besten Dank im Voraus für jeden konstruktiven Tipp! Hermann
Εrnst B. schrieb: > Kann deine CAN-Library den loopback-Modus aktivieren, für einen Test mit > dem MCP2515 alleine? Ja, sorry, das hatte ich vergessen. Ich hatte mit mehreren Libs den Loopback-Modus probiert, der hat immer ohne Fehlermeldungen funktioniert.
Florian L. schrieb: > Can Bus ist terminiert? Ja, auch das. Ich hatte es auch mal mit einseitiger Terminierung und ganz ohne versucht, macht keinen Unterschied. Außerdem hatte ich auch die beiden CAN-Platinen mal getauscht, auch das hat zu keiner Änderung geführt.
Beitrag #7689613 wurde vom Autor gelöscht.
Wenn der Sender von niemandem ein ACK bekommt, dann probiert er ewig weiter, den ersten Frame zu senden. Den MCP2515 nur mit Spannung zu versorgen ist glaube ich nicht ausreichend, um ihn zum Senden von ACKs zu bringen. Da müsste ich aber noch einmal ins Datenblatt schauen. Zur Diagnose solltest du den LA an den RXD-Ausgang von einem der Transceiver (TJA1050 oder SN65HV230) hängen. LG, Sebastian
Sebastian W. schrieb: > Zur Diagnose solltest du den LA an den RXD-Ausgang von einem der > Transceiver (TJA1050 oder SN65HV230) hängen. Danke für den Tipp, werde ich am frühen Abend machen. Muss jetzt erst andere Dinge erledigen...
Ein Bus mit nur einem CAN-Node funktioniert nicht. Es brauch immer mindestens 2. Wenn ein Node ein CAN-Frame raussendet und dieser nicht von einem anderen Node acknowledged (ACK) wird kommt es zu den von dir beschreibenden TX-Fehler. Jeder andere CAN-Node acknowledged jedes Frame das er bekommt, auch wenn es nicht für sich bestimmt ist.
Sebastian W. schrieb: > Den MCP2515 nur mit Spannung zu versorgen ist glaube ich nicht > ausreichend, um ihn zum Senden von ACKs zu bringen. Da müsste ich aber > noch einmal ins Datenblatt schauen. Nur Spannung anzulegen st nicht ausreichend. Nach dem Power-On ist der MCP2515 im Configuration Mode, und nur im Normal Mode verschickt er ACKs. Ist irgendwie auch klar, woher soll er auch die Bitrate kennen ... LG, Sebastian
Christian schrieb: > Jeder andere CAN-Node acknowledged jedes Frame das er bekommt, auch wenn > es nicht für sich bestimmt ist. Man hätte auch ohne "Denglisch" schreiben können: Jeder CAN-Knoten bestätigt jedes Frame, dass er bekommt, auch wenn es nicht für ihn bestimmt ist. SCNR
Ja tut mir leid, natürlich muss der Nachrichten-Rahmen vom ersten Kontroller-Bereichs-Netzwerk-Konten von einem anderen Knoten bestätigt werden, damit der ursprüngliche Konten die erfolgreiche Versendung des Rahmens erkennt.
Hallo, danke für die Unterstützung. Ich habe meinen "Node A" jetzt nochmal als Empfänger aufgebaut (sozusagen Node Arx"), und es funktioniert. Morgen muss ich dann mal sehen, was dem Node B (ESP32 mit SN65HV230) fehlt... Nochmals danke und erstmal gute Nacht.
Hermann G. schrieb: > Die Auswertung der Fehlercodes aus der Library > (https://github.com/coryjfowler/MCP_CAN_lib) hat mir gezeigt, dass der > MCP immer in einen TX-Timeout läuft (Fehlercode 7). Die Beispiele arbeiten mit 500kbs Du nutzt 125kbps Aus der Lib:
1 | #define TIMEOUTVALUE 2500 /* In Microseconds, May need changed depending on application and baud rate */ |
alles ohne Gewähr
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.