Quali sono le tariffe UART standard?

Conosco 9600, 19200, 38400, 57600, 115200 e 1.8432 Mbaud, ma non altri. Perché vengono utilizzati questi valori, e si raddoppiano semplicemente ogni volta o sta succedendo qualcosa di più complesso (ad esempio, 38400 quadruplicato non è 115200 baud?)

Il motivo per cui pongo questa domanda è che io “m progettando qualcosa che potrebbe dover interagire con una varietà di velocità di trasmissione diverse. Verrà inizializzata in 9600 e quindi passerà a una velocità di trasmissione specifica. Ma non posso supportare velocità arbitrarie perché il dsPIC33F che sto usando non supporta velocità arbitrarie come è limitato a un contatore BRG a 16 bit. È simile a questo riguardo a molti altri processori.

Commenti

  • In pratica un contatore a 16 bit più scaler pre / post è più che sufficiente per ottenere ” abbastanza vicino ” a velocità di trasmissione arbitrarie. La seriale UART può tollerare leggere discrepanze nella velocità di trasmissione.
  • uart inizia a metà del bit di START e deve rimanere vicino al centro del bit di STOP dopo aver serializzato 7-10 bit. Il che rende una precisione di clock minima di circa il 2-3%, preferibilmente migliore per gestire rumore, jitter, deviazioni nel frequenza di origine …

Risposta

È iniziato molto molto tempo fa con i telescriventi – credo 75 baud Da allora è stato per lo più raddoppiato, con pochi multipli frazionari (x1,5), ad esempio 28.800, dove cerano vincoli sulla tecnologia del modem della linea telefonica che non gli permettevano di raddoppiare.

I valori cristallini standard provenivano da questi primi baudrate e dalla loro disponibilità y determina le tariffe future. Ad esempio,

\ $ \ begin {align} {7.3728 \, \ mathrm {MHz} \ over 16} & = 460,800 \; \ text {baud} \\\\ {7,3728 \, \ mathrm {MHz} \ oltre 64} & = 115,200 \, \ text {baud}. \ end {align} \ $

La maggior parte degli UART utilizza un orologio di \ $ 2 ^ n \ times 16 \ $ del baudrate, le parti più moderne (ad es. NXP LPC) hanno divisori frazionari per ottenere una gamma più ampia utilizzando multipli non binari.

Altri standard comuni sono 31.250 (MIDI) e 250K (DMX), entrambi probabilmente scelti come bei multipli di orologi “rotondi” come 1 MHz ecc.

Commenti

  • Non ‘ t pensare divisori frazionari servono per ottenere bitrate non standard, ma piuttosto bitrate standard da frequenze di clock MCU non standard.
  • Ho rinnovato due telescriventi del 1926, al college (1976) e sì, funzionavano a circa 75 baud. Erano etichettati come telescriventi baudot. Collegato a 110vac e un motore fornito la temporizzazione, con collegamento elettrico tra di loro. Li ho immersi nella benzina per pulirli. (Dammi una pausa – avevo 18 anni. Ma ha funzionato!) Ctrl-G suonò un campanello da onesto a bontà allaltro. Purtroppo non ‘ ricordo nemmeno a chi li ho dati. 🙁 Quindi, sì, tu ‘ digita sulla tastiera meccanica, serializzerà meccanicamente le tue battiture e creerà e interromperà un contatto letto dallaltra parte.
  • Yay, the Roaring ‘ 20 ‘ s! Che tecnologia di qualità deve durare 50 anni e finire in John Silva ‘ è capannone a Hayward, California.
  • @DougNull Sorry for bump – Question for 115200bps. Quindi hai preso lorologio IC (7,3728 MHz) e lo hai diviso per ? Come hai ottenuto 64?

Risposta

RealTerm, un programma per terminale Windows freeware, elenca queste tariffe UART nel suo menu Baud:

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

Tuttavia questi sono in realtà bit al secondo (bps), non baud – vedi sotto.

