Проект

Общее

Профиль

Формат передачи данных по CAN шине (FLAG_CONFIG_CAN_FRAME 0x0A) deprecated

Для устройств, поддерживающих работу с 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