The transmitter output (UART_TX) idle state defaults to logic high, C3[TXINV] is
cleared following reset. The transmitter output is inverted by setting C3[TXINV]. The
transmitter is enabled by setting the C2[TE] bit. This queues a preamble character that is
one full character frame of the idle state. The transmitter then remains idle until data is
available in the transmit data buffer. Programs store data into the transmit data buffer by
writing to the UART data register.
The central element of the UART transmitter is the transmit shift register that is 10-bit to
13 bits long depending on the setting in the C1[M], C2[M10] and BDH[SBNS] control
bits. For the remainder of this section, assume C1[M], C2[M10] and BDH[SBNS] are
cleared, selecting the normal 8-bit data mode. In 8-bit data mode, the shift register holds a
start bit, eight data bits, and a stop bit. When the transmit shift register is available for a
new UART character, the value waiting in the transmit data register is transferred to the
shift register, synchronized with the baud rate clock, and the transmit data register empty
(S1[TDRE]) status flag is set to indicate another character may be written to the transmit
data buffer at UART_D.
If no new character is waiting in the transmit data buffer after a stop bit is shifted out the
UART_TX pin, the transmitter sets the transmit complete flag and enters an idle mode,
with UART_TX high, waiting for more characters to transmit.
Writing 0 to C2[TE] does not immediately disable the transmitter. The current transmit
activity in progress must first be completed. This includes data characters in progress,
queued idle characters, and queued break characters.
31.3.2.1 Send break and queued idle
The UART_C2[SBK] bit sends break characters originally used to gain the attention of
old teletype receivers. Break characters are a full character time of logic 0, 10-bit to 12-
bit times including the start and stop bits. A longer break of 13-bit times can be enabled
by setting UART_S2[BRK13]. Normally, a program would wait for UART_S1[TDRE]
to become set to indicate the last character of a message has moved to the transmit
shifter, write 1, and then write 0 to the UART_C2[SBK] bit. This action queues a break
character to be sent as soon as the shifter is available. If UART_C2[SBK] remains 1
when the queued break moves into the shifter, synchronized to the baud rate clock, an
additional break character is queued. If the receiving device is another Freescale
Semiconductor UART, the break characters are received as 0s in all data bits and a
framing error (UART_S1[FE] = 1) occurs.
When idle-line wakeup is used, a full character time of idle (logic 1) is needed between
messages to wake up any sleeping receivers. Normally, a program would wait for
UART_S1[TDRE] to become set to indicate the last character of a message has moved to
Chapter 31 Universal Asynchronous Receiver/Transmitter (UART0)
KL02 Sub-Family Reference Manual, Rev. 2.1, July 2013
Freescale Semiconductor, Inc.
513