Intel
®
81341 and 81342—UARTs
Intel
®
81341 and 81342 I/O Processors
Developer’s Manual
December 2007
886
Order Number: 315037-002US
15.3.5
Auto-Baud-Rate Detection
Each UART supports auto-baud-rate detection. When enabled, UART counts the number
of 33.334 MHz clock cycles within the start-bit pulse. This number is then written into
the Auto-Baud-Count register (ACR) and used to calculate the baud rate. When ACR is
written, an Auto-Baud-Lock Interrupt is generated (when enabled), and the UART
automatically programs the Divisor Latch registers with the appropriate baud rate.
When preferred, the processor can read the Auto-Baud- Count register using this
information to program the Divisor-Latch registers with a baud rate calculated by the
processor. After the baud rate has been programmed, the processor is responsible to
verify that the predetermined characters (usually AT or at) are being received correctly.
When the UART programs Divisor Latch registers, users can choose between two auto-
baud calculation methods: table- and formula-based. The method is selected via bit
ABT of the Auto-Baud Control register (ABR). When the formula method is used, any
baudrate allowed in
can be programmed by the UART. This method works
well for higher baud rates, but could possibly fail below 28.8 kbps when the remote
transmitter’s actual baud rate differs by more than one percent of its target.
The table method is more immune to such errors since the table rejects uncommon
baud rates and rounds to the common ones. The table method allows any baud rate in
above 28.8 kbps. Below 28.8 kbps only baud rates of 19200, 14400, 9600,
4800, 1200, and 300 baud can be programmed by UART. Some typical values for
Divisor and corresponding baud rates are provided in
. Baud rates above
3600 baud require only Divisor Latch Low Register to be programmed, since Divisor
Latch High Register would be 0.
When the baud rate is detected, auto-baud circuitry disarms itself by clearing bit ABE of
the Auto-Baud Control register (ABR). To rearm the circuitry, ABE bit must be rewritten.
Note:
For the auto-baud-rate detection circuit to work correctly, the first data bit transmitted
after the start bit must be a logic ‘1’. When a logic ‘0’ is transmitted instead, the
autobaud circuit counts the zero as part of the start bit, with an incorrect baud rate
being programmed into DLL and DLH registers.
Equation 34.Baud Rate Formula
BaudRate
33.334MHz
16XDivisor
(
)
--------------------------
=
Table 560. Divisor Values for Typical Baud Rates
Baud Rate
Divisor
UART Rate
Error
115.2K
18
115.74K
0.47%
57.6K
36
57.87K
0.47%
38.4K
54
38.58K
0.47%
33.6K
62
33.60K
0.01%
28.8K
72
28.94K
0.47%
19.2K
109
19.29K
0.47%
14.4K
145
14.47K
0.47%
9600
217
9645
0.47%
4800
434
4800
0.01%
3600
579
3600
0.01%
2400
868
2400
0.01%
1200
1736
1200
0.01%
600
3472
600
0.01%
300
6944
300
0.01%