Ce tarife standard UART există?

Știu 9600, 19200, 38400, 57600, 115200 și 1.8432 Mbaud, dar nu altele. De ce se utilizează aceste valori și se dublează pur și simplu de fiecare dată sau se întâmplă ceva mai complex (de exemplu, 38400 cvadruplat nu este 115200 baud?)

Motivul pentru care pun această întrebare este „m proiectarea a ceva care poate să interacționeze cu o varietate de rate de baud diferite. Se va inițializa în 9600 și apoi va trece la o rată de baud specifică. Dar nu pot suporta rate arbitrare deoarece dsPIC33F pe care îl folosesc nu acceptă rate arbitrare ca este limitat la un contor de 16 biți BRG. În acest sens, este similar cu multe alte procesoare.

Comentarii

  • În practică, un contor de 16 biți plus scalatori pre / post este mai mult decât suficient pentru a obține ” suficient de aproape ” la rate de transfer arbitrare. Serialul UART poate tolera nepotriviri ușoare ale ratei de transmisie.
  • uart începe la mijlocul bitului START și trebuie să rămână aproape de mijlocul bitului STOP după serializarea 7-10 biți. Ceea ce face o precizie minimă a ceasului de aproximativ 2-3%, de preferință mai bună pentru a gestiona zgomotul, jitterul, abaterile frecvență sursă …

Răspuns

A început cu mult timp în urmă cu teletipuri – cred că 75 baud Apoi, s-a dublat în cea mai mare parte de atunci, cu câțiva multipli fracționați (x1,5), de exemplu 28,800, în care existau constrângeri privind tehnologia modemului de linie telefonică care nu îi permitea să se dubleze.

Valorile standard ale cristalelor provin de la aceste baudrate timpurii și disponibilitatea lor y dictează rate viitoare. De exemplu,

\ $ \ begin {align} {7.3728 \, \ mathrm {MHz} \ over 16} & = 460.800 \; \ text {baud} \\\\ {7.3728 \, \ mathrm {MHz} \ over 64} & = 115.200 \, \ text {baud}. \ end {align} \ $

Majoritatea UARTS utilizează un ceas de \ $ 2 ^ n \ ori 16 \ $ al ratei de transmisie, piesele mai moderne (de ex. NXP LPC) au divizoare fracționate pentru a obține o gamă mai largă utilizând multipli non-bari.

Alte standarde comune sunt 31.250 (MIDI) și 250K (DMX), ambele probabil alese ca multipli frumoși de ceasuri „rotunde”, cum ar fi 1 MHz etc.

Comentarii

  • Nu ‘ nu cred divizoare fracționare sunt pentru obținerea de rate de biți non-standard, ci mai degrabă de rate de biți standard de la frecvențe de ceas non-standard MCU.
  • Am recondiționat teletipurile de doi ani 1926, înapoi la facultate (1976) și da, au rulat la aproximativ 75 baud. Au fost etichetați teletipuri baudot. Conectat la 110vac și un motor a asigurat sincronizarea, cu conexiune electrică între ele. Le-am scufundat în benzină pentru a le curăța. (Dă-mi o pauză – aveam 18 ani. Dar a funcționat!) Ctrl-G a sunat la celălalt. Din păcate, nu îmi amintesc nici măcar cui le-am dat. 🙁 Deci, da, ‘ d tastați pe tastatura mecanică, aceasta va serializa în mod mecanic apăsările de tastă și ar crea și rupe un contact pe care cealaltă parte l-a citit.
  • Da, Roaring ‘ 20 ‘ s! Ce tehnologie de calitate să durezi 50 de ani și să sfârșești în John Silva ‘ s-a revărsat în Hayward, California.
  • @DougNull Ne pare rău pentru bump – Întrebare pentru 115200bps. Deci, ați luat ceasul IC (7,3728 MHz) și l-ați împărțit la ce ? Cum ați obținut 64?

Răspuns

RealTerm, un program terminal Windows freeware, listează aceste tarife UART în meniul său Baud:

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

Cu toate acestea acestea sunt de fapt biți pe secundă (bps), nu baud – vezi mai jos.

110 baud a fost folosit de teletipuri de 8 niveluri, cum ar fi ASR-33. Nu știu unde au fost folosiți 150 Baud, dar este o dublare de 75 baud, de obicei noi ed (împreună cu 60 baud) pentru TTY-uri pe 5 niveluri.

300 bps a fost standardul pentru primele modemuri telefonice utilizate pe scară largă în anii 1960. Un număr de 30 de caractere pe secundă au apărut în același timp.

Peste 300 bps / 300 baud, care foloseau tastarea simplă a frecvenței (FSK), cifrele pentru bps și baud (simboluri sau tonuri pe secundă) ) nu sunt la fel. De exemplu, un modem de 1200 bps rulează de fapt la 600 baud, iar un modem de 4800 bps rulează la 1600 baud. Consultați tabelul de sub Lățimi de bandă din acest articol . Diferența se datorează faptului că, pe lângă utilizarea unui anumit număr de impulsuri de ton pe secundă, tastarea cu schimbare de fază și sunt utilizate alte metode pentru a extrage lățimea de bandă suplimentară din același baud rata pentru a obține din ce în ce mai mare bps. (Așadar, un modem de 56K rulează de fapt doar la 8000 baud.)

După cum puteți vedea, lista tarifelor UART a început în esență la 75 și s-a dublat continuu (trecând peste 600), până ajunge la 38400, unde a fost multiplicat cu 1,5 pentru a obține 57600.56K bps este limita pentru o linie telefonică analogică. Ratele mai mari de 115200 în sus (încă o dată dublarea începând de la 57600) sunt utilizate pentru conexiunile cu cablu dur.

După cum s-a menționat chestia electrică mikes, 14400 și 28800 bps au fost introduși ca 1,5 x 9600 și 1,5 x 19200 când viteza modemurilor nu putea fi „nu poate fi dublat în acel moment, dar mai sunt rareori folosite.

Comentarii

  • Nu trebuie să fie pedant, dar programul poate suporta doar ce viteze hardware-ul permite. Este posibil să nu se deranjeze nici măcar să cer și doar să listez viteza standard. Întrebându-mi hardware-ul, zip(*serial.Serial('COM10').getSupportedBaudrates()), acesta răspunde: (50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, 57600, 115200)
  • Am folosit un cuplaj acustic semi-duplex de 600 biți / s în anii optzeci. 75 de biți / s a fost folosit în sistemul german BTX în direcția de încărcare pentru o lungă perioadă de timp, descărcarea a fost la 1200 biți / s.
  • Am ‘ văzut și 62,5 kbaud. De fapt, depinde și de ceasul principal, puteți calcula ce baudraturi vor duce la o eroare suficient de scăzută.

Răspuns

De mult timp, este comun să se utilizeze submultipli de 115.200 pentru comunicare – fie puterea a doi submultipli de 38.400, fie 57.600 sau 115.200. Majoritatea hardware-ului pentru PC acceptă aceste rate. Unele hardware-uri pentru PC pot suporta 230.400 sau 460.800. Rețineți că multe controlere încorporate, cum ar fi ratele de date, care sunt sub-multipli ai propriilor viteze de ceas, și unele cipuri USB-serie pot suporta orice submultiplu întreg de 3.000.000 bps, astfel încât viteze precum 1.000.000 bps sau 1.500.000 bps vor deveni probabil mai frecvente pentru dispozitive pentru conectarea la PC-uri prin cipuri USB.

BTW, o altă rată demnă de menționat: 31.250bps este rata utilizată pentru MIDI standard.

Răspuns

PC-ul original IBM avea un UART 8250. Aceasta a luat un ceas de 1,8432 MHZ și l-a împărțit pe un număr întreg pentru a-și genera ceasul intern, iar acel ceas rulează la 16 cicluri pe bit.

Setarea 1 în registrul divizorului vă aduce 115.200, 2 obține 57.600, 3 primește 38.400, 6 primește 19.200 etc.

Cel mai bun pariu este să folosiți un ceas care rulează la un multiplu de 1,8432 MHz cu DSPIC.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *