Протокол предназначен для передачи запросов и команд между платами расширения и «головным» контроллером. Платы расширения реализуют дополнительный функционал и подключают переферийные устройства к головному контроллеру. Требуется полнодуплексная связь для обеспечения возможности отправки сообщений как со стороны головного контроллера так и со стороны платы.
Платы расширения подключаются по RS-232 интерфейсу последовательно и поддерживают каскадирование (подключение цепочкой):
Головной контроллер -- RS-232 -- Плата расширения -- RS-232 -- [Платы расширения] -- RS-232 -- Плата расширения
Задача данного протокола обеспечить адресную доставку сообщений между головным контроллером и требуемой платой расширения.
Поле | Длинна байт | Описание |
---|---|---|
Стартовый символ | 1 | 0xFD |
Идентификатор запроса | 1 | Произвольное значение, не повторяющееся в рамках 2 последовательно отправленных кадров |
Тип кадра | 1 | 0x00 - запрос0x01 - ACK0x02 - ошибка FSC |
Порядковый номер повтора | 1 | 0x00 при первичной отправке |
Адрес получателя | 1 | 0x00 - адрес головного устройства.При отправке сверху вниз используется адрес декркмкнтируется. 0x00 после декремента означает что сообщение предназначено данной плате.При отправке снизу вверх адрес инкрементируется, при получении сообщения головным устройством значение примет адрес отправителя. |
Данные | Данные в кадре | |
CRC32 | 4 | Контрольная сумма |
Стоповый символ | 1 | 0xFE |
Если между стартовым и стоповым условием встречаются специальные символы (0xFD
, 0xFE
, 0xFF
), то они кодируются в соответствии с таблицей байтстаффинга:
0xFD
= 0xFF02
0xFE
= 0xFF01
0xFF
= 0xFF00
Второй байт вычисляется как (спец символ) XOR 0xFF
CRC есть средство контроля целостности кадра. CRC считается над всеми полями кадра кроме стартового и стопового байт и поля самого CRC.
Используется CRC 32 c полиномом 0х4C11DB7
Вычисление CRC при передаче производится ДО проведения байтстаффинга, а при приеме сначала производится байтстаффинг, а потом производится проверка CRC.
CRC считается на данные между стартовым и стоповым байтами.
0x00
в качестве адреса. Контроллер при отправке сообщение указывает порядковый номер платы в цепочке (начиная с 1).3
.Обработка данных запроса выходит за рамки данного документа.