Ik ken 9600, 19200, 38400, 57600, 115200 en 1.8432 Mbaud, maar geen andere. Waarom worden deze waarden gebruikt, en wordt het elke keer gewoon verdubbeld of is er iets ingewikkelder aan de hand (bijvoorbeeld 38400 verviervoudigd is niet 115200 baud?)
De reden dat ik deze vraag stel is dat ik “m iets ontwerpen dat mogelijk moet communiceren met een verscheidenheid aan verschillende baudrates. Het zal initialiseren in 9600 en dan overschakelen naar een specifieke baudrate. Maar ik kan geen willekeurige snelheden ondersteunen omdat de dsPIC33F die ik gebruik geen willekeurige snelheden ondersteunt zoals het is beperkt tot een 16-bits BRG-teller. Het is in dit opzicht vergelijkbaar met veel andere processors.
Reacties
- In de praktijk is een 16 bit teller plus pre / post scalers meer dan voldoende om ” dichtbij genoeg ” te krijgen voor willekeurige baudrates. UART serieel kan lichte baudrate-mismatches tolereren.
- De uart begint in het midden van de START-bit en moet in het midden van de STOP-bit blijven na het serialiseren van 7-10 bits. Dat maakt een minimale klokprecisie van ongeveer 2-3%, bij voorkeur beter om ruis, jitter en afwijkingen in de bronfrequentie …
Antwoord
Het begon lang geleden met teletypes – ik denk dat 75 baud . Daarna is het sindsdien grotendeels verdubbeld, met een paar fractionele (x1,5) veelvouden, bijvoorbeeld 28.800, waar er beperkingen waren op de telefoonlijnmodemtechnologie waardoor het niet helemaal verdubbelde.
Standaard kristalwaarden kwamen van deze vroege baudrates en hun beschikbaarheid y dicteert toekomstige tarieven. Bijv.
\ $ \ begin {align} {7.3728 \, \ mathrm {MHz} \ boven 16} & = 460,800 \; \ text {baud} \\\\ {7.3728 \, \ mathrm {MHz} \ meer dan 64} & = 115.200 \, \ text {baud}. \ end {align} \ $
De meeste UARTS gebruiken een klok van \ $ 2 ^ n \ maal 16 \ $ van de baudrate, modernere onderdelen (bijv. NXP LPC) hebben fractionele verdelers om een groter bereik te krijgen door niet-binaire veelvouden te gebruiken.
Andere veelgebruikte standaarden zijn 31.250 (MIDI) en 250K (DMX), beide waarschijnlijk gekozen als mooie veelvouden van “ronde” klokken zoals 1 MHz enz.
Reacties
- Ik denk niet ‘ niet aan fractionele verdelers zijn voor het verkrijgen van niet-standaard bitrates, maar eerder standaard bitrates van niet-standaard MCU-klokfrequenties.
- Ik heb twee jaar 1926 teletypes gereviseerd, terug op de universiteit (1976) en ja, ze draaiden op ongeveer 75 baud. Ze kregen het label baudot-teletypes. Aangesloten op 110vac en een motor zorgde voor de timing, met een elektrische verbinding ertussen. Ik heb ze in benzine gedompeld om ze schoon te maken. (Geef me een pauze – ik was 18. Maar het werkte!) Ctrl-G rinkelde een eerlijke bel bij de ander. Helaas, ik ‘ weet niet eens meer aan wie ik ze heb weggegeven. 🙁 Dus ja, je ‘ typt op het mechanische toetsenbord, het zou mechanisch je toetsaanslagen serialiseren en een contact maken en verbreken dat de andere kant las.
- Yay, the Roaring ‘ 20 ‘ s! Welke kwaliteitstechnologie gaat 50 jaar mee, en eindigt bij John Silva ‘ s schuur in Hayward, Californië.
- @DougNull Sorry voor hobbel – vraag voor 115200bps. Dus je nam de IC-klok (7,3728 MHz) en verdeelde deze door wat ? Hoe ben je aan 64 gekomen?
Answer
RealTerm, een freeware Windows-terminalprogramma, somt deze UART-tarieven op in zijn Baud-menu:
110, 150, 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600
Maar dit zijn eigenlijk bits per seconde (bps), niet baud – zie hieronder.
110 baud werd gebruikt door 8-niveau teletypes zoals de ASR-33. Ik weet niet waar 150 baud werd gebruikt, maar het is een verdubbeling van 75 baud, gewoonlijk ons ed (samen met 60 baud) voor TTYs met 5 niveaus.
300 bps was de standaard voor de eerste veelgebruikte telefoonmodems in de jaren 60. Een aantal terminals van 30 tekens per seconde verschenen tegelijkertijd.
Boven 300 bps / 300 baud, waarbij gebruik werd gemaakt van eenvoudige frequentieverschuivingssleutel (FSK), werden de cijfers voor bps en baud (symbolen of tonen per seconde ) zijn niet hetzelfde. Een modem van 1200 bps werkt bijvoorbeeld op 600 baud en een modem van 4800 bps op 1600 baud. Raadpleeg de tabel onder Bandbreedtes in dit artikel . Het verschil is dat, naast het gebruik van een bepaald aantal toonpulsen per seconde, faseverschuivingssleutel en andere methoden worden gebruikt om extra bandbreedte uit dezelfde baud te halen tarief om steeds hogere bps te krijgen. (Dus een 56K-modem draait eigenlijk maar op 8000 baud.)
Zoals je kunt zien, begon de lijst met UART-snelheden in wezen bij 75 en werd deze voortdurend verdubbeld (600 overslaan), tot 38400, waar het werd vermenigvuldigd met 1,5 om 57.600 te krijgen.56K bps is de limiet voor een analoge telefoonlijn. De hogere snelheden 115200 en hoger (wederom een verdubbeling vanaf 57600) worden gebruikt voor bedrade verbindingen.
Zoals mikeselectricstuff al zei, werden 14400 en 28800 bps geïntroduceerd als 1,5 x 9600 en 1,5 x 19200 wanneer modemsnelheden niet konden “worden op dat moment niet verdubbeld, maar worden zelden meer gebruikt.
Reacties
- Om niet pedant te zijn, maar het programma ondersteunt alleen welke snelheden de hardware staat het toe. Het vraagt misschien niet eens de moeite en vermeld gewoon de standaardsnelheden. Als ik mijn hardware vraag,
zip(*serial.Serial('COM10').getSupportedBaudrates())
, antwoordt het:(50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, 57600, 115200)
- Ik gebruikte een 600 bit / s half-duplex akoestische koppeling in de jaren 80. 75 bit / s werd lange tijd gebruikt in het Duitse BTX-systeem in de uploadrichting, de download was 1200 bit / s.
- Ik ‘ heb ook 62,5 kbaud gezien. Het hangt eigenlijk ook af van je hoofdklok, je kunt berekenen welke baudrates zullen leiden tot een voldoende lage fout.
Antwoord
Lange tijd is het gebruikelijk geweest om submultiples van 115.200 te gebruiken voor communicatie – ofwel power-of-two submultiples van 38.400 of anders 57.600 of 115.200. De meeste pc-hardware ondersteunt deze tarieven. Sommige pc-hardware ondersteunt 230.400 of 460.800. Merk op dat veel embedded controllers zoals datasnelheden die sub-veelvouden zijn van hun eigen kloksnelheden, en sommige USB-naar-serieel chips kunnen elk geheel getal deelveelvoud van 3.000.000bps ondersteunen, dus snelheden zoals 1.000.000bps of 1.500.000bps zullen waarschijnlijk vaker apparaten om via USB-chips op pcs aan te sluiten.
Trouwens, nog een ander tarief dat het vermelden waard is: 31.250 bps is het tarief dat wordt gebruikt voor standaard MIDI.
Antwoord
De originele IBM-pc had een 8250 UART. Hiervoor was een 1.8432 MHZ-klok nodig en die werd gedeeld door een geheel getal om de interne klok te genereren, en die klok loopt met 16 cycli voor de bit.
Instelling 1 in het delerregister levert 115.200 op, 2 krijgt 57.600, 3 krijgt 38.400, 6 krijgt 19.200, enz.
Je kunt het beste een klok gebruiken die met de DSPIC op een veelvoud van 1,8432 MHz loopt.