110 baud sono stati usati da Teletype a 8 livelli come lASR-33. Non so dove sia stato usato 150 Baud, ma è un raddoppio di 75 baud, comunemente us ed (insieme a 60 baud) per TTY a 5 livelli.

300 bps era lo standard per i primi modem telefonici ampiamente utilizzati negli anni 60. Un numero di terminali di 30 caratteri al secondo è apparso contemporaneamente.

Sopra 300 bps / 300 baud, che utilizzava la semplice key shift keying (FSK), le cifre per bps e baud (simboli o toni al secondo ) non sono la stessa cosa. Ad esempio, un modem a 1200 bps funziona effettivamente a 600 baud e un modem a 4800 bps a 1600 baud. Fare riferimento alla tabella in Larghezze di banda in questo articolo . La differenza è perché oltre a utilizzare un certo numero di impulsi di tono al secondo, vengono utilizzati anche la codifica a sfasamento e altri metodi per estrarre ulteriore larghezza di banda dalla stessa velocità di trasmissione tasso per ottenere bps sempre più alti. (Quindi un modem a 56K funziona in realtà solo a 8000 baud.)

Come puoi vedere, lelenco delle velocità UART iniziava essenzialmente a 75 e raddoppiava continuamente (saltando 600), fino ad arrivare a 38400, dove è stato moltiplicato per 1,5 per ottenere 57600.56 K bps è il limite per una linea telefonica analogica. Le velocità più elevate da 115200 in su (ancora una volta raddoppiando a partire da 57600) vengono utilizzate per connessioni cablate.

Come menzionato da mikeselectricstuff, 14400 e 28800 bps sono stati introdotti come 1,5 x 9600 e 1,5 x 19200 quando le velocità dei modem non potevano “al momento non possono essere raddoppiati, ma vengono usati raramente.

Commenti

  • Non essere pedante, ma il programma può supportare solo le velocità lhardware lo consente. Potrebbe anche non preoccuparsi di chiedere ed elencare solo le velocità standard. Chiedendo al mio hardware, zip(*serial.Serial('COM10').getSupportedBaudrates()), risponde: (50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, 57600, 115200)
  • Ho usato un accoppiatore acustico half duplex a 600 bit / s negli anni ottanta. 75 bit / s è stato utilizzato nel sistema BTX tedesco nella direzione di upload per molto tempo, il download era a 1200 bit / s.
  • Ho ‘ ho anche visto 62,5 kbaud. In realtà, dipende anche dal tuo clock principale, puoi calcolare quali baudrate porteranno a un errore sufficientemente basso.

Risposta

Per molto tempo, è stato comune usare sottomultipli di 115.200 per la comunicazione: potenza di due sottomultipli di 38.400 oppure 57.600 o 115.200. La maggior parte dellhardware del PC supporta queste velocità. Alcuni hardware per PC possono supportare 230.400 o 460.800. Si noti che molti controller incorporati come velocità di trasmissione dati che sono sub-multipli delle proprie velocità di clock e alcuni chip da USB a seriale possono supportare qualsiasi sottomultiplo intero di 3.000.000 bps, quindi velocità come 1.000.000 bps o 1.500.000 bps diventeranno probabilmente più comuni per dispositivi da collegare ai PC tramite chip USB.

A proposito, unaltra velocità degna di nota: 31,250 bps è la velocità utilizzata per il MIDI standard.

Risposta

Il PC IBM originale aveva un UART 8250. Questo ha richiesto un clock di 1,8432 MHZ e diviso per un numero intero per generare il suo clock interno, e quel clock funziona a 16 cicli per bit.

Limpostazione 1 nel registro del divisore ti fa 115.200, 2 ottiene 57.600, 3 ottiene 38.400, 6 ottiene 19.200, ecc.

La soluzione migliore è utilizzare un clock che funziona a un multiplo di 1,8432 MHz con il DSPIC.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *