Analog Devices ADSP-SC58 Series Hardware Reference Manual page 795

Sharc+ processor
Table of Contents

Advertisement

UART Architectural Concepts
bit rate applied to the UART_RX pin automatically by an external device. It often uses the capture capabilities of the
timer to supervise the bit rate at run time. If the UART communicates with any device supplied by a weak clock
oscillator that drifts over time, the processor can then readjust its UART bit rate dynamically, as required.
Often, the processor uses autobaud detection for initial bit rate negotiations where it is most likely a slave device
waiting for the host to send a predefined autobaud character. This situation is common for UART booting. Do not
enable the UART_CTL.EN bit while autobaud detection is in-process, to prevent the UART from starting a receive
operation with incorrect bit rate matching. Alternatively, set the UART_CTL.LOOP_EN bit to disconnect the
UART from its UART_RX pin.
A software routine can detect the pulse widths of serial stream bit cells. The sample base of the timer is synchronous
with the UART operation (all derived from the same SCLK0_0). The UART uses pulse widths to calculate the bit
rate divider as follows:
Divisor = TIMER_TMR[n]_WID/16
To increase the number of timer counts and the resolution of the captured signal, do not measure just the pulse
width of a single bit. Instead, enlarge the pulse of interest over more bits. Traditionally, a NULL character (ASCII
0x00) is used in autobaud detection, as shown in the Autobaud Detection figure.
Figure 17-3: Autobaud Detection
Because the example frame encloses 8 data bits and 1 start bit, apply the following formula:
Divisor = TIMER_TMR[n]_WID/16
For processor-specific mapping of timer alternate capture inputs to the UARTs of the processor, see
NOTE:
"Width Capture (WIDCAP) Mode" in the "General-Purpose Timer (TIMER)" chapter.
Real receive signals often have asymmetrical falling and rising edges, and the sampling logic level is not exactly in the
middle of the signal voltage range. At higher bit rates, such pulse-width-based autobaud detection does not always
return adequate results without extra conditioning of the analog signal. Measure signal periods to work around this
issue.
For example, predefine the ASCII character "@" (0x40) as the autobaud detection character and measure the period
between two subsequent falling edges. As shown in the Autobaud Detection Character 0x40 figure, measure the pe-
riod between the falling edge of the start bit and the falling edge after bit 6. Since this period encloses 8 bits, apply
the following formula:
Divisor = TIMER_TMR[n]_PER/16
or:
• Divisor = TIMER_TMR[n]_PER>> 7, if UART_CLK.EDBO=0
17–8
(1–EDBO)
× Number of captured UART bits
S
0
1
2
3
FRAME WIDTH
(1–EDBO)
× 9
(1–EDBO)
× 8
ADSP-SC58x/ADSP-2158x SHARC+ Processor Hardware Reference
4
5
6
7
STOP

Advertisement

Table of Contents
loading

This manual is also suitable for:

Adsp-2158 series

Table of Contents