En communication série, la vitesse de transmission signifie-t-elle que nous devons utiliser la vitesse d'horloge exacte ou s'agit-il d'une plage de vitesses que nous pouvons utiliser?
et si c'est une valeur exacte, quelle doit être son exactitude? par exemple, puis-je utiliser le 555 comme horloge d'un circuit de communication série?
serial
clock-speed
baudrate
sonslikefiziks
la source
la source
Réponses:
Les synchronisations doivent être suffisamment précises pour ne pas s'écarter avant que le protocole ne se resyncronise.
La série UART resyncronise sur chaque octet et un octet fait environ 10 bits (8 bits de données plus démarrage et arrêt). Nous supposons que notre UART cible le milieu de chaque bit. Si tout est parfait et qu'une seule extrémité est inexacte, cela permet une différence d'environ 5% entre les deux extrémités du lien.
Toutefois:
L'essentiel est qu'une erreur de 1% sur votre horloge est presque certainement très bien. Une erreur de 5% est presque certainement un problème. Entre ces deux chiffres, il peut ou non être un problème en fonction de l'image globale.
C'est un défi de taille pour un oscillateur RC. Disons que votre R a une tolérance de 1% et votre C a une tolérance de 2%. Cela donne une tolérance d'environ 3% pour la constante de temps du réseau RC et c'est avant de penser aux erreurs introduites par votre puce de pilote.
Donc, l'essentiel est que vous devriez regarder un résonateur en cristal ou en céramique.
Quant à l'USB, je n'ai pas l'expérience pour analyser à partir des premiers principes, mais https://www.silabs.com/community/interface/knowledge-base.entry.html/2004/03/15/usb_clock_tolerance-gVai dit 1,5% pour basse vitesse et 0,25% pour pleine vitesse.
la source
Les UART généralement utilisés dans les systèmes série de type RS232 fonctionnent en échantillonnant la ligne de données quelque part au milieu du bit selon une division de l'horloge de fréquence de base du débit en bauds prédéfini. Ainsi, si les données envoyées et le récepteur ne sont pas sur la même fréquence, le "point d'échantillonnage" se rapprochera du bord de la trame binaire sur les bits successifs.
Avec un UART normal, la longueur de bit pour un octet est de 10 ou 11 bits. 1 démarrage, 8 données et 1 ou 2 bits d'arrêt. Un demi-dérapage sur le 10e bit se traduit par une erreur de 0,5 / 10 = 5%.
Cependant, en réalité, votre tolérance est inférieure à cela car vous devez également ajouter la latence de votre période de fréquence de base qui ajoutera un décalage par rapport au bord avant du bit de départ. Plus votre fréquence de base est élevée, moins cela a d'effet.
Quant à l'utilisation d'une minuterie 555 à cet effet, je ne le recommanderais pas sauf si vous prévoyez d'avoir un réglage manuel dans le circuit 555.
Un USART d'autre part utilise une méthode de contrôle plus complexe qui tente de synchroniser la transmission avec les données reçues. Cela peut se faire en utilisant un modèle de données qui a une horloge intégrée, en utilisant une horloge passée ou par une certaine forme de verrouillage de phase sur les bords de données reçus. (Bien que ce dernier soit sans doute vraiment pseudo-synchrone.)
la source