Мне было интересно, как создать безопасный протокол связи UART / USB. Мне это нужно для связи между микроконтроллером и ПК. У меня есть ~ 10 команд и я решил использовать 10 отдельных команд подтверждения для каждой из них.
Обмен должен идти так:
- ПК посылает команду пробуждения через UART
- µC распознает, что ПК подключен, и отправляет свою команду на ПК, например.
0x01
- ПК делает то, что ему было предложено (некоторые аппаратные средства), и отвечает,
~0x01
когда это делается (я опускаю число, чтобы создать большее «расстояние» между двумя числами) - µC знает, что оно отправлено
0x01
и ожидает~0x01
от ПК. Если что-то не~0x01
возвращается, микроконтроллер узнает, что что-то пошло не так, и отправит новый запрос или сообщение об ошибке.
Случай, когда микроконтроллер отправляет 0x01
, ПК понимает 0x02
и отправляет ~0x02
обратно, но микроконтроллер считывает ~0x01
из-за некоторого шума, это было бы довольно плохо.
Насколько это безопасно с точки зрения передачи или как я могу сделать это более безопасным?