Automatic baud rate detection
This article includes a list of general references, but it lacks sufficient corresponding inline citations. (March 2013) |
Automatic baud rate detection (ABR, autobaud) refers to the process by which a receiving device (such as a modem) determines the speed, code level, start bit, and stop bits of incoming data by examining the first character, usually a preselected sign-on character (syncword) on a UART connection. ABR allows the receiving device to accept data from a variety of transmitting devices operating at different speeds without needing to establish data rates in advance.
During the autobaud process, the baud rate of received character stream is determined by examining the received pattern and its timing, and the length of a start bit. These type of baud rate detection mechanism are supported by many hardware chips including processors such as STM32 MPC8280, MPC8360, and so on.
When start bit length is used to determine the baud rate, it requires the character to be odd since UART sends LSB bit first. Often symbols 'a' or 'A' (0x61 or 0x41) are used. For example, the MPC8270 SCC tries to detect the length of the UART start bit for autobaud.
Most modems seen in market currently support autobaud. Before receiving any input data, most modems use a default baud rate of 9600 for output. For example, the following modems have been verified for autobaud and default output baud rate 9600:
- USRobotics USR5686G 56K Serial Controller Fax modem
- Hayes V92 External modem
- Microcom DeskPorte 28.8P
The baud rate of modems are adjusted automatically after receiving input data by the autobaud process.
Many protocols begin each frame with a preamble of alternating 1 and 0 bits that can be used for automatic baud rate detection. For example, the TI PGA460 uses a 'U' ( 0x55 ) sync byte for automatic baud rate detection as well as frame synchronization,[1] and so does the LIN header (Local Interconnect Network#Header). For example, the UART-based FlexWire protocol begins each frame with a 'U' (0x55) sync byte. FlexWire receivers use the sync byte to precisely set their UART bit-clock frequency without a high-precision oscillator.[2] For example, the Ethernet preamble contains 56 bits of alternating 1 and 0 bits for synchronizing bit clocks.
See also
References
- ^ "Sync Field" section of "PGA460 Ultrasonic Signal Processor and Transducer Driver". 2017. p. 35.
- ^ Texas Instruments. "TPS929121-Q1 12-Channel Automotive 40-V High-Side LED Driver With FlexWire". 2021. p. 37 and p. p. 39.
- "17.2 Autobaud Operation on a UART in MPC8280 PowerQUICC™ II Family Reference Manual" http://www.nxp.com/files/netcomm/doc/ref_manual/MPC8280RM.pdf
- "Automatic Baud Rate Detection on the MSP430" https://web.archive.org/web/20161026080239/http://www.ti.com/lit/an/slaa215/slaa215.pdf
- "How to implement “auto baud rate detection” feature on Cortex-M3" https://stackoverflow.com/q/38979647
- "mpc8270 SCC2 UART issue" https://community.nxp.com/message/906833