D'autres réponses expliquent bien l'échantillonnage au niveau des bits, mais je voulais expliquer plus en détail les activités des sous-bits et les détails sur le décalage et la phase d'horloge.
comment fonctionne l'asynchrone.
L'expéditeur et le récupérateur s'accordent sur le format: une trame de 1 bit de début, N bits de données, parité optionnelle et 1, 1,5 ou 2 bits d'arrêt.
Ils s'accordent sur un débit de communication commun approximatif comme 1/115 200 secondes par "bit" ou en bauds. Chaque côté a sa propre horloge. Le résultat est que les horloges peuvent être légèrement différentes les unes des autres. Loi de Segal. En théorie, une différence d'environ 10% est autorisée, en pratique, c'est plutôt 5%.
Pourtant, un élément important du partage do not est la phase de leurs horloges. Même si l'émetteur et le récepteur avaient des fréquences d'horloge identiques, la relation phase entre les horloges émetteur / récepteur n'est pas contrôlée. Avec des horloges presque identiques, cette phase change lentement.
Pour faire face à cette différence de phase , le récepteur échantillonne à un débit plus élevé que le baud. Supposons 16x plus vite.
Un récepteur se réveille pour regarder son entrée, qu'il échantillonne à 16x bauds. Si l'entrée n'est pas inactive, elle attend que la ligne soit inactive pendant un certain temps.
Une fois que l'entrée est dans l'état inactif (aucune donnée n'est envoyée), le récepteur recherche un exemple de transition vers l'état actif. Une fois que cela est détecté, un bon récepteur recherche également 1/2 bit de temps (8x échantillons) plus tard pour un état actif continu. Si cela est détecté, alors un bit d'état est trouvé et la phase (à 1/16 de bit) est détectée des données entrantes. Sinon, le signal parasite est généralement discrètement ignoré et le récepteur le rejette comme du bruit et recommence comme ci-dessus.
Les N échantillons suivants, effectués à pleine largeur de bits à partir du décalage de 1/2 bit du bit de début, supposent que la ligne est data et que le LSbit à MSbit est lu.
Parfois, un bit de parité est inclus.
Enfin, les 1 bits suivants (ou rarement 2) sont échantillonnés (au milieu) et devraient être à l'état inactif. Sinon, la trame reçue est dite avoir une erreur de bit d'arrêt ou une erreur de trame . Un bit de début long est une erreur de cadrage spéciale appelée pause .
Une fois le dernier bit d'arrêt échantillonné, près de son milieu, le récepteur est immédiatement prêt pour un autre bit de démarrage. Cela permet aux horloges de l'expéditeur et du destinataire d'être jusqu'à environ 5-10% l'une de l'autre et la communication réussit.
Comment l'appareil récepteur "sait-il" que j'envoie un bit de démarrage suivi de 6 0?
Dans le cas d'OP, en envoyant x03 ou b0000-0011, après que la ligne a été inactive (état 1-1-1-1 -...) pendant un certain temps et que le récepteur est prêt, l'émetteur sort un start 0, 1-1-0-0-0-0-0-0, bit d'arrêt 1. Le récepteur détecte le bit de démarrage, les données et le bit d'arrêt. Succès!
Les attributs supplémentaires, non couverts, incluent le suréchantillonnage des données avec une détection majoritaire, une rupture, des détails de parité, des protocoles de niveau supérieur, une détection automatique en bauds, etc.