61
\$\begingroup\$

I know 9600, 19200, 38400, 57600, 115200 and 1.8432 Mbaud, but no others. Why are these values used, and is it simply doubling each time or is there something more complex going on (for example, 38400 quadrupled is not 115200 baud?)

The reason I ask this question is I'm designing something which may have to interact with a variety of different baud rates. It will initialise in 9600, and then switch to a specific baud rate. But I can't support arbitrary rates because the dsPIC33F I am using does not support arbitrary rates as it is limited to a 16-bit BRG down counter. It's similar in this regard to many other processors.

\$\endgroup\$
2
  • 2
    \$\begingroup\$ In practice a 16 bit counter plus pre/post scalers is more than sufficient to get "close enough" to arbitrary baud rates. UART serial can tolerate slight baud rate mismatches. \$\endgroup\$ Commented Jul 30, 2017 at 10:33
  • 1
    \$\begingroup\$ The uart starts in the middle of the START bit and must stay near the middle of the STOP bit after serializing 7-10 bits. Which makes a minimal clock precision of around 2-3%, preferably better to handle noise, jitter, deviations in the source frequency... \$\endgroup\$
    – Grabul
    Commented Mar 16, 2019 at 0:19

7 Answers 7

57
\$\begingroup\$

It started a long long time ago with teletypes — I think 75 baud. Then it's been mostly doubling ever since, with a few fractional (x1.5) multiples, for example 28,800, where there were constraints on phone-line modem tech that didn't quite allow it to double.

Standard crystal values came from these early baudrates, and their availability dictates future rates. E.g.,

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

Most UARTS use a clock of \$2^n \times 16\$ of the baudrate, more modern parts (e.g. NXP LPC) have fractional dividers to get a wider range by using non-binary multiples.

Other common standards are 31,250 (MIDI) and 250K (DMX), both likely chosen as nice multiples of 'round' clocks like 1MHz etc.

\$\endgroup\$
4
  • 7
    \$\begingroup\$ I don't think fractional dividers are for getting nonstandard bitrates, but rather standard bitrates from nonstandard MCU clock frequencies. \$\endgroup\$
    – Johan.A
    Commented Aug 12, 2013 at 10:23
  • 8
    \$\begingroup\$ I refurbished two year 1926 teletypes, back in college (1976) and yes they ran at about 75 baud. They were labeled baudot teletypes. Plugged into 110vac and a motor provided the timing, with electrical connection between them. I dunked them in gasoline to clean them. (Give me a break -- I was 18. But it worked!) Ctrl-G rang an honest to goodness bell at the other. Alas, I don't even remember who I gave them away to. :-( So, yeah, you'd type on the mechanical keyboard, it would mechanically serialize your keystrokes, and make-and-break a contact which the other side read. \$\endgroup\$
    – Doug Null
    Commented Jan 23, 2017 at 22:17
  • 1
    \$\begingroup\$ Yay, the Roaring '20's! What quality technology to last 50 years, and wind up in John Silva's shed in Hayward, California. \$\endgroup\$
    – Doug Null
    Commented Jan 23, 2017 at 22:17
  • \$\begingroup\$ @DougNull Sorry for bump - Question for 115200bps. So you took IC clock(7.3728MHz) and divided it by what? How did you get 64? \$\endgroup\$
    – Pararera
    Commented Nov 18, 2020 at 14:17
44
\$\begingroup\$

RealTerm, a freeware Windows terminal program, lists these UART rates in its Baud menu:

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

However these are actually bits per second (bps), not baud -- see below.

110 baud was used by 8-level Teletypes like the ASR-33. I'm not aware where 150 Baud was used, but it is a doubling of 75 baud, commonly used (along with 60 baud) for 5-level TTYs.

300 bps was the standard for the first widely-used telephone modems in the 1960's. A number of 30 character per second terminals appeared at the same time.

Above 300 bps/300 baud, which used simple frequency shift keying (FSK), the figures for bps and baud (symbols or tones per second) are not the same. For example, a 1200 bps modem actually runs at 600 baud, and a 4800 bps modem runs at 1600 baud. Refer to the table under Bandwidths in this article. The difference is because in addition to using a certain number of tone pulses per second, phase-shift keying and other methods are used to extract additional bandwidth from the same baud rate to get higher and higher bps. (So a 56K modem is actually only running at 8000 baud.)

As you can see, the list of UART rates essentially started at 75 and continually doubled (skipping 600), until getting to 38400, where it was multiplied by 1.5 to get 57600. 56K bps is the limit for an analog telephone line. The higher rates 115200 upwards (once again doubling starting at 57600) are used for hard-wired connections.

