==== CAN ==== Bittiming : http://www.bittiming.can-wiki.info/ SDO Protokoll: http://atlas.web.cern.ch/Atlas/GROUPS/DAQTRIG/DCS/LMB/PROFILE/cano-sdo.htm ==== USB2CAN ==== === Protokoll === Jeder Befehl endet mit einem '\r' / 0x13. USB2CAN antwortet mit * '\r' / 0x13 (ACK) falls der Befehl erfolgreich verarbeitet wurde, * '\a' / 0x07 (NACK) falls der Befehl nicht verarbeitet wurde Beispiel: ^OUT ^ IN ^ Kommentar ^ |S8\r | \r | Baudrate auf 1Mbps setzen, ACK | |O\r | \r | CAN Kanal öffnen, ACK | |X\r | \a | Unbekannter Befehl, NACK | |V\r | V0115\r | Hardwareversion abfragen, Version 01.15, ACK | |t700255aa\r | \r | Nachricht mit 2 Bytes (0x55, 0xAA) an ID 0x700 senden, ACK | | | t7002aa55\r | Nachricht mit 2 Bytes (0xAA, 0x55) von ID 0x700 empfangen | |C\r | \r | CAN Kanal schließen, ACK | === Eingehende Nachrichten === * ''tcccldd...'' Normale CAN Nachricht empfangen ccc = CAN ID (HEX) l = Anzahl Datenbytes (1 <= l <= 8) dd.. = Datenbytes (HEX) (Anzahl = l) * ''Tccccccccldd...'' Extended ID CAN Nachricht empfangen cccccccc = CAN ID (HEX) l = Anzahl Datenbytes (1 <= l <= 8) dd.. = Datenbytes (HEX) (Anzahl = l) * ''rcccl'' RTR CAN Nachricht empfangen ccc = CAN ID (HEX) l = Anzahl angeforderter Datenbytes (1 <= l <= 8) * ''Rccccccccl'' Extended ID RTR CAN Nachricht empfangen cccccccc = CAN ID (HEX) l = Anzahl angeforderter Datenbytes (1 <= l <= 8) === Befehle === * ''Sx'' Baudrate wählen (Muss vor dem Öffnen einer Verbindung geschehen) x = 0 : 10kbps (momentan nicht unterstüzt, wie x = 3) x = 1 : 20kbps (momentan nicht unterstüzt, wie x = 3) x = 2 : 50kpbs (momentan nicht unterstüzt, wie x = 3) x = 3 : 100kbps x = 4 : 125kbps x = 5 : 250kbps x = 6 : 500kbps x = 7 : 800kbps (momentan nicht unterstüzt, wie x = 6) x = 8 : 1000kbps * ''Bxxxxxxx'' Baudrate setzen xxxxxxx = Baudrate in bps, mit 0 auf 7 Stellen gepadded. z.B. B0125000 = 125kbps z.B. B1000000 = 1000kbps * ''O'' CAN Kanal öffnen * ''L'' Passiven CAN Kanal öffnen Nur Empfang von Nachrichten, keinerlei Busbeeinflussung * ''C'' CAN Kanal schließen * ''tcccldd...'' CAN Nachricht senden ccc = CAN ID (HEX) l = Anzahl Datenbytes (1 <= l <= 8) dd.. = Datenbytes (HEX) (Anzahl = l) * ''tccccccccldd...'' CAN Nachricht senden cccccccc = CAN Extended ID (HEX) l = Anzahl Datenbytes (1 <= l <= 8) dd.. = Datenbytes (HEX) (Anzahl = l) * ''rcccl'' CAN RTR Nachricht senden ccc = CAN ID (HEX) l = Anzahl der angeforderten Datenbytes (1 <= l <= 8) * ''Rccccccccl'' CAN RTR Nachricht senden cccccccc = CAN Extended ID (HEX) l = Anzahl der angeforderten Datenbytes (1 <= l <= 8) * ''Mxxxxxxxx'' Filter Maske festlegen xxxxxxxx = Filter Maske (HEX) * ''mxxxxxxxx'' Filterwert festlegen xxxxxxxx = Filterwert (HEX) * ''E'' CAN Fehler abfragen (Fehler werden bis zur Abfrage geodert, Abfrage setzt Fehler zurück) Antwort: "Exx\r" xx = Fehlerregister (HEX) * ''V'' Hardwareversion abfragen Antwort: "VMMmm\r" MM = Major Version mm = Minor Version * ''v'' Firmwareversion abfragen Antwort: "vMMmm\r" MM = Major Version mm = Minor Version * ''N'' Seriennummer abfragen Antwort: "Nssss\r" ssss = Seriennummer