-
-
Hallo gummi_ente,
ich habe heute den Tag über weitere Tests gefahren, und habe den Fehler gefunden.
Das Motorsteuergerät sendet insgesamt 4 CAN-Pakete, welche von mir zu einem Frame zusammengesetzt werden müssen. Wenn das Steuergerät einen Fehler auf dem Bus detektiert, so sendet es das letzte Paket noch einmal.
Da das Steuergerät in meiner aktuellen Testschaltung nur VCC/GND/CAN beschaltet ist, sind alle übertragenen Messwerte 0x00. Dazu kommt noch das Start/Ende Zeichen des Frames.
Ich habe dann heute einen Bus aufgebaut, an dem das Motorsteuergerät angeschlossen war, die CAN-Karte im PC, und zwischendrin das Dev-Board. Sobald die PCI-Karte an war, habe ich die Daten problemlos auch auf dem CAn-Controller empfangen, schalte ich die PCI-Karte ab, "erkennt" das Steuergerät einen Fehler, und sendet erneut das alte Paket. Da aber der Paketinhalt fast nur 0x00 ist, sieht es so aus, als ob der CAN nichts empfängt.
Nach weitere Internetrecherche, bin ich auf einen dokumentierten Bug gestoßen, der genau bei 1mbit/s Can-Takt, 8Mhz Controller Takt auftritt, wo anscheinend der Sampling-Point falsch gesetzt/berechnet wird. Ich nehme an, das der Controller das ACK-Bit zu einer Zeit seztt, an der das Steuergerät es nicht erwartet bzw. der Controller an der Stelle des ACK-Bit ein rezessives Bit erwartet, aber durch den falschen SAmpling-Point dieses nicht erkennt. So erhält das Steuergerät kein ACK, und denkt es schlug etwas fehl.
Ich werde morgen weitere Tests fahren, und euch hier auf dem laufenden halten.
Für weitere Vorschläge würde ich mich freuen, da das mit dem Sampling Point nur eine Vermutung ist.
Mit freundlichen Grüßen
Reinhold Fischer
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen