Hvilke standard UART-priser er der?

Jeg kender 9600, 19200, 38400, 57600, 115200 og 1,8432 Mbaud, men ingen andre. Hvorfor bruges disse værdier, og fordobles det simpelthen hver gang, eller foregår der noget mere komplekst (for eksempel er 38400 firdoblet ikke 115200 baud?)

Årsagen til, at jeg stiller dette spørgsmål er, at jeg “m designe noget, der muligvis skal interagere med en række forskellige baudhastigheder. Det initialiseres i 9600 og skifter derefter til en bestemt baudhastighed. Men jeg kan ikke understøtte vilkårlige satser, fordi den dsPIC33F, jeg bruger, ikke understøtter vilkårlige satser som det er begrænset til en 16-bit BRG down-tæller. Det ligner i denne henseende mange andre processorer.

Kommentarer

  • I praksis er en 16-bit tæller plus pre / post-skalere mere end tilstrækkelig for at få ” tilstrækkeligt tæt ” til vilkårlige baudhastigheder. UART-seriel kan tåle mindre baudrate-uoverensstemmelser.
  • uart starter midt på START-biten og skal forblive tæt på midten af STOP-bit efter serialisering af 7-10 bit, hvilket giver en minimal urpræcision på omkring 2-3%, helst bedre at håndtere støj, jitter, afvigelser i kildefrekvens …

Svar

Det startede for længe siden med teletyper – jeg tror 75 baud . Derefter er det for det meste blevet fordoblet lige siden med et par brøkdele (x1,5) multipler, for eksempel 28.800, hvor der var begrænsninger på telefonlinjemodemteknologi, der ikke helt tillod det at fordoble.

Standardkrystalværdier kom fra disse tidlige baudrates og deres tilgængelighed y dikterer fremtidige satser. F.eks.

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

De fleste UARTS bruger et ur på \ $ 2 ^ n \ gange 16 \ $ af baudratet, mere moderne dele (f.eks. NXP LPC) har brøkdelere for at få et bredere interval ved hjælp af ikke-binære multipler.

Andre almindelige standarder er 31.250 (MIDI) og 250K (DMX), begge sandsynligvis valgt som gode multipler af “runde” ure som 1MHz osv.

Kommentarer

  • Jeg tænker ikke ‘ t tænker brøkdelere er til at få ikke-standard bitrates, men snarere standard bitrates fra ikke-standard MCU-urfrekvenser.
  • Jeg renoverede to års 1926 teletyper, tilbage på college (1976) og ja, de løb med omkring 75 baud. De blev mærket baudot-teletyper. Tilsluttet 110vac, og en motor forsynede timingen med elektrisk forbindelse mellem dem. Jeg dunkede dem i benzin for at rense dem. (Giv mig en pause – jeg var 18. Men det fungerede!) Ctrl-G ringede en ærlig godhedsklokke til den anden. Ak, jeg husker ikke engang ‘ hvem jeg gav dem til. 🙁 Så ja, du ‘ skriver på det mekaniske tastatur, det vil mekanisk serieisere dine tastetryk og oprette og bryde en kontakt, som den anden side læser.
  • Yay, den brølende ‘ 20 ‘ s! Hvilken kvalitetsteknologi skal vare i 50 år og afslutte i John Silva ‘ s skur i Hayward, Californien.
  • @DougNull Undskyld for bump – Spørgsmål til 115200bps. Så du tog IC-ur (7.3728MHz) og delte det med hvad ? Hvordan fik du 64?

Svar

RealTerm, et freeware Windows-terminalprogram, viser disse UART-priser i sin Baud-menu:

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

Men disse er faktisk bit pr. sekund (bps), ikke baud – se nedenfor.

110 baud blev brugt af 8-niveau teletyper som ASR-33. Jeg er ikke klar over, hvor 150 Baud blev brugt, men det er en fordobling på 75 baud, ofte os ed (sammen med 60 baud) til TTYer med 5 niveauer.

300 bps var standarden for de første udbredte telefonmodem i 1960erne. Et antal terminaler på 30 tegn pr. Sekund dukkede op på samme tid.

Over 300 bps / 300 baud, som brugte simpel frekvensskiftnøgling (FSK), tallene for bps og baud (symboler eller toner pr. Sekund ) er ikke det samme. For eksempel kører et 1200 bps modem faktisk ved 600 baud, og et 4800 bps modem kører ved 1600 baud. Se tabellen under båndbredder i denne artikel . Forskellen skyldes, at udover at bruge et bestemt antal tonepulser pr. Sekund, bruges faseforskydningstastning og andre metoder til at udvinde yderligere båndbredde fra den samme baud rate for at få højere og højere bps. (Så et 56K-modem kører faktisk kun ved 8000 baud.)

Som du kan se, startede listen over UART-priser i det væsentlige ved 75 og blev fordoblet kontinuerligt (springer over 600), indtil de når op til 38400, hvor den blev ganget med 1,5 for at få 57600.56K bps er grænsen for en analog telefonlinje. De højere hastigheder 115200 opad (igen en fordobling fra og med 57600) bruges til hardwired-forbindelser.

Som mikeselectricstuff nævnt blev 14400 og 28800 bps introduceret som 1,5 x 9600 og 1,5 x 19200, når modemets hastigheder ikke kunne “t fordobles på det tidspunkt, men bruges sjældent længere.

Kommentarer

  • Ikke for at være pedantisk, men programmet kan kun understøtte hvilke hastigheder hardwaren tillader. Det gider måske ikke engang at spørge og bare viser standardhastighederne. Når jeg spørger min hardware, zip(*serial.Serial('COM10').getSupportedBaudrates()), svarer det: (50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, 57600, 115200)
  • Jeg brugte en akustisk kobling på 600 bit / s halv duplex i firserne. 75 bit / s blev brugt i det tyske BTX-system i uploadretningen i lang tid, download var på 1200 bit / s.
  • Jeg ‘ har også set 62,5 kbaud. Faktisk afhænger det også af dit hovedur, du kan beregne, hvilke baudrates der vil føre til en tilstrækkelig lav fejl.

Svar

I lang tid har det været almindeligt at bruge submultipler på 115.200 til kommunikation – enten power-of-to submultipler på 38.400 eller ellers 57.600 eller 115.200. De fleste pc-hardware understøtter disse priser. Nogle pc-hardware kan understøtte 230.400 eller 460.800. Bemærk, at mange indlejrede controllere som datahastigheder, der er submultipler af deres egen klokkehastighed, og nogle USB-til-serielle chips kan understøtte ethvert heltalsundermultipel på 3.000.000 bps, så hastigheder som 1.000.000 bps eller 1.500.000 bps vil sandsynligvis blive mere almindelige for enheder til at forbinde til pcer via USB-chips.

BTW, en anden hastighed, der er værd at nævne: 31,250bps er den hastighed, der bruges til standard MIDI.

Svar

Den originale IBM-pc havde en 8250 UART. Dette tog et 1.8432 MHZ-ur og dividerede det med et helt tal for at generere dets interne ur, og det ur kører ved 16 cyklusser til biten.

Indstilling 1 i deleregisteret får dig 115.200, 2 får 57.600, 3 får 38.400, 6 får 19.200 osv.

Din bedste chance er at bruge et ur, der kører med et multiplum på 1,8432 MHz med DSPIC.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *