Skip to content

Latest commit

 

History

History
188 lines (121 loc) · 7.11 KB

protocol.md

File metadata and controls

188 lines (121 loc) · 7.11 KB

Протокол CanHacker (lawicel) описан в документации к приложению CanHacker

Библиотека реализует его не полностью. Поддерживаемые комманды приведены ниже.

C[CR]

Эта команда переключает CAN контроллер из операционного режима в режим сброса. Контроллер более не вовлечен в какое-либо взаимодействие с CAN.

Комманда доступна только в операционном режиме, запущеннос командой O ранее.

Возвращает: [CR] или [BEL]

L[CR]

Эта комманда переключает CAN controller в режим Только Чтение. Комманда открытия канала (O) не требуется после исполнения L.

Используйте C для возврата в режим сброса.

Возвращает: [CR]

Mxxxxxxxx[CR]

Установить код фильтра. Эта комманда доступна только в режиме сброса.

xxxxxxxx - код в hexadecimal

Значение по-уолчанию после загузки 0x00000000 для приема всех сообщений.

Возвращает: [CR] или [BEL]

mxxxxxxxx[CR]

Установить маску фильтра. Эта комманда доступна только в режиме сброса.

xxxxxxxx - маска в hexadecimal

Значение по-уолчанию после загузки 0xFFFFFFFF для приема всех сообщений.

Возвращает: [CR] или [BEL]

N[CR]

Серийный номер устройства.

Возвращает: Nxxxx[CR]

xxxx - серийный номер в цифро-алфавитных символах.

O[CR]

Эта комманда переключает CAN контроллер из режима сброса в операциооный режим. Контроллер вовлечен во взаимодействие с CAN. Комманда достуна только после установки скорости коммандой S ранее или контроллер переведен в режим сброса коммандой C.

Возвращает: [CR] or [BEL]

riiiL [CR]

Комманда пердает стандартный remote 11 Bit CAN фрейм. Комманда доступна только в операционном режиме после исполнения комманды O.

iii - идентификатор в hexadecimal (000-7FF)
L   - код длины сообщения (0-8)

Возвращает: [CR] или [BEL]

RiiiiiiiiL [CR]

Комманда пердает расширенный remote 29 Bit CAN фрейм. Комманда доступна только в операционном режиме после исполнения комманды O.

iiiiiiii - идентификатор в hexadecimal (00000000-1FFFFFFF)
L        - код длины сообщения (0-8)

Возвращает: [CR] или [BEL]

Sn[CR]

Эта комманда устанавливает скорость CAN в одно из предопределеных состояний. Команда доступна после включения или после перевода конроллера в режим сброса командой C.

Следующие скорости доступны:

S0 - 10Kbps
S1 - 20Kbps
S2 - 50Kbps
S3 - 100Kbps
S4 - 125Kbps
S5 - 250Kbps
S6 - 500Kbps
S7 - 800Kbps
S8 - 1Mbps

Возвращает: [CR] или [BEL]

tiiiLDDDDDDDDDDDDDDDD[CR]

Комманда пердает стандартный 11 Bit CAN фрейм. Комманда доступна только в операционном режиме после исполнения комманды O.

iii - идентификатор в hexadecimal (000-7FF)
L   - код длины сообщения (0-8)
DD  - Байт данных в hexadecimal (00-FF). Количество байт должно соответствовать коду длины сообщения

Возвращает: [CR] или [BEL]

TiiiiiiiiLDDDDDDDDDDDDDDDD[CR]

Комманда пердает расширенный 29 Bit CAN фрейм. Комманда доступна только в операционном режиме после исполнения комманды O.

iiiiiiii - идентификатор в hexadecimal (00000000-1FFFFFFF)
L        - код длины сообщения (0-8)
DD       - Байт данных в hexadecimal (00-FF). Количество байт должно соответствовать коду длины сообщения

Возвращает: [CR] или [BEL]

V[CR]

Чтение версии программного обеспечения и платы

Возвращает: Vhhff[CR]

hh - версия платы
ff - версия программного обеспечения

v[CR]

Чтение подробной версии программного обеспечения

Возвращает: vmami[CR]

ma - мажорный номер версии
mi - минорный номер версии

Zv[CR]

Эта комманда включает или выключает метки времени в получаемых сообщениях. По-умолчнию - выключено.

Если метки времени включены, получаемые сообщения содержат дополнительные 2 байта на конце, в которых закодирована временная метка в миллисекнудах.

Счетчик времени начинается с 0x0000 и переполняется на 0xEA5F, что эквивалентно 59999мс.

Каждый инкремент временной метки соответствует 1мс из 60000мс окна.

Входящие фреймы

Все вхоядщие фреймы передаются сразу после получения, опционально с временной меткой.

Опрос не требуется. Отправляются в следующем формате:

11 bit ID фрейм

tiiiLDDDDDDDDDDDDDDDD[ssss][CR]

11 bit ID Remote фрейм

riiiL[ssss][CR]

29 bit ID фрейм

TiiiiiiiiLDDDDDDDDDDDDDDDD[ssss][CR]

29 bit ID Remote фрейм

RiiiiiiiiL[ssss][CR]
r    - идентификатор для Remote 11 bit фрейма
R    - идентификатор для Remote 29 bit фрейма
t    - идентификатор для 11 bit фрейма
T    - идентификатор для 29 bit фрейма
i    - идентификатор (000-7FF) или (00000000-1FFFFFFF)
L    - код длины (0-8)
DD   - байты данных (00-FF)
ssss - опциональная метка времени (0000-EA5F)