Ну так даже "копеечный" CH32V003 это может, не поморщившись!
Достаточно лишь всякое УГ вроде SPL (ну и printf'ы/scanf'ы и
подобное жиробачество) не использовать. В текстовом протоколе у меня все просто: маркером окончания строки является '\n'. Если нужно использовать очень длинные линии или работать в сильно зашумленных условиях - когда есть риск повреждения данных, я использую бинарный протокол поверх CAN (в стандартные 8 байт у меня все отлично влезает). Сам никогда не выдумываю контрольные суммы - это бред!