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