в целом все верно, можно и так.
я бы только данные сделал бы всегда 8 байт (чтобы пакеты стали фиксированной длинны, поле длинны в отдельном байте - хорошая идея, оставить) так легче их распаковывать, если по скорости пройдете.
признаки начала передачи, запрос на передачу, и так далее я бы выкинул, они уарту ненужны на адрес бы отвел всегда 3 байта, (он может быть 11 или 19 бит)
получил бы посылку фиксированной длины 3 + 1 + 8 + 2 = 14 байт, сумму CRC надо заново считать из кан посылки ее взять не выйдет, вы поля кроите, потому заменил бы ее обычной суммой циклической и все...
|