Данные передаются фреймами. Протокол является адресным, с поддержкой широковещательных запросов и проверкой соответствия полученного ответа отправленному запросу.
Формат фрейма
Максимальный размер фрейма составляет 255 байт, общий размер технической полей фрейма - 10 байт. Таким образом, максимально возможный размер полезных данных возможен до 245 байт.
...
- ADDRESS - адрес конечного устройства. Значение 0x00000000 является широковещательным адресом и указывается только в запросе. Ответ на широковещательный запрос будет содержать конкретный адрес конечного устройства.
- FN - функция (код запроса). Значение 0x00 зарезервировано под ответ с кодом ошибки.
- LEN - общая длина фрейма в байтах (включая сам байт длины). Допустимы значения от 10 до 255.
- PAYLOAD - полезные данные. Содержимое зависит от указанного кода запроса.
- ID - идентификатор запроса. Псевдослучайное число, генерируемое мастером при формировании запроса. Конечное устройство должно ответить тем же значением.
- CRC - контрольная сумма фрейма. При формировании фрейма считается от всех данных, исключая само поле контрольной суммы.
Параметры и расчет контрольной суммы
Характеристики:
- Стандарт: CRC-26-IBM.
- Полином: 0xA001.
- Начальное значение: 0xFFFF.
- Начинать с: LSB.
- XOR в конце: нет.
...
Info |
---|
При валидации входящего фрейма удобно считать контрольную сумму от всех байт, включая само поле контрольной суммы. В случае верного значения контрольной суммы результат вычислений должен быть равен 0x0000. |
Алгоритм валидации входящего фрейма для конечного устройства
Ниже представлена блок-схема алгоритма валидации:
Алгоритм валидации входящего фрейма для мастера
Ниже представлена блок-схема алгоритма валидации:
...