Формат передачи данных по CAN шине (FLAG_CONFIG_CAN_FRAME 0x0A)¶
Для устройств, поддерживающих работу с CANFD можно указать формат данных, который будет передаваться в шине. Для этого необходимо использовать структуру:
enum CHANNEL_CAN_FRAME {
CAN_FRAME_CLASSIC = 0x00,
CAN_FRAME_FDF_NO_BRS = 0x01,
CAN_FRAME_FDF_BRS = 0x02
};
typedef struct {
CommandHeader header;
uint8_t frame;
} __attribute__((packed)) ChannelConfigureCANFrame;
Запрос
Поле | Значение |
header.command | 0x11 |
header.sequence | порядковый номер запроса |
header.flags | FLAG_CHANNEL_x + FLAG_CONFIG_CAN_FRAME |
header.dSize | 0x01 |
frame | значение из CHANNEL_CAN_FRAME |
Ответ
Если запрос успешно обработан и значение формата фреймов CAN шины задано из допустимого диапазона значений.
Поле | Значение |
command | 0x91 |
sequence | порядковый номер запроса |
flags | 0x00 |
dSize | 0x00 |
Если запрос не обработан.
Поле | Значение |
command | 0xFF |
sequence | порядковый номер запроса |
flags | 0x00 |
dSize | 0x00 |
Пример
Задание формата фрейма для работы канала 1. Зададим работу с CANFD без BRS
⇒ 11 xx 2A 01 01
⇐ 91 xx 00 00
Задание на правильного формата фрейма для работы канала 1
⇒ 11 xx 2A 01 05
⇐ FF xx 00 00