Hvilke standard UART-priser er det?

Jeg vet 9600, 19200, 38400, 57600, 115200 og 1,8432 Mbaud, men ingen andre. Hvorfor brukes disse verdiene, og dobler det bare hver gang, eller skjer det noe mer komplekst (for eksempel er 38400 firdoblet ikke 115200 baud?)

Grunnen til at jeg stiller dette spørsmålet er at jeg designe noe som måtte samhandle med en rekke forskjellige baudrate. Det vil initialiseres i 9600, og deretter bytte til en bestemt baud rate. Men jeg kan ikke støtte vilkårlige priser fordi dsPIC33F jeg bruker ikke støtter vilkårlige priser som den er begrenset til en 16-biters BRG-nedteller. Det ligner mange andre prosessorer i denne forbindelse.

Kommentarer

  • I praksis er en 16-biters teller pluss pre / post-skalere mer enn tilstrekkelig for å få » nær nok » til vilkårlige overføringshastigheter. UART-serie kan tåle små baudrate-uoverensstemmelser.
  • uart starter midt på START-biten og må holde seg nær midten av STOP-biten etter seriellisering av 7-10 bits. Noe som gir en minimal klokkepresisjon på rundt 2-3%, helst bedre å håndtere støy, jitter, avvik i kildefrekvens …

Svar

Det startet for lenge siden med teletyper – jeg tror 75 baud . Så har det for det meste blitt doblet siden, med noen få brøkdeler (x1,5) multipler, for eksempel 28 800, hvor det var begrensninger for telefonlinjemodemteknologi som ikke lot den doble.

Standard krystallverdier kom fra disse tidlige baudratene, og deres tilgjengelighet y dikterer fremtidige renter. F.eks.

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

De fleste UARTS bruker en klokke på \ $ 2 ^ n \ ganger 16 \ $ av baudratet, mer moderne deler (f.eks. NXP LPC) har brøkdelere for å få et bredere spekter ved å bruke ikke-binære multipler.

Andre vanlige standarder er 31 250 (MIDI) og 250 K (DMX), begge sannsynligvis valgt som fine multipler av «runde» klokker som 1MHz osv.

Kommentarer

  • Jeg tror ikke ‘ t tenker brøkdelere er for å få ikke-standard bithastigheter, men heller standard bithastigheter fra ikke-standard MCU-klokkefrekvenser.
  • Jeg pusset opp to-årige 1926-teletyper, tilbake på college (1976) og ja, de løp på omtrent 75 baud. De ble merket som baudot-teletyper. Koblet til 110vac og en motor ga timingen, med elektrisk forbindelse mellom dem. Jeg la dem i bensin for å rense dem. (Gi meg en pause – jeg var 18. Men det fungerte!) Ctrl-G ringte en ærlig til godhetsklokke til den andre. Alias, jeg husker ikke ‘ ikke engang hvem jeg ga dem bort til. 🙁 Så ja, du ‘ d skriver på det mekaniske tastaturet, det vil mekanisk serieisere tastetrykkene dine og lage og bryte en kontakt som den andre siden leser.
  • Yay, the Roaring ‘ 20 ‘ s! Hvilken kvalitetsteknologi som skal vare i 50 år, og avsluttes i John Silva ‘ s skur i Hayward, California.
  • @DougNull Beklager bump – Spørsmål for 115200bps. Så du tok IC-klokke (7.3728MHz) og delte den med det ? Hvordan fikk du 64?

Svar

RealTerm, et freeware Windows-terminalprogram, viser disse UART-prisene i Baud-menyen:

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

Men disse er faktisk bits per sekund (bps), ikke baud – se nedenfor.

110 baud ble brukt av 8-nivå teletyper som ASR-33. Jeg er ikke klar over hvor 150 Baud ble brukt, men det er en dobling på 75 baud, ofte oss ed (sammen med 60 baud) for TTYer med 5 nivåer.

300 bps var standarden for de første mye brukte telefonmodemene på 1960-tallet. Et antall terminaler på 30 tegn per sekund dukket opp samtidig.

Over 300 bps / 300 baud, som brukte enkel frekvensskiftnøkkel (FSK), tallene for bps og baud (symboler eller toner per sekund ) er ikke det samme. For eksempel kjører et 1200 bps modem faktisk på 600 baud, og et 4800 bps modem kjører på 1600 baud. Se tabellen under båndbredder i denne artikkelen . Forskjellen er at i tillegg til å bruke et visst antall tonepulser per sekund, brukes faseskifttasting og andre metoder for å trekke ut ekstra båndbredde fra samme baud rate for å få høyere og høyere bps. (Så et 56K-modem kjører faktisk bare med 8000 baud.)

Som du kan se, startet listen over UART-priser i det vesentlige ved 75 og ble doblet kontinuerlig (hoppet over 600), til den kom til 38400, hvor den ble ganget med 1,5 for å få 57600.56K bps er grensen for en analog telefonlinje. De høyere hastighetene 115200 oppover (nok en gang dobling fra 57600) brukes til hardkoblede tilkoblinger.

Som mikeselectricstuff nevnte, ble 14400 og 28800 bps introdusert som 1,5 x 9600 og 1,5 x 19200 når modemhastigheter ikke kunne «t blir doblet den gangen, men brukes sjelden lenger.

Kommentarer

  • Ikke for å være pedantisk, men programmet kan bare støtte hvilke hastigheter maskinvaren tillater det. Det bryr seg kanskje ikke engang å spørre og bare oppgir standardhastigheter. Når jeg spør maskinvaren min, zip(*serial.Serial('COM10').getSupportedBaudrates()), svarer den: (50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, 57600, 115200)
  • Jeg brukte en akustisk kobling på 600 bit / s halv dupleks på åttitallet. 75 bit / s ble brukt i det tyske BTX-systemet i opplastingsretningen i lang tid, nedlastingen var på 1200 bit / s.
  • Jeg ‘ har også sett 62,5 kbaud. Egentlig avhenger det også av hovedklokken din, du kan beregne hvilke baudrates som vil føre til en tilstrekkelig lav feil.

Svar

I lang tid har det vært vanlig å bruke submultipler på 115 200 for kommunikasjon – enten power-of-two submultiple på 38 400 eller ellers 57 600 eller 115 200. De fleste PC-maskinvarer støtter disse prisene. Noe PC-maskinvare kan støtte 230.400 eller 460.800. Vær oppmerksom på at mange innebygde kontrollere som datahastigheter som er delmultipler av deres egen klokkehastighet, og noen USB-til-serielle brikker kan støtte ethvert heltallsundermultipel på 3.000.000 bps, så hastigheter som 1.000.000 bps eller 1.500.000 bps vil trolig bli mer vanlig for enheter for å koble til PC-er via USB-brikker.

BTW, en annen hastighet som er verdt å nevne: 31 250 bps er hastigheten som brukes til standard MIDI.

Svar

Den originale IBM-PC-en hadde en 8250 UART. Dette tok en 1.8432 MHZ-klokke og delte den med noe heltall for å generere den interne klokken, og den klokken går på 16 sykluser til biten.

Innstilling 1 i delingsregisteret gir deg 115.200, 2 får 57.600, 3 får 38 400, 6 får 19 200 osv.

Det beste alternativet er å bruke en klokke som går på et multiplum av 1,8432 MHz med DSPIC.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *