Quels sont les tarifs UART standard?

33

Je connais 9600, 19200, 38400, 57600, 115200 et 1.8432 Mbaud, mais pas d'autres. Pourquoi ces valeurs sont-elles utilisées, et est-ce simplement un double à chaque fois ou y a-t-il quelque chose de plus complexe (par exemple, 38400 multiplié par quatre n'est pas 115200 bauds?)

La raison pour laquelle je pose cette question est que je conçois quelque chose qui peut avoir à interagir avec une variété de débits en bauds différents. Il sera initialisé à 9600, puis passera à un débit en bauds spécifique. Mais je ne peux pas prendre en charge les débits arbitraires car le dsPIC33F que j’utilise ne prend pas en charge les débits arbitraires car il est limité à un décompteur BRG 16 bits. C'est semblable à cet égard à beaucoup d'autres processeurs.

Thomas O
la source
En pratique, un compteur 16 bits plus des pré-détecteurs / post-scalers est plus que suffisant pour se "rapprocher suffisamment" des débits en bauds arbitraires. La série UART peut tolérer de légers écarts de vitesse de transmission.
Peter Green
Le début commence au milieu du bit START et doit rester au milieu du bit STOP après la sérialisation de 7 à 10 bits. Ce qui donne une précision d'horloge minimale d'environ 2-3%, de préférence meilleure pour gérer le bruit, la gigue, les déviations dans la fréquence source ...
TEMLIB

Réponses:

36

Cela a commencé il y a très longtemps avec les télétypes - je pense à 75 bauds. Depuis lors, il a pratiquement doublé depuis, avec quelques multiples fractionnaires (x1,5), par exemple 28 800, où des contraintes sur la technologie des modems de ligne téléphonique ne permettaient pas tout à fait de doubler.

Les valeurs cristallines standard proviennent de ces premiers débits en bauds et leur disponibilité dicte les taux futurs. Par exemple,

7,3728MHz16=460,800baud7,3728MHz64=115,200baud.

La plupart des UARTS utilisent une horloge de 2n×16 de la vitesse de transmission, tandis que les composants plus modernes (par exemple, NXP LPC) ont des diviseurs fractionnaires pour obtenir une plage plus étendue en utilisant des multiples non binaires.

Les autres standards courants sont 31.250 (MIDI) et 250K (DMX), les deux étant probablement choisis comme de beaux multiples d’horloges "rondes" telles que 1 MHz, etc.

mikeselectricstuff
la source
4
Je ne pense pas que les diviseurs fractionnaires servent à obtenir des débits non standard, mais plutôt des débits standard de fréquences d’horloge MCU non standard.
Johan.A
3
J'ai remis à neuf deux télétypes datant de 1926, de retour au collège (1976), et oui, ils fonctionnaient à environ 75 bauds. Ils ont été étiquetés télétypes baudot. Connecté à 110vac et un moteur fourni la synchronisation, avec une connexion électrique entre eux. Je les ai trempés dans de l'essence pour les nettoyer. (Donnez-moi une pause - j'avais 18 ans. Mais ça a marché!) Ctrl-G a sonné une cloche honnête pour la bonté à l'autre. Hélas, je ne me souviens même pas à qui je les ai donnés. :-( Donc, oui, vous taperiez sur le clavier mécanique, il sérialiserait mécaniquement vos frappes au clavier et ferait et briserait un contact lu par l'autre côté.
Doug Null
Oui, les années folles! Quelle technologie de qualité pour durer 50 ans et aboutir dans le hangar de John Silva à Hayward, en Californie.
Doug Null
32

RealTerm, un programme de terminal Windows gratuit, répertorie ces taux UART dans son menu Baud:

110, 150, 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600

Cependant, ce sont en réalité des bits par seconde (bps), et non en bauds - voir ci-dessous.

110 bauds étaient utilisés par des télétypes à 8 niveaux comme le ASR-33. Je ne sais pas où 150 bauds ont été utilisés, mais c'est un doublement de 75 bauds, couramment utilisé (avec 60 bauds) pour les ATS à 5 niveaux.

La norme des premiers modems téléphoniques largement utilisés dans les années 1960 était de 300 bps. Un nombre de terminaux de 30 caractères par seconde est apparu au même moment.

Au-dessus de 300 bps / 300 bauds, qui utilisaient une simple modulation par déplacement de fréquence (FSK), les valeurs de bps et de bauds (symboles ou tonalités par seconde) ne sont pas identiques. Par exemple, un modem à 1200 bps fonctionne à 600 bauds et un modem à 4800 bps à 1600 bauds. Reportez-vous au tableau sous Bandwidths dans cet article . La différence tient au fait qu’en plus d’utiliser un certain nombre d’impulsions de tonalité par seconde, la modulation par décalage de phase et d’ autres méthodes permettent d’extraire une largeur de bande supplémentaire à partir du même débit en bauds pour obtenir des bps de plus en plus élevés. (Un modem 56K ne fonctionne donc qu'à 8 000 bauds.)

Comme vous pouvez le constater, la liste des tarifs UART commençait essentiellement à 75 et doublait continuellement (en sautant 600), jusqu’à atteindre 38400, où elle a été multipliée par 1,5 pour atteindre 57600. 56K bps est la limite pour une ligne téléphonique analogique. Les débits les plus élevés à partir de 115200 (doublant à nouveau à partir de 57600) sont utilisés pour les connexions câblées.

Comme le mentionne mikeselectricstuff, 14400 et 28800 bps ont été introduits sous la forme de 1,5 x 9600 et de 1,5 x 19200 lorsque les vitesses de modem ne pouvaient pas être doublées à ce moment-là, mais elles sont rarement utilisées.

tcrosley
la source
7
Ne pas être pédant, mais le programme ne peut supporter que les vitesses autorisées par le matériel. Cela n’a peut-être même pas la peine de demander et il suffit de lister les vitesses standard. Interrogeant mon matériel, zip(*serial.Serial('COM10').getSupportedBaudrates())il répond:(50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, 57600, 115200)
Nick T le
2
J'ai utilisé un coupleur acoustique semi-duplex de 600 bit / s dans les années quatre-vingt. 75 bits / s ont été utilisés pendant longtemps dans le système allemand BTX dans la direction de téléchargement, le téléchargement étant à 1200 bits / s.
starblue
2
J'ai aussi vu 62,5 kbauds. En fait, cela dépend aussi de votre horloge principale. Vous pouvez calculer le débit en bauds qui entraînera une erreur suffisamment faible.
vsz
5

Pendant longtemps, il était courant d'utiliser des sous-multiples de 115 200 pour la communication - soit des sous-multiples de 38 400 soit de 57 600 ou 115 200. La plupart du matériel informatique supporte ces taux. Certains matériels informatiques peuvent prendre en charge 230 400 ou 460 800 personnes. Notez que de nombreux contrôleurs intégrés, tels que les débits de données, sont des sous-multiples de leurs propres vitesses d'horloge et que certaines puces USB / série peuvent prendre en charge tout sous-multiple entier de 3 000 000 bps. Des débits tels que 1 000 000 ou 1 500 000 bps deviendront probablement plus courants périphériques pour se connecter aux PC via des puces USB.

BTW, un autre taux qui mérite d'être mentionné: 31 250 bps est le taux utilisé pour la norme MIDI.

supercat
la source
4

Le PC IBM d'origine avait un UART 8250. Cela a pris une horloge de 1,8432 MHz et divisé par un nombre entier pour générer son horloge interne, et cette horloge tourne à 16 cycles par bit.

Le réglage 1 dans le registre diviseur vous donne 115 200, 2 obtient 57 600, 3 38 3800, 6 19 200, etc.

Votre meilleur pari consiste à utiliser une horloge qui tourne à un multiple de 1,8432 MHz avec le DSPIC.

Jasen
la source