Мы разработали простой протокол фиксированной длины для встроенного устройства. Каждый пакет только два байта:Пакетное оснащение для очень коротких последовательных пакетов
bits | 15..12 | 11..4 | 3..0 |
| OpCode | DATA | CRC4 |
Мы используем «ВРК-основой обрамление», то есть приемник собирает два байта, вычисляют CRC4 и если она соответствует кадру считается действительным. Как вы можете видеть, нет начального кадра или конца кадра.
Существует улов: рекомендуемая длина сообщения для CRC4 составляет 11 бит, и здесь она рассчитана на 12 бит. Насколько я понимаю, это означает, что свойства обнаружения ошибок CRC ухудшаются (но я не уверен, сколько).
(Кстати, если кто-нибудь нужен код для CRC4 (или любой другой) и не чувствует себя достаточно опытным, чтобы написать его сам, импульс имеет очень хороший импульс :: Crc функция, которая может вычислить любой КРР)
Проблема заключается в следующем: это кадрирование на основе crc не работает, и мы получаем ошибки кадрирования, то есть второй байт из одного сообщения и первый байт из следующего сообщения иногда образуют правильное сообщение.
Мой вопрос: есть ли способ исправить кадрирование, не добавляя больше байтов? Мы потратили довольно много времени, сжимая все в двух байтах, и было бы грустно просто выбросить его так. У нас есть запасной бит в поле opcode.
- основе времени обрамление будет не очень надежным, потому что наше радио-канал любит «выплюнуть» несколько пакетов сразу
- Может быть, есть какой-то другой метод обнаружения ошибок, который будет работать лучше, чем CRC4?
Это мы должны добавить больше байтов, что было бы лучшим способом сделать это?
- Мы можем использовать запуск из-кадров байт и байты-начинки (например, как ПОЧАТКИ) (+2 байт, но я не уверен, что делать с поврежденными сообщениями)
- Мы можем использовать запуск из -frame nibble и расширять CRC до CRC8 (+1 байт)
- Что-то еще?
Как происходит обмен битами между процессором и устройством? – 4386427
@ 4386427 процессор подключен к радиопередатчику UART; радиоприемник подключен к устройству UART. – Amomum
Есть ли постоянный поток пакетов? – 4386427