As mikeselectricstuff mentioned, 14400 and 28800 bps were introduced as 1.5 x 9600 and 1.5 x 19200 when modems speeds couldn't be doubled at the time, but are seldom used anymore.

\$\endgroup\$
3
  • 9
    \$\begingroup\$ Not to be pedantic, but the program can only support what speeds the hardware allows. It may not even bother asking and just list off the standard speeds. Asking my hardware, zip(*serial.Serial('COM10').getSupportedBaudrates()), it replies: (50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, 57600, 115200) \$\endgroup\$
    – Nick T
    Commented Jan 21, 2011 at 22:44
  • 3
    \$\begingroup\$ I used a 600 bit/s half duplex acoustic coupler in the eighties. 75 bit/s was used in the german BTX system in the upload direction for a long time, download was at 1200 bit/s. \$\endgroup\$
    – starblue
    Commented Jan 22, 2011 at 11:04
  • 3
    \$\begingroup\$ I've also seen 62.5 kbaud. Actually, it also depends on your main clock, you can calculate what baudrates will lead to a sufficiently low error. \$\endgroup\$
    – vsz
    Commented Jul 16, 2012 at 12:06
8
\$\begingroup\$

For a long time, it has been common to use submultiples of 115,200 for communication--either power-of-two submultiples of 38,400 or else 57,600 or 115,200. Most PC hardware supports those rates. Some PC hardware can support 230,400 or 460,800. Note that many embedded controllers like data rates which are sub-multiples of their own clock speeds, and some USB-to-serial chips can support any integer submultiple of 3,000,000bps, so speeds like 1,000,000bps or 1,500,000bps will probably become more common for devices to connect to PCs via USB chips.

BTW, one other rate worth mentioning: 31,250bps is the rate used for standard MIDI.

\$\endgroup\$
0
6
\$\begingroup\$

The original IBM PC had a 8250 UART. This took a 1.8432 MHZ clock and divided that by some integer to generate its internal clock, and that clock runs at 16 cycles to the bit.

Setting 1 in the divisor register gets you 115,200, 2 gets 57,600, 3 gets 38,400, 6 gets 19,200, etc.

Your best bet is using a clock that runs at some multiple of 1.8432 MHz with the DSPIC.

\$\endgroup\$
1
\$\begingroup\$

FTDI chips baudrates are based on a 3Mhz reference clock which is then divided down:

reg divider baudrate
10,27 10000 300
88,13 5000 600
C4,09 2500 1,200
E2,04 1250 2,400
71,02 625 4,800
38,41 312.5 9,600
D0,80 208.25 14,406
9C,80 156.25 19,200
4E,C0 78.125 38,400
34,00 52 57,692
1A,00 26 115,384
0D,00 13 230,769
06,40 6.5 461,538
03,80 3.25 923,076
\$\endgroup\$
0
\$\begingroup\$

In the past a telegrapher was tested for key strikes and accuracy. After much research and testing, in the days before memory, the accuracy dropped off very quickly ar rates more than 6.6 characters per second. In baudot code the communication standard was one start bit, five data bits and one and a half stop bits. 6.6 characters per second requires 49.5 bits per second. The world standard for telegraph and telex is 50 bits per second. At this line speed mechanical equipment to perform reliably at this speed. From there comes 50 baud and the standard rates. 50, 130, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 76800, 153600 etc. When it was developed the 5 bit baudot code was left alone and a new 8 bit fode was developed, that is where ASCII comes from.

\$\endgroup\$
2
  • 1
    \$\begingroup\$ Interesting insight into what could be the rationale for the lowest baudrate. For higher baudrates, the link to controller’s crystal frequency is a more logical explanation \$\endgroup\$
    – NoumanQ
    Commented Mar 11, 2021 at 16:34
  • 2
    \$\begingroup\$ What about the Teletype ASR-33? It was 110 baud. I don't think your list is authoritative, perhaps you would like to provide a citation. \$\endgroup\$ Commented Mar 11, 2021 at 19:37
0
\$\begingroup\$

And just a footnote, DMX (for stage and theater lighting), usually sent over RS-485 using microphone cables or twisted pair, is at 250,000 baud. This is not a "standard" speed and to the best of my knowledge, the only chipsets that support it are the FTDI even though DMX is a common and popular protocol.

\$\endgroup\$
1
  • 1
    \$\begingroup\$ Unconventional baud rates are achievable by CPUs which support configurable baud rates (for example TI's TM4C family). \$\endgroup\$
    – Velvet
    Commented Oct 26, 2022 at 6:00

Not the answer you're looking for? Browse other questions tagged or ask your own question.