Ich versuche, CAN-Nachrichten von einem Radar zu empfangen, dessen Spezifikation die folgenden Daten für das Bit-Timing definiert:
CAN-Baudrate = 250 kBaudTseg1 = 8Tseg2 = 7Tsjw = 4Synchronisation nur an einer Kante
Ich verwende einen 16-MHz-Quarz im klassischen MCP2515 (CAN-Controller) + MCP2551 (CAN-Transceiver) Setup, das ich zwischen dem CAN-Bus und einem Arduino Uno verwende, aber ich glaube, ich habe Probleme beim Einstellen der Bit-Timing-Konfiguration im MCP2515.
Dies liegt daran, dass die Verwendung einer Taktfrequenz von 16 MHz die Zeitquante pro Bitzeit auf 16 begrenzt. Ich verwende das Tool MBtime, um das Bit-Timing zu überprüfen.
1 Zeitquanten-Synchronisationssegment + 1 Zeitquantenausbreitungsverzögerung + 8 Zeitquantenphasensegment 1 + 7 Zeitquantenphasensegment 2 ----------------------- ----- = 17 Zeitquanten
Welches ist eins mehr als das erforderliche (16). Das Synchronisationssegment ist immer eins und das Ausbreitungssegment mindestens eins. Wie ist es möglich, es mit den erforderlichen Parametern arbeiten zu lassen?
Meine Ideen verwenden einen anderen Kristall, vielleicht 18 oder 20 MHz. (Ich habe es tatsächlich mit 20 MHz und einer vierfachen Quantenausbreitungsverzögerung versucht, und es hat nicht funktioniert.)
Mit einem CAN-zu-USB-Konverter in meinem PC habe ich den CAN jedoch erfolgreich empfangen Frames, die ich vom Radar erwartet hatte. Ich habe die gleichen Einstellungen vorgenommen (Tseg1, Tseg2, SJW und Baudrate). Und dieser Konverter verwendet einen 16-MHz-Kristall ...
Fehlt mir etwas? Sollte ich die Oszillatorfrequenz auf einen anderen Wert ändern?