This document describes the universal asynchronous receiver/transmitter (UART) peripheral in the
TMS320DM643x Digital Media Processor (DMP) .
Notational Conventions
This document uses the following conventions.
•Hexadecimal numbers are shown with the suffix h. For example, the following number is 40
hexadecimal (decimal 64): 40h.
•Registers in this document are shown in figures and described in tables.
– Each register figure shows a rectangle divided into fields that represent the fields of the register.
Each field is labeled with its bit name, its beginning and ending bit numbers above, and its
read/write properties below. A legend explains the notation used for the properties.
– Reserved bits in a register figure designate a bit that is used for future device expansion.
Related Documentation From Texas Instruments
The following documents describe the TMS320DM643x Digital Media Processor (DMP). Copies of these
documents are available on the Internet at www.ti.com. Tip: Enter the literature number in the search box
provided at www.ti.com.
The current documentation that describes the DM643x DMP, related peripherals, and other technical
collateral, is available in the C6000 DSP product folder at: www.ti.com/c6000.
SPRU978 — TMS320DM643x DMP DSP Subsystem Reference Guide. Describes the digital signal
processor (DSP) subsystem in the TMS320DM643x Digital Media Processor (DMP).
Preface
SPRU997C–December 2009
Read This First
SPRU983 — TMS320DM643x DMP Peripherals Overview Reference Guide. Provides an overview and
briefly describes the peripherals available on the TMS320DM643x Digital Media Processor (DMP).
SPRAA84 — TMS320C64x to TMS320C64x+ CPU Migration Guide. Describes migrating from the
Texas Instruments TMS320C64x digital signal processor (DSP) to the TMS320C64x+ DSP. The
objective of this document is to indicate differences between the two cores. Functionality in the
devices that is identical is not included.
SPRU732 — TMS320C64x/C64x+ DSP CPU and Instruction Set Reference Guide. Describes the CPU
architecture, pipeline, instruction set, and interrupts for the TMS320C64x and TMS320C64x+ digital
signal processors (DSPs) of the TMS320C6000 DSP family. The C64x/C64x+ DSP generation
comprises fixed-point devices in the C6000 DSP platform. The C64x+ DSP is an enhancement of
the C64x DSP with added functionality and an expanded instruction set.
SPRU871 — TMS320C64x+ DSP Megamodule Reference Guide. Describes the TMS320C64x+ digital
signal processor (DSP) megamodule. Included is a discussion on the internal direct memory access
(IDMA) controller, the interrupt controller, the power-down controller, memory protection, bandwidth
management, and the memory and cache.
This document describes the universal asynchronous receiver/transmitter (UART) peripheral in the
TMS320DM643x Digital Media Processor (DMP) .
1.1Purpose of the Peripheral
The UART peripheral is based on the industry standard TL16C550 asynchronous communications
element, which in turn is a functional upgrade of the TL16C450. Functionally similar to the TL16C450 on
power up (single character or TL16C450 mode), the UART can be placed in an alternate FIFO
(TL16C550) mode. This relieves the CPU of excessive software overhead by buffering received and
transmitted characters. The receiver and transmitter FIFOs store up to 16 bytes including three additional
bits of error status per byte for the receiver FIFO.
The UART performs serial-to-parallel conversions on data received from a peripheral device and
parallel-to-serial conversion on data received from the CPU. The CPU can read the UART status at any
time. The UART includes control capability and a processor interrupt system that can be tailored to
minimize software management of the communications link.
The UART includes a programmable baud generator capable of dividing the UART input clock by divisors
from 1 to 65 535 and producing a 16 × reference clock for the internal transmitter and receiver logic. For
detailed timing and electrical specifications for the UART, see the device specific data manual.
User's Guide
SPRU997C–December 2009
1.2Features
The UART peripheral has the following features:
•Programmable baud rates up to 128 kbps (frequency pre-scale values from 1 to 65535)
•Fully programmable serial interface characteristics:
– 5, 6, 7, or 8-bit characters
– Even, odd, or no PARITY bit generation and detection
– 1, 1.5, or 2 STOP bit generation
•16-byte depth transmitter and receiver FIFOs:
– The UART can be operated with or without the FIFOs
– 1, 4, 8, or 14 byte selectable receiver FIFO trigger level for autoflow control and DMA
•DMA signaling capability for both received and transmitted data
•CPU interrupt capability for both received and transmitted data
•Operates in little-endian mode
•False START bit detection
•Line break generation and detection
•Internal diagnostic capabilities:
– Loopback controls for communications link fault isolation
– Break, parity, overrun, and framing error simulation
•Programmable autoflow control using CTS and RTS signals (not supported on all UARTs. See the
device-specific data manual for supported features.)
•Modem control functions using CTS and RTS signals (not supported on all UARTs. See the
device-specific data manual for supported features.)
Table 1 summarizes the capabilities supported on the UART. Note that the number of UARTs and their
supported features vary on each device, see the device-specific data manual for more details.
FeatureSupport
5, 6, 7 or 8-bit charactersSupported
Even, odd, or no PARITY bitSupported
1, 1.5, or 2 STOP bit generationSupported
Line break generation and detectionSupported
Internal loop backSupported
DMA sync events for both received and transmitted dataSupported
1, 4, 8, or 14 byte selectable receiver FIFO trigger levelSupported
Polling/InterruptSupported
Max speed 128 kbpsSupported
Modem control functions using CTS and RTSSupported
Autoflow control using CTS and RTSSupported
DTR and DSRNot supported
Ring indicationNot supported
Carrier detectionNot supported
Single-character transfer mode (mode 0) in DMA modeNot supported
(1)
www.ti.com
Table 1. UART Supported Features/Characteristics by Instance
(1)
(1)
Not supported on all UARTs. See the device-specific data manual for supported features.
1.3Functional Block Diagram
A functional block diagram of the UART is shown in Figure 1.
1.4Industry Standard(s) Compliance Statement
The UART peripheral is based on the industry standard TL16C550 asynchronous communications
element, which is a functional upgrade of the TL16C450. Any deviations in supported functions are
indicated in Table 1.
The information in this document assumes the reader is familiar with these standards.
The UART bit clock is sourced from the PLLC1 AUXCLK. It supports up to 128 kbps maximum data rate.
Figure 2 is a conceptual clock generation diagram for the UART. The processor clock generator receives
a signal from an external clock source and produces a UART input clock with a programmed frequency.
The UART contains a programmable baud generator that takes an input clock and divides it by a divisor in
the range between 1 and (216- 1) to produce a baud clock (BCLK). The frequency of BCLK is sixteen
times (16 ×) the baud rate; each received or transmitted bit lasts 16 BCLK cycles. When the UART is
receiving, the bit is sampled in the 8th BCLK cycle. The formula to calculate the divisor is:
Two 8-bit register fields (DLH and DLL), called divisor latches, hold this 16-bit divisor. DLH holds the most
significant bits of the divisor, and DLL holds the least significant bits of the divisor. For information about
these register fields, see Section 3. These divisor latches must be loaded during initialization of the UART
in order to ensure desired operation of the baud generator. Writing to the divisor latches results in two wait
states being inserted during the write access while the baud generator is loaded with the new value.
Figure 3 summarizes the relationship between the transferred data bit, BCLK, and the UART input clock.
Example baud rates and divisor values relative to a 27-MHz UART input clock are shown in Table 2.
The UARTs utilize a minimal number of signal connections to interface with external devices. The UART
signal descriptions are included in Table 3. Note that the number of UARTs and their supported features
vary on each device, see the device-specific data manual for more details.
Signal Name
UTXDnOutputSerial data transmit
URXDnInputSerial data receive
UCTSnInputClear-to-Send handshaking signal
URTSnOutputRequest-to-Send handshaking signal
(1)
The value n indicates the applicable UART; that is, UART0, UART1, etc.
(1)
Signal TypeFunction
2.3Pin Multiplexing
On the DM643x DMP extensive pin multiplexing is used to accommodate the largest number of peripheral
functions in the smallest possible package. Pin multiplexing is controlled using a combination of hardware
configuration at device reset and software programmable register settings. Refer to the device-specific
data manual to determine how pin multiplexing affects the UART.
2.4Protocol Description
www.ti.com
Table 3. UART Signal Descriptions
2.4.1Transmission
The UART transmitter section includes a transmitter hold register (THR) and a transmitter shift register
(TSR). When the UART is in the FIFO mode, THR is a 16-byte FIFO. Transmitter section control is a
function of the UART line control register (LCR). Based on the settings chosen in LCR, the UART
transmitter sends the following to the receiving device:
•1 START bit
•5, 6, 7, or 8 data bits
•1 PARITY bit (optional)
•1, 1.5, or 2 STOP bits
2.4.2Reception
The UART receiver section includes a receiver shift register (RSR) and a receiver buffer register (RBR).
When the UART is in the FIFO mode, RBR is a 16-byte FIFO. Receiver section control is a function of the
UART line control register (LCR). Based on the settings chosen in LCR, the UART receiver accepts the
following from the transmitting device:
•1 START bit
•5, 6, 7, or 8 data bits
•1 PARITY bit (optional)
•1 STOP bit (any other STOP bits transferred with the above data are not detected)
1 START bit + data bits (5, 6, 7, 8) + 1 PARITY bit (optional) + STOP bit (1, 1.5, 2)
It transmits 1 START bit; 5, 6, 7, or 8 data bits, depending on the data width selection; 1 PARITY bit, if
parity is selected; and 1, 1.5, or 2 STOP bits, depending on the STOP bit selection.
The UART receives in the following format:
1 START bit + data bits (5, 6, 7, 8) + 1 PARITY bit (optional) + STOP bit (1)
It receives 1 START bit; 5, 6, 7, or 8 data bits, depending on the data width selection; 1 PARITY bit, if
parity is selected; and 1 STOP bit.
The protocol formats are shown in Figure 4
Peripheral Architecture
Figure 4. UART Protocol Formats
D0D1D2D3D4PARITYSTOP1
Transmit/Receive for 5-bit data, parity Enable, 1 STOP bit
D0D1D2D3D4D5PARITYSTOP1
Transmit/Receive for 6-bit data, parity Enable, 1 STOP bit
D0D1D2D3D4D5D6PARITYSTOP1
Transmit/Receive for 7-bit data, parity Enable, 1 STOP bit
D0D1D2D3D4D5D6D7PARITYSTOP1
Transmit/Receive for 8-bit data, parity Enable, 1 STOP bit
2.5Endianness Considerations
Since the UART transfers 8-bit data externally, and proper endianness is maintained automatically within
the DM643x DMP, there are no endianness considerations when using the DM643x UART peripheral.
The UART transmitter section includes a transmitter hold register (THR) and a transmitter shift register
(TSR). When the UART is in the FIFO mode, THR is a 16-byte FIFO. Transmitter section control is a
function of the UART line control register (LCR). Based on the settings chosen in LCR, the UART
transmitter sends the following to the receiving device:
•1 START bit
•5, 6, 7, or 8 data bits
•1 PARITY bit (optional)
•1, 1.5, or 2 STOP bits
THR receives data from the internal data bus, and when TSR is ready, the UART moves the data from
THR to TSR. The UART serializes the data in TSR and transmits the data on the TX pin. In the non-FIFO
mode, if THR is empty and the THR empty interrupt is enabled in the interrupt enable register (IER), an
interrupt is generated. This interrupt is cleared when a character is loaded into THR. In the FIFO mode,
the interrupt is generated when the transmitter FIFO is empty, and it is cleared when at least one byte is
loaded into the FIFO.
2.6.2Reception
The UART receiver section includes a receiver shift register (RSR) and a receiver buffer register (RBR).
When the UART is in the FIFO mode, RBR is a 16-byte FIFO. Timing is supplied by the 16× receiver
clock. Receiver section control is a function of the UART line control register (LCR). Based on the settings
chosen in LCR, the UART receiver accepts the following from the transmitting device:
•1 START bit
•5, 6, 7, or 8 data bits
•1 PARITY bit (optional)
•1 STOP bit (any other STOP bits transferred with the above data are not detected)
RSR receives the data bits from the RX pin. Then RSR concatenates the data bits and moves the
resulting value into RBR (or the receiver FIFO). The UART also stores three bits of error status
information next to each received character, to record a parity error, framing error, or break.
In the non-FIFO mode, when a character is placed in RBR and the receiver data-ready interrupt is enabled
in the interrupt enable register (IER), an interrupt is generated. This interrupt is cleared when the character
is read from RBR. In the FIFO mode, the interrupt is generated when the FIFO is filled to the trigger level
selected in the FIFO control register (FCR), and it is cleared when the FIFO contents drop below the
trigger level.
The following two modes can be used for servicing the receiver and transmitter FIFOs:
•FIFO interrupt mode. The FIFO is enabled and the associated interrupts are enabled. Interrupts are
sent to the CPU to indicate when specific events occur.
•FIFO poll mode. The FIFO is enabled but the associated interrupts are disabled. The CPU polls status
bits to detect specific events.
Because the receiver FIFO and the transmitter FIFO are controlled separately, either one or both can be
placed into the interrupt mode or the poll mode.
2.6.3.1FIFO Interrupt Mode
When the receiver FIFO is enabled in the FIFO control register (FCR) and the receiver interrupts are
enabled in the interrupt enable register (IER), the interrupt mode is selected for the receiver FIFO. The
following are important points about the receiver interrupts:
•The receiver data-ready interrupt is issued to the CPU when the FIFO has reached the trigger level
that is programmed in FCR. It is cleared when the CPU or the DMA controller reads enough characters
from the FIFO such that the FIFO drops below its programmed trigger level.
•The receiver line status interrupt is generated in response to an overrun error, a parity error, a framing
error, or a break. This interrupt has higher priority than the receiver data-ready interrupt. For details,
see Section 2.9.
•The data-ready (DR) bit in the line status register (LSR) indicates the presence or absence of
characters in the receiver FIFO. The DR bit is set when a character is transferred from the receiver
shift register (RSR) to the empty receiver FIFO. The DR bit remains set until the FIFO is empty again.
•A receiver time-out interrupt occurs if all of the following conditions exist:
– At least one character is in the FIFO,
– The most recent character was received more than four continuous character times ago. A
character time is the time allotted for 1 START bit, n data bits, 1 PARITY bit, and 1 STOP bit,
where n depends on the word length selected with the WLS bits in the line control register (LCR).
See Table 4.
– The most recent read of the FIFO has occurred more than four continuous character times before.
•Character times are calculated by using the baud rate.
•When a receiver time-out interrupt has occurred, it is cleared and the time-out timer is cleared when
the CPU or the EDMA controller reads one character from the receiver FIFO. The interrupt is also
cleared if a new character is received in the FIFO or if the URRST bit is cleared in the power and
emulation management register (PWREMU_MGMT).
•If a receiver time-out interrupt has not occurred, the time-out timer is cleared after a new character is
received or after the CPU or EDMA reads the receiver FIFO.
When the transmitter FIFO is enabled in FCR and the transmitter holding register empty interrupt is
enabled in IER, the interrupt mode is selected for the transmitter FIFO. The transmitter holding register
empty interrupt occurs when the transmitter FIFO is empty. It is cleared when the transmitter hold register
(THR) is loaded (1 to 16 characters may be written to the transmitter FIFO while servicing this interrupt).
Peripheral Architecture
Table 4. Character Time for Word Lengths
Word Length (n)Character TimeFour Character Times
5Time for 8 bitsTime for 32 bits
6Time for 9 bitsTime for 36 bits
7Time for 10 bitsTime for 40 bits
8Time for 11 bitsTime for 44 bits
When the receiver FIFO is enabled in the FIFO control register (FCR) and the receiver interrupts are
disabled in the interrupt enable register (IER), the poll mode is selected for the receiver FIFO. Similarly,
when the transmitter FIFO is enabled and the transmitter interrupts are disabled, the transmitted FIFO is in
the poll mode. In the poll mode, the CPU detects events by checking bits in the line status register (LSR):
•The RXFIFOE bit indicates whether there are any errors in the receiver FIFO.
•The TEMT bit indicates that both the transmitter holding register (THR) and the transmitter shift
register (TSR) are empty.
•The THRE bit indicates when THR is empty.
•The BI (break), FE (framing error), PE (parity error), and OE (overrun error) bits specify which error or
errors have occurred.
•The DR (data-ready) bit is set as long as there is at least one byte in the receiver FIFO.
Also, in the FIFO poll mode:
•The interrupt identification register (IIR) is not affected by any events because the interrupts are
disabled.
•The UART does not indicate when the receiver FIFO trigger level is reached or when a receiver
time-out occurs.
2.6.4Autoflow Control
The UART can employ autoflow control by connecting the CTS and RTS signals. Note that all UARTs do
not support autoflow control, see the device-specific data manual for supported features. The CTS input
must be active before the transmitter FIFO can transmit data. The RTS becomes active when the receiver
needs more data and notifies the sending device. When RTS is connected to CTS, data transmission
does not occur unless the receiver FIFO has space for the data. Therefore, when two UARTs are
connected as shown in Figure 5 with autoflow enabled, overrun errors are eliminated.
RTS data flow control originates in the receiver block (see Figure 1). When the receiver FIFO level
reaches a trigger level of 1, 4, 8, or 14 (see Figure 6), RTS is deasserted. The sending UART may send
an additional byte after the trigger level is reached (assuming the sending UART has another byte to
send), because it may not recognize the deassertion of RTS until after it has begun sending the additional
byte. For trigger level 1, 4, and 8, RTS is automatically reasserted once the receiver FIFO is emptied. For
trigger level 14, RTS is automatically reasserted once the receiver FIFO drops below the trigger level.
(1) N = Receiver FIFO trigger level.
(2) The two blocks in dashed lines cover the case where an additional byte is sent.
2.6.4.2CTS Behavior
The transmitter checks CTS before sending the next data byte. If CTS is active, the transmitter sends the
next byte. To stop the transmitter from sending the following byte, CTS must be released before the
middle of the last STOP bit that is currently being sent (see Figure 7). When flow control is enabled, CTS
level changes do not trigger interrupts because the device automatically controls its own transmitter.
Without autoflow control, the transmitter sends any data present in the transmitter FIFO and a receiver
overrun error may result.
Peripheral Architecture
Figure 6. Autoflow Functional Timing Waveforms for RTS
Figure 7. Autoflow Functional Timing Waveforms for CTS
(1) When CTS is active (low), the transmitter keeps sending serial data out.
(2) When CTS goes high before the middle of the last STOP bit of the current byte, the transmitter finishes
sending the current byte but it does not send the next byte.
(3) When CTS goes from high to low, the transmitter begins sending data again.
2.6.5Loopback Control
The UART can be placed in the diagnostic mode using the LOOP bit in the modem control register (MCR),
which internally connects the UART output back to the UART input. In this mode, the transmit and receive
data paths, the transmitter and receiver interrupts, and the modem control interrupts can be verified
without connecting to another UART.
Two bits in the power and emulation management register (PWREMU_MGMT) control resetting the parts
of the UART:
•The UTRST bit controls resetting the transmitter only. If UTRST = 1, the transmitter is active;
if UTRST = 0, the transmitter is in reset.
•The URRST bit controls resetting the receiver only. If URRST = 1, the receiver is active;
if URRST = 0, the receiver is in reset.
In each case, putting the receiver and/or transmitter in reset will reset the state machine of the affected
portion but does not affect the UART registers.
2.7.2Hardware Reset Considerations
When the processor RESET pin is asserted, the entire processor is reset and is held in the reset state
until the RESET pin is released. As part of a device reset, the UART state machine is reset and the UART
registers are forced to their default states. The default states of the registers are shown in Section 3.
2.8Initialization
The following steps are required to initialize the UART:
1. Perform the necessary device pin multiplexing setup (see the device-specific data manual).
2. Program the VDD3P3V_PWDN register to power up the IO pins for the UART (see the device-specific
data manual).
3. Set the desired baud rate by writing the appropriate clock divisor values to the divisor latch registers
(DLL and DLH).
4. If the FIFOs will be used, select the desired trigger level and enable the FIFOs by writing the
appropriate values to the FIFO control register (FCR). The FIFOEN bit in FCR must be set first, before
the other bits in FCR are configured.
5. Choose the desired protocol settings by writing the appropriate values to the line control register
(LCR).
6. If autoflow control is desired, write appropriate values to the modem control register (MCR). Note that
all UARTs do not support autoflow control, see the device-specific data manual for supported features.
7. Choose the desired response to emulation suspend events by configuring the FREE bit and enable the
UART by setting the UTRST and URRST bits in the power and emulation management register
(PWREMU_MGMT).
www.ti.com
2.9Interrupt Support
2.9.1Interrupt Events and Requests
The UART generates the interrupt requests described in Table 5. All requests are multiplexed through an
arbiter to a single UART interrupt request to the CPU, as shown in Figure 8. Each of the interrupt requests
has an enable bit in the interrupt enable register (IER) and is recorded in the interrupt identification
register (IIR).
If an interrupt occurs and the corresponding enable bit is set to 1, the interrupt request is recorded in IIR
and is forwarded to the CPU. If an interrupt occurs and the corresponding enable bit is cleared to 0, the
interrupt request is blocked. The interrupt request is neither recorded in IIR nor forwarded to the CPU.
2.9.2Interrupt Multiplexing
The UARTs have dedicated interrupt signals to the DSP CPU and the interrupts are not multiplexed with
any other interrupt source.
THREINTTHR-empty condition: The transmitter holding register If THREINT is enabled in IER, by setting the ETBEI
(THR) or the transmitter FIFO is empty. All of the data bit, it is recorded in IIR.
has been copied from THR to the transmitter shiftAs an alternative to using THREINT, the CPU can poll
register (TSR).the THRE bit in the line status register (LSR).
RDAINTReceive data available in non-FIFO mode or triggerIf RDAINT is enabled in IER, by setting the ERBI bit,
level reached in the FIFO mode.it is recorded in IIR.
As an alternative to using RDAINT, the CPU can poll
the DR bit in the line status register (LSR). In the
FIFO mode, this is not a functionally equivalent
alternative because the DR bit does not respond to
the FIFO trigger level. The DR bit only indicates the
presence or absence of unread characters.
RTOINTReceiver time-out condition (in the FIFO mode only):The receiver time-out interrupt prevents the UART
No characters have been removed from or input tofrom waiting indefinitely, in the case when the receiver
the receiver FIFO during the last four character timesFIFO level is below the trigger level and thus does not
(see Table 4), and there is at least one character ingenerate a receiver data-ready interrupt.
the receiver FIFO during this time.If RTOINT is enabled in IER, by setting the ERBI bit,
it is recorded in IIR.
There is no status bit to reflect the occurrence of a
time-out condition.
RLSINTReceiver line status condition: An overrun error, parity If RLSINT is enabled in IER, by setting the ELSI bit, it
error, framing error, or break has occurred.is recorded in IIR.
As an alternative to using RLSINT, the CPU can poll
the following bits in the line status register (LSR):
overrun error indicator (OE), parity error indicator
(PE), framing error indicator (FE), and break indicator
(BI).
In the FIFO mode, the UART generates the following two DMA events:
•Receive event (URXEVT): The trigger level for the receiver FIFO (1, 4, 8, or 14 characters) is set with
the RXFIFTL bit in the FIFO control register (FCR). Every time the trigger level is reached or a receiver
time-out occurs, the UART sends a receive event to the EDMA controller. In response, the EDMA
controller reads the data from the receiver FIFO by way of the receiver buffer register (RBR). Note that
the receive event is not asserted if the data at the top of the receiver FIFO is erroneous even if the
trigger level has been reached.
•Transmit event (UTXEVT): When the transmitter FIFO is empty (when the last byte in the transmitter
FIFO has been copied to the transmitter shift register), the UART sends an UTXEVT signal to the
EDMA controller. In response, the EDMA controller refills the transmitter FIFO by way of the transmitter
holding register (THR). The UTXEVT signal is also sent to the DMA controller when the UART is taken
out of reset using the UTRST bit in the power and emulation management register
(PWREMU_MGMT).
Activity in DMA channels can be synchronized to these events. In the non-FIFO mode, the UART
generates no DMA events. Any DMA channel synchronized to either of these events must be enabled at
the time the UART event is generated. Otherwise, the DMA channel will miss the event and, unless the
UART generates a new event, no data transfer will occur.
2.11 Power Management
The UART peripheral can be placed in reduced-power modes to conserve power during periods of low
activity. The power management of the UART peripheral is controlled by the processor Power and Sleep
Controller (PSC). The PSC acts as a master controller for power management for all of the peripherals on
the device. For detailed information on power management procedures using the PSC, see the
TMS320DM643x DMP DSP Subsystem Reference Guide (SPRU978).
www.ti.com
2.12 Emulation Considerations
The FREE bit in the power and emulation management register (PWREMU_MGMT) determines how the
UART responds to an emulation suspend event such as an emulator halt or breakpoint. If FREE = 0 and a
transmission is in progress, the UART halts after completing the one-word transmission; if FREE = 0 and
a transmission is not in progress, the UART halts immediately. If FREE = 1, the UART does not halt and
continues operating normally.
Note also that emulator accesses are essentially transparent to UART operation. Emulator read
operations do not affect any register contents, status bits, or operating states. Emulator writes, however,
may affect register contents and may affect UART operation, depending on what register is accessed and
what value is written.
The UART registers can be read from or written to during emulation suspend events, even if the UART
activity has stopped.
Since the processor reset signal has no effect on the divisor latch, the divisor latch will have an unknown
value after power up. If the divisor latch is not programmed after power up, the baud clock (BCLK) will not
operate and will instead be set to a constant logic 1 state.
The divisor latch values should always be reinitialized following a processor reset.
2.13.2Changing Operating Mode During Busy Serial Communication
Since the serial link characteristics are based on how the control registers are programmed, the UART will
expect the control registers to be static while it is busy engaging in a serial communication. Therefore,
changing the control registers while the module is still busy communicating with another serial device will
most likely cause an error condition and should be avoided.
3Registers
The system programmer has access to and control over any of the UART registers that are listed in
Table 6. These registers, which control UART operations, receive data, and transmit data, are available at
32-bit addresses in the device memory map. See the device-specific data manual for the memory address
of these registers.
•RBR, THR, and DLL share one address. When the DLAB bit in LCR is 0, reading from the address
gives the content of RBR, and writing to the address modifies THR. When DLAB = 1, all accesses at
the address read or modify DLL. DLL can also be accessed with address offset 20h.
•IER and DLH share one address. When DLAB = 0, all accesses read or modify IER. When DLAB = 1,
all accesses read or modify DLH. DLH can also be accessed with address offset 24h.
•IIR and FCR share one address. Regardless of the value of the DLAB bit, reading from the address
gives the content of IIR, and writing modifies FCR.
The receiver buffer register (RBR) is shown in Figure 9 and described in Table 7.
The UART receiver section consists of a receiver shift register (RSR) and a receiver buffer register (RBR).
When the UART is in the FIFO mode, RBR is a 16-byte FIFO. Timing is supplied by the 16x receiver
clock. Receiver section control is a function of the line control register (LCR).
RSR receives serial data from the RX pin. Then RSR concatenates the data and moves it into RBR (or the
receiver FIFO). In the non-FIFO mode, when a character is placed in RBR and the receiver data-ready
interrupt is enabled (DR = 1 in IER), an interrupt is generated. This interrupt is cleared when the character
is read from RBR. In the FIFO mode, the interrupt is generated when the FIFO is filled to the trigger level
selected in the FIFO control register (FCR), and it is cleared when the FIFO contents drop below the
trigger level.
Access considerations:
RBR, THR, and DLL share one address. To read RBR, write 0 to the DLAB bit in LCR, and read from the
shared address. When DLAB = 0, writing to the shared address modifies THR. When DLAB = 1, all
accesses at the shared address read or modify DLL.
DLL also has a dedicated address. If you use the dedicated address, you can keep DLAB = 0, so that
RBR and THR are always selected at the shared address.
Figure 9. Receiver Buffer Register (RBR)
3116
Reserved
R-0
15870
ReservedDATA
R-0R-0
LEGEND: R = Read only; -n = value after reset
Table 7. Receiver Buffer Register (RBR) Field Descriptions
The transmitter holding register (THR) is shown in Figure 10 and described in Table 8.
The UART transmitter section consists of a transmitter hold register (THR) and a transmitter shift register
(TSR). When the UART is in the FIFO mode, THR is a 16-byte FIFO. Transmitter section control is a
function of the line control register (LCR).
THR receives data from the internal data bus and when TSR is idle, the UART moves the data from THR
to TSR. The UART serializes the data in TSR and transmits the data on the TX pin. In the non-FIFO
mode, if THR is empty and the THR empty (THRE) interrupt is enabled (ETBEI = 1 in IER), an interrupt is
generated. This interrupt is cleared when a character is loaded into THR. In the FIFO mode, the interrupt
is generated when the transmitter FIFO is empty, and it is cleared when at least one byte is loaded into
the FIFO.
Access considerations:
RBR, THR, and DLL share one address. To load THR, write 0 to the DLAB bit of LCR, and write to the
shared address. When DLAB = 0, reading from the shared address gives the content of RBR. When
DLAB = 1, all accesses at the address read or modify DLL.
DLL also has a dedicated address. If you use the dedicated address, you can keep DLAB = 0, so that
RBR and THR are always selected at the shared address.
Figure 10. Transmitter Holding Register (THR)
3116
Reserved
R-0
15870
ReservedDATA
R-0W-0
LEGEND: R = Read only; W = Write only; -n = value after reset
Registers
Table 8. Transmitter Holding Register (THR) Field Descriptions
The interrupt enable register (IER) is used to individually enable or disable each type of interrupt request
that can be generated by the UART. Each interrupt request that is enabled in IER is forwarded to the
CPU. IER is shown in Figure 11 and described in Table 9.
Access considerations:
IER and DLH share one address. To read or modify IER, write 0 to the DLAB bit in LCR. When DLAB = 1,
all accesses at the shared address read or modify DLH.
DLH also has a dedicated address. If you use the dedicated address, you can keep DLAB = 0, so that IER
is always selected at the shared address.
Figure 11. Interrupt Enable Register (IER)
3116
Reserved
R-0
1543210
ReservedRsvdELSIETBEIERBI
R-0R/W-0 R/W-0 R/W-0 R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 9. Interrupt Enable Register (IER) Field Descriptions
BitFieldValue Description
31-4Reserved0Reserved
3Reserved0Reserved. This bit must always be written with a 0.
2ELSIReceiver line status interrupt enable.
0Receiver line status interrupt is disabled.
1Receiver line status interrupt is enabled.
0Transmitter holding register empty interrupt is disabled.
1Transmitter holding register empty interrupt is enabled.
0ERBIReceiver data available interrupt and character timeout indication interrupt enable.
0Receiver data available interrupt and character timeout indication interrupt is disabled.
1Receiver data available interrupt and character timeout indication interrupt is enabled.
The interrupt identification register (IIR) is a read-only register at the same address as the FIFO control
register (FCR), which is a write-only register. When an interrupt is generated and enabled in the interrupt
enable register (IER), IIR indicates that an interrupt is pending in the IPEND bit and encodes the type of
interrupt in the INTID bits. IIR is shown in Figure 12 and described in Figure 12.
The UART has an on-chip interrupt generation and prioritization capability that permits flexible
communication with the CPU. The UART provides three priority levels of interrupts:
•Priority 1 - Receiver line status (highest priority)
•Priority 2 - Receiver data ready or receiver timeout
•Priority 3 - Transmitter holding register empty
The FIFOEN bit in IIR can be checked to determine whether the UART is in the FIFO mode or the
non-FIFO mode.
Access consideration:
IIR and FCR share one address. Regardless of the value of the DLAB bit in LCR, reading from the
address gives the content of IIR, and writing to the address modifies FCR.
Table 11. Interrupt Identification and Interrupt Clearing Information
Priority
Level321 0 Interrupt TypeInterrupt SourceEvent That Clears Interrupt
None000 1 NoneNoneNone
10 110 Receiver line statusOverrun error, parity error, framingFor an overrun error, reading the line
20 100 Receiver data-readyNon-FIFO mode: Receiver data isNon-FIFO mode: The receiver buffer
21 100 Receiver time-outFIFO mode only: No characters have One of the following events:
30 010 Transmitter holdingNon-FIFO mode: Transmitter holding A character is written to the
In the FIFO mode, the receiver data-ready interrupt or receiver time-out interrupt is cleared by the CPU or by the DMA controller,
whichever reads from the receiver FIFO first.
IIR Bits
error, or break is detected.status register (LSR) clears the
ready.register (RBR) is read.
FIFO mode: Trigger level reached. If FIFO mode: The FIFO drops below
four character times (see Table 4)the trigger level.
pass with no access of the FIFO, the
interrupt is asserted again.
been removed from or input to the
receiver FIFO during the last four
character times (see Table 4), and
there is at least one character in the
receiver FIFO during this time.
register emptyregister (THR) is empty.transmitter holding register (THR).
FIFO mode: Transmitter FIFO is
empty.
interrupt. For a parity error, framing
error, or break, the interrupt is
cleared only after all the erroneous
data have been read.
(1)
• A character is read from the
receiver FIFO.
• A new character arrives in the
receiver FIFO.
• The URRST bit in the power
and emulation management
register (PWREMU_MGMT) is
loaded with 0.
(1)
3.5FIFO Control Register (FCR)
The FIFO control register (FCR) is a write-only register at the same address as the interrupt identification
register (IIR), which is a read-only register. Use FCR to enable and clear the FIFOs and to select the
receiver FIFO trigger level FCR is shown in Figure 13 and described in Table 12. The FIFOEN bit must be
set to 1 before other FCR bits are written to or the FCR bits are not programmed.
Access consideration:
IIR and FCR share one address. Regardless of the value of the DLAB bit, reading from the address gives
the content of IIR, and writing to the address modifies FCR.
For proper communication between the UART and the EDMA controller, the
DMAMODE1 bit must be set to 1. Always write a 1 to the DMAMODE1 bit, and
after a hardware reset, change the DMAMODE1 bit from 0 to 1.
LEGEND: R = Read only; W = Write only; W1C = Write 1 to clear (writing 0 has no effect); -n = value after reset
(1)
Always write 1 to the DMAMODE1 bit. After a hardware reset, change the DMAMODE1 bit from 0 to 1. DMAMODE1 = 1 is required for
proper communication between the UART and the DMA controller.
Table 12. FIFO Control Register (FCR) Field Descriptions
BitFieldValue Description
31-8Reserved0Reserved
7-6RXFIFTL0-3hReceiver FIFO trigger level. RXFIFTL sets the trigger level for the receiver FIFO. When the trigger level
5-4Reserved0Reserved
3DMAMODE1DMA MODE1 enable if FIFOs are enabled. Always write 1 to DMAMODE1. After a hardware reset,
2TXCLRTransmitter FIFO clear. Write a 1 to TXCLR to clear the bit.
1RXCLRReceiver FIFO clear. Write a 1 to RXCLR to clear the bit.
0FIFOENTransmitter and receiver FIFOs mode enable. FIFOEN must be set before other FCR bits are written to
is reached, a receiver data-ready interrupt is generated (if the interrupt request is enabled). Once the
FIFO drops below the trigger level, the interrupt is cleared.
01 byte
1h4 bytes
2h8 bytes
3h14 bytes
change DMAMODE1 from 0 to 1. DMAMOD1 = 1 is a requirement for proper communication between
the UART and the EDMA controller.
0DMA MODE1 is disabled.
1DMA MODE1 is enabled.
0No effect.
1Clears transmitter FIFO and resets the transmitter FIFO counter. The shift register is not cleared.
0No effect.
1Clears receiver FIFO and resets the receiver FIFO counter. The shift register is not cleared.
or the FCR bits are not programmed. Clearing this bit clears the FIFO counters.
0Non-FIFO mode. The transmitter and receiver FIFOs are disabled, and the FIFO pointers are cleared.
1FIFO mode. The transmitter and receiver FIFOs are enabled.
The line control register (LCR) is shown in Figure 14 and described in Table 13.
The system programmer controls the format of the asynchronous data communication exchange by using
LCR. In addition, the programmer can retrieve, inspect, and modify the content of LCR; this eliminates the
need for separate storage of the line characteristics in system memory.
Figure 14. Line Control Register (LCR)
3116
Reserved
R-0
15876543210
ReservedDLABBCSPEPSPENSTBWLS
R-0R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0R/W-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
Table 13. Line Control Register (LCR) Field Descriptions
BitFieldValueDescription
31-8Reserved0Reserved
7DLABDivisor latch access bit. The divisor latch registers (DLL and DLH) can be accessed at dedicated
6BCBreak control.
5SPStick parity. The SP bit works in conjunction with the EPS and PEN bits. The relationship between the
4EPSEven parity select. Selects the parity when parity is enabled (PEN = 1). The EPS bit works in
3PENParity enable. The PEN bit works in conjunction with the SP and EPS bits. The relationship between the
addresses or at addresses shared by RBR, THR, and IER. Using the shared addresses requires
toggling DLAB to change which registers are selected. If you use the dedicated addresses, you can
keep DLAB = 0.
0Allows access to the receiver buffer register (RBR), the transmitter holding register (THR), and the
interrupt enable register (IER) selected. At the address shared by RBR, THR, and DLL, the CPU can
read from RBR and write to THR. At the address shared by IER and DLH, the CPU can read from and
write to IER.
1Allows access to the divisor latches of the baud generator during a read or write operation (DLL and
DLH). At the address shared by RBR, THR, and DLL, the CPU can read from and write to DLL. At the
address shared by IER and DLH, the CPU can read from and write to DLH.
0Break condition is disabled.
1Break condition is transmitted to the receiving UART. A break condition is a condition where the
UART_TX signal is forced to the spacing (cleared) state.
SP, EPS, and PEN bits is summarized in Table 14.
0Stick parity is disabled.
1Stick parity is enabled.
• When odd parity is selected (EPS = 0), the PARITY bit is transmitted and checked as set.
• When even parity is selected (EPS = 1), the PARITY bit is transmitted and checked as cleared.
conjunction with the SP and PEN bits. The relationship between the SP, EPS, and PEN bits is
summarized in Table 14.
0Odd parity is selected (an odd number of logic 1s is transmitted or checked in the data and PARITY
bits).
1Even parity is selected (an even number of logic 1s is transmitted or checked in the data and PARITY
bits).
SP, EPS, and PEN bits is summarized in Table 14.
0No PARITY bit is transmitted or checked.
1Parity bit is generated in transmitted data and is checked in received data between the last data word
Table 13. Line Control Register (LCR) Field Descriptions (continued)
BitFieldValueDescription
2STBNumber of STOP bits generated. STB specifies 1, 1.5, or 2 STOP bits in each transmitted character.
When STB = 1, the WLS bit determines the number of STOP bits. The receiver clocks only the first
STOP bit, regardless of the number of STOP bits selected. The number of STOP bits generated is
summarized in Table 15.
01 STOP bit is generated.
1WLS bit determines the number of STOP bits:
• When WLS = 0, 1.5 STOP bits are generated.
• When WLS = 1h, 2h, or 3h, 2 STOP bits are generated.
1-0WLS0-3hWord length select. Number of bits in each transmitted or received serial character. When STB = 1, the
WLS bit determines the number of STOP bits.
05 bits
1h6 bits
2h7 bits
3h8 bits
Table 14. Relationship Between ST, EPS, and PEN Bits in LCR
ST BitEPS BitPEN BitParity Option
xx0Parity disabled: No PARITY bit is transmitted or checked
001Odd parity selected: Odd number of logic 1s
011Even parity selected: Even number of logic 1s
101Stick parity selected with PARITY bit transmitted and checked as set
111Stick parity selected with PARITY bit transmitted and checked as cleared
Registers
Table 15. Number of STOP Bits Generated
Word Length SelectedNumber of STOP BitsBaud Clock (BCLK)
The modem control register (MCR) is shown in Figure 15 and described in Table 16. The modem control
register provides the ability to enable/disable the autoflow functions, and enable/disable the loopback
function for diagnostic purposes.
Figure 15. Modem Control Register (MCR)
3116
Reserved
R-0
156543210
ReservedAFE
R-0R/W-0 R/W-0R-0R/W-0R-0
LEGEND: R/W = Read/Write; R = Read only; -n = value after reset
(1)
All UARTs do not support this feature, see the device-specific data manual for supported features. If this feature is not available, this bit
is reserved and should be cleared to 0.
Table 16. Modem Control Register (MCR) Field Descriptions
BitFieldValueDescription
31-6Reserved0Reserved
5AFEAutoflow control enable. Autoflow control allows the RTS and CTS signals to provide handshaking
4LOOPLoop back mode enable. LOOP is used for the diagnostic testing using the loop back feature.
3-2Reserved0Reserved
1RTSRTS control. When AFE = 1, the RTS bit determines the autoflow control enabled. Note that all UARTs
0Reserved0Reserved
between UARTs during data transfer. When AFE = 1, the RTS bit determines the autoflow control
enabled. Note that all UARTs do not support this feature, see the device-specific data manual for
supported features. If this feature is not available, this bit is reserved and should be cleared to 0.
0Autoflow control is disabled.
1Autoflow control is enabled:
• When RTS = 0, CTS is only enabled.
• When RTS = 1, RTS and CTS are enabled.
0Loop back mode is disabled.
1Loop back mode is enabled. When LOOP is set, the following occur:
• The UART_TX signal is set high.
• The UART_RX pin is disconnected
• The output of the transmitter shift register (TSR) is lopped back in to the receiver shift register (RSR)
input.
do not support this feature, see the device-specific data manual for supported features. If this feature is
not available, this bit is reserved and should be cleared to 0.
0RTS is disabled, CTS is only enabled.
1RTS and CTS are enabled.
The line status register (LSR) is shown in Figure 16 and described in Table 17. LSR provides information
to the CPU concerning the status of data transfers. LSR is intended for read operations only; do not write
to this register. Bits 1 through 4 record the error conditions that produce a receiver line status interrupt.
Figure 16. Line Status Register (LSR)
3116
Reserved
R-0
15876543210
ReservedRXFIFOE TEMT THREBIFEPEOEDR
R-0R-0R-1R-1R-0R-0R-0R-0R-0
LEGEND: R = Read only; -n = value after reset
Table 17. Line Status Register (LSR) Field Descriptions
BitFieldValueDescription
31-8Reserved0Reserved
7RXFIFOEReceiver FIFO error.
In non-FIFO mode:
0There has been no error, or RXFIFOE was cleared because the CPU read the erroneous character
from the receiver buffer register (RBR).
1There is a parity error, framing error, or break indicator in the receiver buffer register (RBR).
In FIFO mode:
0There has been no error, or RXFIFOE was cleared because the CPU read the erroneous character
from the receiver FIFO and there are no more errors in the receiver FIFO.
1At least one parity error, framing error, or break indicator in the receiver FIFO.
6TEMTTransmitter empty (TEMT) indicator.
In non-FIFO mode:
0Either the transmitter holding register (THR) or the transmitter shift register (TSR) contains a data
character.
1Both the transmitter holding register (THR) and the transmitter shift register (TSR) are empty.
In FIFO mode:
0Either the transmitter FIFO or the transmitter shift register (TSR) contains a data character.
1Both the transmitter FIFO and the transmitter shift register (TSR) are empty.
5THRETransmitter holding register empty (THRE) indicator. If the THRE bit is set and the corresponding
interrupt enable bit is set (ETBEI = 1 in IER), an interrupt request is generated.
In non-FIFO mode:
0Transmitter holding register (THR) is not empty. THR has been loaded by the CPU.
1Transmitter holding register (THR) is empty (ready to accept a new character). The content of THR has
been transferred to the transmitter shift register (TSR).
In FIFO mode:
0Transmitter FIFO is not empty. At least one character has been written to the transmitter FIFO. You can
write to the transmitter FIFO if it is not full.
1Transmitter FIFO is empty. The last character in the FIFO has been transferred to the transmitter shift
Table 17. Line Status Register (LSR) Field Descriptions (continued)
BitFieldValueDescription
4BIBreak indicator. The BI bit is set whenever the receive data input (RX) was held low for longer than a
full-word transmission time. A full-word transmission time is defined as the total time to transmit the
START, data, PARITY, and STOP bits. If the BI bit is set and the corresponding interrupt enable bit is
set (ELSI = 1 in IER), an interrupt request is generated.
In non-FIFO mode:
0No break has been detected, or the BI bit was cleared because the CPU read the erroneous character
from the receiver buffer register (RBR).
1A break has been detected with the character in the receiver buffer register (RBR).
In FIFO mode:
0No break has been detected, or the BI bit was cleared because the CPU read the erroneous character
from the receiver FIFO and the next character to be read from the FIFO has no break indicator.
1A break has been detected with the character at the top of the receiver FIFO.
3FEFraming error (FE) indicator. A framing error occurs when the received character does not have a valid
STOP bit. In response to a framing error, the UART sets the FE bit and waits until the signal on the RX
pin goes high. Once the RX signal goes high, the receiver is ready to detect a new START bit and
receive new data. If the FE bit is set and the corresponding interrupt enable bit is set (ELSI = 1 in IER),
an interrupt request is generated.
In non-FIFO mode:
0No framing error has been detected, or the FE bit was cleared because the CPU read the erroneous
data from the receiver buffer register (RBR).
1A framing error has been detected with the character in the receiver buffer register (RBR).
In FIFO mode:
0No framing error has been detected, or the FE bit was cleared because the CPU read the erroneous
data from the receiver FIFO and the next character to be read from the FIFO has no framing error.
1A framing error has been detected with the character at the top of the receiver FIFO.
2PEParity error (PE) indicator. A parity error occurs when the parity of the received character does not
match the parity selected with the EPS bit in the line control register (LCR). If the PE bit is set and the
corresponding interrupt enable bit is set (ELSI = 1 in IER), an interrupt request is generated.
In non-FIFO mode:
0No parity error has been detected, or the PE bit was cleared because the CPU read the erroneous data
from the receiver buffer register (RBR).
1A parity error has been detected with the character in the receiver buffer register (RBR).
In FIFO mode:
0No parity error has been detected, or the PE bit was cleared because the CPU read the erroneous data
from the receiver FIFO and the next character to be read from the FIFO has no parity error.
1A parity error has been detected with the character at the top of the receiver FIFO.
1OEOverrun error (OE) indicator. An overrun error in the non-FIFO mode is different from an overrun error
in the FIFO mode. If the OE bit is set and the corresponding interrupt enable bit is set (ELSI = 1 in IER),
an interrupt request is generated.
In non-FIFO mode:
0No overrun error has been detected, or the OE bit was cleared because the CPU read the content of
the line status register (LSR).
1Overrun error has been detected. Before the character in the receiver buffer register (RBR) could be
read, it was overwritten by the next character arriving in RBR.
In FIFO mode:
0No overrun error has been detected, or the OE bit was cleared because the CPU read the content of
the line status register (LSR).
1Overrun error has been detected. If data continues to fill the FIFO beyond the trigger level, an overrun
error occurs only after the FIFO is full and the next character has been completely received in the shift
register. An overrun error is indicated to the CPU as soon as it happens. The new character overwrites
the character in the shift register, but it is not transferred to the FIFO.
Table 17. Line Status Register (LSR) Field Descriptions (continued)
BitFieldValueDescription
0DRData-ready (DR) indicator for the receiver. If the DR bit is set and the corresponding interrupt enable bit
is set (ERBI = 1 in IER), an interrupt request is generated.
In non-FIFO mode:
0Data is not ready, or the DR bit was cleared because the character was read from the receiver buffer
register (RBR).
1Data is ready. A complete incoming character has been received and transferred into the receiver buffer
register (RBR).
In FIFO mode:
0Data is not ready, or the DR bit was cleared because all of the characters in the receiver FIFO have
been read.
1Data is ready. There is at least one unread character in the receiver FIFO. If the FIFO is empty, the DR
bit is set as soon as a complete incoming character has been received and transferred into the FIFO.
The DR bit remains set until the FIFO is empty again.
3.9Divisor Latches (DLL and DLH)
Two 8-bit register fields (DLL and DLH), called divisor latches, store the 16-bit divisor for generation of the
baud clock in the baud generator. The latches are in DLH and DLL. DLH holds the most-significant bits of
the divisor, and DLL holds the least-significant bits of the divisor. These divisor latches must be loaded
during initialization of the UART in order to ensure desired operation of the baud generator. Writing to the
divisor latches results in two wait states being inserted during the write access while the baud generator is
loaded with the new value.
Access considerations:
•RBR, THR, and DLL share one address. When DLAB = 1 in LCR, all accesses at the shared address
are accesses to DLL. When DLAB = 0, reading from the shared address gives the content of RBR, and
writing to the shared address modifies THR.
•IER and DLH share one address. When DLAB = 1 in LCR, accesses to the shared address read or
modify to DLH. When DLAB = 0, all accesses at the shared address read or modify IER.
DLL and DLH also have dedicated addresses. If you use the dedicated addresses, you can keep the
DLAB bit cleared, so that RBR, THR, and IER are always selected at the shared addresses.
The divisor LSB latch (DLL) is shown in Figure 17 and described in Table 18. The divisor MSB latch (DLH)
is shown in Figure 18 and described in Table 19.
3.10 Peripheral Identification Registers (PID1 and PID2)
The peripheral identification registers (PID) contain identification data (class, revision, and type) for the
peripheral. PID1 is shown in Figure 19 and described in Table 20. PID2 is shown in Figure 20 and
described in Table 21.