Jag vet 9600, 19200, 38400, 57600, 115200 och 1,8432 Mbaud, men inga andra. Varför används dessa värden, och fördubblas det bara varje gång eller är det något mer komplicerat som händer (till exempel är 38400 fyrdubblat inte 115200 baud?)
Anledningen till att jag ställer denna fråga är att jag utforma något som kan behöva interagera med en mängd olika överföringshastigheter. Det initialiseras 9600 och byter sedan till en specifik överföringshastighet. Men jag kan inte stödja godtyckliga priser eftersom dsPIC33F jag använder stöder inte godtyckliga priser som den är begränsad till en 16-bitars BRG-nerräknare. Det liknar i detta avseende många andra processorer.
Kommentarer
- I praktiken är en 16-bitars räknare plus pre / post-skalare mer än tillräcklig för att få ” tillräckligt nära ” till godtyckliga överföringshastigheter. UART-serier kan tolerera små överföringshastigheter.
- uart börjar i mitten av START-biten och måste stanna nära mitten av STOP-biten efter att ha serierat 7-10 bitar. Vilket gör en minimal klockprecision på cirka 2-3%, helst bättre för att hantera buller, jitter, avvikelser i källfrekvens …
Svar
Det började för länge sedan med teletyper – jag tror 75 baud . Sedan har det mestadels fördubblats sedan dess, med några bråkdelar (x1,5) multiplar, till exempel 28 800, där det fanns begränsningar för telefonlinjemodemteknik som inte helt tillät det att fördubblas.
Standardkristallvärden kom från dessa tidiga baudrates och deras tillgänglighet y dikterar framtida räntor. Till exempel
\ $ \ begin {align} {7.3728 \, \ mathrm {MHz} \ över 16} & = 460 800 \; \ text {baud} \\\\ {7.3728 \, \ mathrm {MHz} \ över 64} & = 115,200 \, \ text {baud}. \ slut {align} \ $
De flesta UARTS använder en klocka med \ $ 2 ^ n \ gånger 16 \ $ av baudrat, mer moderna delar (t.ex. NXP LPC) har bråkdelare för att få ett bredare utbud genom att använda icke-binära multiplar.
Andra vanliga standarder är 31 250 (MIDI) och 250 K (DMX), båda troligen valda som fina multiplar av ”runda” klockor som 1MHz etc.
Kommentarer
- Jag tänker inte ’ tänker inte bråkdelare är för att få icke-standardbithastigheter, utan snarare standardbithastigheter från icke-standardiserade MCU-klockfrekvenser.
- Jag renoverade tvååriga 1926-teletyper, tillbaka på college (1976) och ja de sprang med cirka 75 baud. De var märkta baudot-teletyper. Ansluten till 110vac och en motor gav tidpunkten, med elektrisk anslutning mellan dem. Jag dunkade dem i bensin för att städa dem. (Ge mig en paus – jag var 18. Men det fungerade!) Ctrl-G ringde en ärlig till godhetsklocka på den andra. Ack, jag minns inte ens ’ vem jag gav dem bort till. 🙁 Så, ja, du ’ skriver du på det mekaniska tangentbordet, det skulle mekaniskt serieera dina tangenttryckningar och skapa och bryta en kontakt som den andra sidan läser.
- Yay, the Roaring ’ 20 ’ s! Vilken kvalitetsteknik som ska hålla i 50 år, och sluta i John Silva ’ s skjul i Hayward, Kalifornien.
- @DougNull Ledsen för bump – Fråga för 115200bps. Så du tog IC-klocka (7.3728MHz) och delade den med vad ? Hur fick du 64?
Svar
RealTerm, ett freeware Windows-terminalprogram, listar dessa UART-priser i sin Baud-meny:
110, 150, 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600
Men dessa är faktiskt bitar per sekund (bps), inte baud – se nedan.
110 baud användes av 8-nivå teletyper som ASR-33. Jag vet inte var 150 Baud användes, men det är en fördubbling av 75 baud, vanligtvis vi ed (tillsammans med 60 baud) för TTYs med 5 nivåer.
300 bps var standarden för de första allmänt använda telefonmodem på 1960-talet. Ett antal terminaler på 30 tecken per sekund uppträdde samtidigt.
Över 300 bps / 300 baud, som använde enkel frekvensskiftnyckling (FSK), siffrorna för bps och baud (symboler eller toner per sekund ) är inte samma. Till exempel körs ett 1200 bps-modem faktiskt vid 600 baud och ett 4800 bps-modem körs med 1600 baud. Se tabellen under bandbredd i denna artikel . Skillnaden beror på att förutom att använda ett visst antal tonpulser per sekund, används fasförskjutningsknappning och andra metoder för att extrahera ytterligare bandbredd från samma baud för att få högre och högre bps. (Så ett 56K-modem körs faktiskt bara med 8000 baud.)
Som du kan se började listan över UART-priser i huvudsak vid 75 och fördubblades kontinuerligt (hoppade över 600) tills 38400, där den multiplicerades med 1,5 för att få 57600.56K bps är gränsen för en analog telefonlinje. De högre hastigheterna 115200 uppåt (återigen fördubblas från 57600) används för trådbundna anslutningar.
Som mikeselectricstuff nämnts introducerades 14400 och 28800 bps som 1,5 x 9600 och 1,5 x 19200 när modemets hastigheter inte kunde ”t fördubblas för tillfället, men används sällan längre.
Kommentarer
- Inte för att vara pedantisk, men programmet kan bara stödja vilka hastigheter hårdvaran tillåter. Det kanske inte ens bry sig om att fråga och bara lista upp standardhastigheterna. Fråga min hårdvara,
zip(*serial.Serial('COM10').getSupportedBaudrates())
, det svarar:(50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, 57600, 115200)
- Jag använde en 600 bit / s halv duplex akustisk koppling på åttiotalet. 75 bit / s användes i det tyska BTX-systemet i uppladdningsriktningen under lång tid, nedladdningen var 1200 bit / s.
- Jag ’ har också sett 62,5 kbaud. Egentligen beror det också på din huvudklocka, du kan beräkna vilka baudrates som leder till ett tillräckligt lågt fel.
Svar
Under lång tid har det varit vanligt att använda submultiplar på 115 200 för kommunikation – antingen power-of-two submultiples på 38 400 eller annars 57 600 eller 115 200. De flesta PC-hårdvaror stöder dessa priser. Viss PC-maskinvara kan stödja 230 400 eller 460 800. Observera att många inbäddade styrenheter som datahastigheter som är delmultiplar av deras egna klockhastigheter, och vissa USB-till-seriella chips kan stödja alla heltal delmultipel på 3 000 000 bps, så hastigheter som 1 000 000 bps eller 1 500 000 bps kommer förmodligen att bli vanligare för enheter för att ansluta till datorer via USB-chips.
BTW, en annan hastighet som är värt att nämna: 31 250 bps är den hastighet som används för standard MIDI.
Svar
Den ursprungliga IBM-datorn hade en 8250 UART. Detta tog en 1,8432 MHZ-klocka och delade den med något heltal för att generera dess interna klocka, och den klockan går vid 16 cykler till biten.
Inställning 1 i divisorregistret ger dig 115.200, 2 får 57.600, 3 får 38 400, 6 får 19 200, etc.
Det bästa du använder är att använda en klocka som går med någon multipel av 1,8432 MHz med DSPIC.