Je me demandais comment créer un protocole de communication UART / USB sûr. J'en ai besoin pour la communication entre un microcontrôleur et un PC. J'ai ~ 10 commandes et j'ai pensé utiliser 10 commandes d'accusé de réception distinctes pour chacune d'entre elles.
L'échange devrait se dérouler comme suit:
- Le PC envoie une commande de réveil via UART
- µC reconnaît que le PC est connecté et envoie sa commande au PC, par exemple.
0x01
- Le PC fait ce qui lui a été demandé (certains éléments matériels) et répond
~0x01
quand c'est fait (je nie le nombre pour créer une "distance" plus grande entre les deux nombres) - µC sait qu'il a envoyé
0x01
et attend~0x01
du PC. Si autre chose que~0x01
revient, le µC saura que quelque chose s'est mal passé et enverra une nouvelle demande ou un message d'erreur
Le cas que le µC envoie 0x01
, le PC comprend 0x02
et renvoie ~0x02
mais le µC lit à ~0x01
cause d'un certain bruit serait assez mauvais.
Dans quelle mesure est-ce sûr en termes de transmission, ou comment puis-je le rendre plus sûr?
microcontroller
c
embedded
uart
JavaForStarters
la source
la source
Réponses:
Je pense que vous devez définir des commandes plus longues, y compris probablement la somme de contrôle ou CRC et attendre un ACK / NACK ou une condition d'erreur.
Vous pouvez prendre des exemples de protocoles simples comme TFTP ( RFC 1350 )
la source
Pour une communication sûre, vous devez considérer tous les threads possibles sur votre ligne de communication. Par conséquent, vous devez définir si le système est accessible de l'extérieur (systèmes tiers, par exemple sans fil)
En général, vous devez penser aux fils suivants:
Les mesures standard contre les fils sont:
la source