Я проектирую ведущий-ведомый односторонний RS-485 по пластиковой оптоволоконной сети физического уровня, используя PIC MCU с низким энергопотреблением. Хотя я ожидаю, что канальный уровень будет очень надежным, нет ничего идеального.
Так как сеть является однонаправленной для поддержания низких затрат, я думаю, что некоторая форма кода прямого исправления ошибок в порядке. Содержание пакета данных просто:
- Адрес ведомого (один байт)
- код операции (один байт)
- Операнды (четыре байта)
Таким образом, только шесть байтов прикладных данных передаются от передатчика Raspberry Pi UART со скоростью до 56 Кбод -> пластиковый оптоволоконный передатчик -> кабель PFO до 20 метров -> приемник PFO -> PIC12LF1822 MCU UART в качестве подчиненного узла RS-485 .
Я мог бы просто использовать CRC для обнаружения ошибок, но, поскольку канал является односторонним, нет способа NAK получить плохой пакет для повторной передачи.
Это хороший пример использования для прямого исправления ошибок, но у меня нет опыта работы с FEC. Какой алгоритм или другие вещи следует учитывать, учитывая, что мне нужна максимально возможная надежность. Предпочтительно алгоритм, который может быть реализован в коде C в PIC MCU.