В шине CAN линейная структура и все блоки имею равные права и могут отправлять и принимать сообщения. Каждое сообщение должно соответствовать протоколу CAN.
Формат сообщения в CAN состоит из начала кадра(Start of frame), поля арбитража(Arbitration field), контрольного поля(Control field), поля данных(Data field), поля контрольной суммы(CRC field), поля подтверждения(ACK field), конца кадра(End of frame)

протокол CAN
Под начало кадра отводится 1 бит, оно нужно для синхронизации всех узлов сети и обозначения начала сообщения. Начало кадра уведомляет все приемники о начале передачи кадра.
Под поле арбитража отводится 11 бит. Оно состоит из идентификатора и контрольного бита. Идентификатор используется для определения приоритета сообщения, его содержимого и источника/адресата без использования жесткой адресации узлов. Чем меньше числовое значение идентификатора, тем выше приоритет сообщения, что гарантирует его передачу первым при одновременной отправке данных разными устройствами. Если передачу выполняет блок с более высоким приоритетом, то блок с более низким приоритетом прекращает передачу и возобновляет попытку передачи после получения сообщения более высокого приоритета.
По контрольному биту другие блоки идентифицируют вид сообщения: отправка передатчиком кадра данных или запрос приемником данных от передатчика.
Под контрольное поле отводится 6 бит. В нём хранится информация о величине следующего поля данных и об объёме содержащейся информации. По контрольному полю другие блоки могут проверить, весь ли объём данных дошёл до них.
Под поле данных отводится до 64 бит и в нём непосредственно находится передаваемая информация(значения датчиков, команды управления и т.д.). Поле данных не влияет на приоритет сообщения, а содержит только полезную нагрузку.
Под поле контрольной суммы отведено 16 бит. Поле CRC(Cyclic Redundancy Check) используется для выявления неисправностей во время передачи данных. Используется циклический избыточный код, вычисляемый на основе данных, идентификатора и управляющих битов. Сумма вычисляется повторно каждым приемником и сравнивается с той, которая пришла в сообщении. Если принятый CRC не совпадает с вычисленным, то блок отправляет кадр ошибки(Error frame). Кадр ошибки состоит из 6 доминантных битов, которые накладываются на каждый процесс передачи и распознаются всеми одинаково.
Поле подтверждения занимает 2 бита. Приемники, корректно получившие сообщение, переписывают слот подтверждения доминантным битом(0), что сообщает блоку-отправителю об успешной доставке.
Конец кадра обозначает завершение передачи, позволяя контроллерам синхронизироваться.
Длина кадра может составлять не более 130 бит.
Кадр удалённого запроса(Remote frame) нужен для запрашивания блоком данных, которые ему нужны для расчёта, но которые давно не отправлялись.