24. Universal synchronous/asynchronous receiver transmitter (USART/UART)

24.1 Introduction

The universal synchronous asynchronous receiver transmitter (USART) offers a flexible means of Full-duplex data exchange with external equipment requiring an industry standard NRZ asynchronous serial data format. The USART offers a very wide range of baud rates using a programmable baud rate generator.

It supports synchronous one-way communication and Half-duplex Single-wire communication, as well as multiprocessor communications. It also supports the LIN (Local Interconnect Network), Smartcard protocol and IrDA (Infrared Data Association) SIR ENDEC specifications and Modem operations (CTS/RTS).

High speed data communication is possible by using the DMA (direct memory access) for multibuffer configuration.

24.2 USART main features

24.3 USART extended features

24.4 USART implementation

Table 117. STM32L0x1 USART/LPUART features

USART modes/features (1)USART1USART2
(category 1 devices)
USART2
(category 2, 3 and 5)
USART4USART5LPUART1
Hardware flow control for modemXXXX-X
Continuous communication using DMAXXXXXX
Multiprocessor communicationXXXXXX
Synchronous modeX-XXX-
Smartcard modeXXX---
Single-wire Half-duplex communicationXXXXXX
Ir SIR ENDEC blockXXX---
LIN modeX-X---
Dual clock domain and wakeup from Stop modeX-X--X
Receiver timeout interruptX-X---
Modbus communicationX-X---
Auto baud rate detectionX-X---
Driver EnableXXXXXX
USART/LPUART data length7 (2) , 8 and 9 bits

1. X = supported.

2. In 7-bit data length mode, Smartcard mode, LIN master mode and Auto baud rate (0x7F and 0x55 frame detection) are not supported.

24.5 USART functional description

Any USART bidirectional communication requires a minimum of two pins: Receive data In (RX) and Transmit data Out (TX):

Serial data are transmitted and received through these pins in normal USART mode. The frames are comprised of:

Refer to Section 24.8: USART registers on page 701 for the definitions of each bit.

The following pin is required to interface in synchronous mode and Smartcard mode:

The following pins are required in RS232 Hardware flow control mode:

The following pin is required in RS485 Hardware control mode:

Note: DE and RTS share the same pin.

Figure 213. USART block diagram

Figure 213. USART block diagram. This is a detailed block diagram of a USART (Universal Synchronous/Asynchronous Receiver Transmitter). At the top, a 'PRDATA' bus is shown. Below it, a 'Write' path from '(CPU or DMA)' goes to a 'Transmit shift register', which then connects to a 'Transmit data register (TDR)'. A 'Read' path from a 'Receive shift register' goes to '(CPU or DMA)' via a 'DR (data register)'. The 'TDR' and 'DR' are connected to a 'Receive data register (RDR)'. On the left, there are pins for 'TX', 'RX', 'RTS/DE', and 'CTS'. The 'TX' pin is connected to an 'IrDA SIR ENDEC block', which is also connected to the 'TDR'. The 'RTS/DE' and 'CTS' pins are connected to a 'Hardware flow controller', which is also connected to the 'TDR' and 'RDR'. In the center, there are control and interrupt blocks: 'USART_CR3 register', 'USART_CR2 register', 'USART_CR1 register', 'USART_GTPR register' (with 'GT' and 'PSC' fields), 'CK control', 'Transmit control', 'Wake-up unit', 'Receiver control', 'USART_ISR register', and 'USART interrupt control'. The 'USART_CR1', 'USART_CR2', and 'USART_CR3' registers are connected to the control blocks. The 'USART_GTPR' register is connected to the 'CK control' block, which outputs a 'CK' signal. The 'Transmit control', 'Wake-up unit', and 'Receiver control' blocks are connected to the 'USART_ISR register' and 'USART interrupt control'. At the bottom, a 'Conventional baud rate generator' is shown, containing 'USART_BRR register', 'Transmitter rate controller', 'BRR[15:0]', and 'Receiver rate controller'. The 'Transmitter rate controller' is connected to 'TE' and the 'BRR[15:0]' register. The 'Receiver rate controller' is connected to 'RE' and the 'BRR[15:0]' register. The 'BRR[15:0]' register is also connected to the 'Transmitter rate controller'. The 'Transmitter rate controller' and 'Receiver rate controller' are connected to a block labeled '/USARTDIV or 2/USARTDIV (depending on the oversampling mode) (Note 1)'. This block is connected to 'fck (Note 2)' and the 'Transmitter clock'. The 'Transmitter clock' is also connected to the 'Transmit control' block. The 'Receiver clock' is connected to the 'Receiver control' block. The diagram is labeled 'MS19821V8' in the bottom right corner.
Figure 213. USART block diagram. This is a detailed block diagram of a USART (Universal Synchronous/Asynchronous Receiver Transmitter). At the top, a 'PRDATA' bus is shown. Below it, a 'Write' path from '(CPU or DMA)' goes to a 'Transmit shift register', which then connects to a 'Transmit data register (TDR)'. A 'Read' path from a 'Receive shift register' goes to '(CPU or DMA)' via a 'DR (data register)'. The 'TDR' and 'DR' are connected to a 'Receive data register (RDR)'. On the left, there are pins for 'TX', 'RX', 'RTS/DE', and 'CTS'. The 'TX' pin is connected to an 'IrDA SIR ENDEC block', which is also connected to the 'TDR'. The 'RTS/DE' and 'CTS' pins are connected to a 'Hardware flow controller', which is also connected to the 'TDR' and 'RDR'. In the center, there are control and interrupt blocks: 'USART_CR3 register', 'USART_CR2 register', 'USART_CR1 register', 'USART_GTPR register' (with 'GT' and 'PSC' fields), 'CK control', 'Transmit control', 'Wake-up unit', 'Receiver control', 'USART_ISR register', and 'USART interrupt control'. The 'USART_CR1', 'USART_CR2', and 'USART_CR3' registers are connected to the control blocks. The 'USART_GTPR' register is connected to the 'CK control' block, which outputs a 'CK' signal. The 'Transmit control', 'Wake-up unit', and 'Receiver control' blocks are connected to the 'USART_ISR register' and 'USART interrupt control'. At the bottom, a 'Conventional baud rate generator' is shown, containing 'USART_BRR register', 'Transmitter rate controller', 'BRR[15:0]', and 'Receiver rate controller'. The 'Transmitter rate controller' is connected to 'TE' and the 'BRR[15:0]' register. The 'Receiver rate controller' is connected to 'RE' and the 'BRR[15:0]' register. The 'BRR[15:0]' register is also connected to the 'Transmitter rate controller'. The 'Transmitter rate controller' and 'Receiver rate controller' are connected to a block labeled '/USARTDIV or 2/USARTDIV (depending on the oversampling mode) (Note 1)'. This block is connected to 'fck (Note 2)' and the 'Transmitter clock'. The 'Transmitter clock' is also connected to the 'Transmit control' block. The 'Receiver clock' is connected to the 'Receiver control' block. The diagram is labeled 'MS19821V8' in the bottom right corner.
  1. 1. For details on coding USARTDIV in the USART_BRR register, refer to Section 24.5.4: USART baud rate generation .
  2. 2. \( f_{CK} \) can be \( f_{LSE} \) , \( f_{HSI} \) , \( f_{PCLK} \) , \( f_{SYS} \) .

24.5.1 USART character description

The word length can be selected as being either 7 or 8 or 9 bits by programming the M[1:0] bits in the USART_CR1 register (see Figure 214 ).

Note: The 7-bit mode is supported only on some USARTs. In addition, not all modes are supported in 7-bit data length mode. Refer to Section 24.4: USART implementation for additional information.

By default, the signal (TX or RX) is in low state during the start bit. It is in high state during the stop bit.

These values can be inverted, separately for each signal, through polarity configuration control.

An Idle character is interpreted as an entire frame of “1”s (the number of “1”s includes the number of stop bits).

A Break character is interpreted on receiving “0”s for a frame period. At the end of the break frame, the transmitter inserts 2 stop bits.

Transmission and reception are driven by a common baud rate generator, the clock for each is generated when the enable bit is set respectively for the transmitter and receiver.

The details of each block is given below.

Figure 214. Word length programming

Timing diagrams for 9-bit, 8-bit, and 7-bit word lengths showing data frames, idle frames, and break frames relative to a clock signal.

The diagram illustrates the timing for three different word lengths in a USART/UART. Each section shows the relationship between the data frame, idle frame, and break frame relative to a clock signal.

9-bit word length (M = 01), 1 Stop bit

The data frame consists of a Start bit, 9 data bits (Bit0 to Bit8), a Possible Parity bit, and a Stop bit. The clock signal is shown as a series of pulses. The last data clock pulse is controlled by the LBCL bit, marked with **. The idle frame is a continuous high level. The break frame consists of two Stop bits followed by a Start bit.

8-bit word length (M = 00), 1 Stop bit

The data frame consists of a Start bit, 8 data bits (Bit0 to Bit7), a Possible Parity bit, and a Stop bit. The clock signal is shown as a series of pulses. The last data clock pulse is controlled by the LBCL bit, marked with **. The idle frame is a continuous high level. The break frame consists of two Stop bits followed by a Start bit.

7-bit word length (M = 10), 1 Stop bit

The data frame consists of a Start bit, 7 data bits (Bit0 to Bit6), a Possible Parity bit, and a Stop bit. The clock signal is shown as a series of pulses. The last data clock pulse is controlled by the LBCL bit, marked with **. The idle frame is a continuous high level. The break frame consists of two Stop bits followed by a Start bit.

** LBCL bit controls last data clock pulse

MS33194V2

Timing diagrams for 9-bit, 8-bit, and 7-bit word lengths showing data frames, idle frames, and break frames relative to a clock signal.

24.5.2 USART transmitter

The transmitter can send data words of either 7, 8 or 9 bits depending on the M bits status. The Transmit Enable bit (TE) must be set in order to activate the transmitter function. The data in the transmit shift register is output on the TX pin and the corresponding clock pulses are output on the CK pin.

Character transmission

During an USART transmission, data shifts out least significant bit first (default configuration) on the TX pin. In this mode, the USART_TDR register consists of a buffer (TDR) between the internal bus and the transmit shift register (see Figure 213 ).

Every character is preceded by a start bit which is a logic level low for one bit period. The character is terminated by a configurable number of stop bits.

The following stop bits are supported by USART: 0.5, 1, 1.5 and 2 stop bits.

Note: The TE bit must be set before writing the data to be transmitted to the USART_TDR. The TE bit should not be reset during transmission of data. Resetting the TE bit during the transmission will corrupt the data on the TX pin as the baud rate counters will get frozen. The current data being transmitted will be lost. An idle frame will be sent after the TE bit is enabled.

Configurable stop bits

The number of stop bits to be transmitted with every character can be programmed in Control register 2, bits 13,12.

An idle frame transmission will include the stop bits.

A break transmission will be 10 low bits (when M[1:0] = 00) or 11 low bits (when M[1:0] = 01) or 9 low bits (when M[1:0] = 10) followed by 2 stop bits (see Figure 215 ). It is not possible to transmit long breaks (break of length greater than 9/10/11 low bits).

Figure 215. Configurable stop bits

Figure 215. Configurable stop bits. The diagram illustrates three data frame structures for 8-bit data transmission, showing the sequence of bits and the corresponding clock signal. A vertical dashed line marks the start of each frame. A horizontal line labeled 'CLOCK' shows a series of pulses. The first frame shows '8-bit data, 1 Stop bit' with a start bit, 8 data bits (Bit0-Bit7), a possible parity bit, and a stop bit. The second frame shows '8-bit data, 1 1/2 Stop bits' with a start bit, 8 data bits, a possible parity bit, 1.5 stop bits, and a next start bit. The third frame shows '8-bit data, 2 Stop bits' with a start bit, 8 data bits, a possible parity bit, 2 stop bits, and a next start bit. A note indicates that the LBCL bit controls the last data clock pulse.

MSv31887V1

Figure 215. Configurable stop bits. The diagram illustrates three data frame structures for 8-bit data transmission, showing the sequence of bits and the corresponding clock signal. A vertical dashed line marks the start of each frame. A horizontal line labeled 'CLOCK' shows a series of pulses. The first frame shows '8-bit data, 1 Stop bit' with a start bit, 8 data bits (Bit0-Bit7), a possible parity bit, and a stop bit. The second frame shows '8-bit data, 1 1/2 Stop bits' with a start bit, 8 data bits, a possible parity bit, 1.5 stop bits, and a next start bit. The third frame shows '8-bit data, 2 Stop bits' with a start bit, 8 data bits, a possible parity bit, 2 stop bits, and a next start bit. A note indicates that the LBCL bit controls the last data clock pulse.

Character transmission procedure

  1. 1. Program the M bits in USART_CR1 to define the word length.
  2. 2. Select the desired baud rate using the USART_BRR register.
  3. 3. Program the number of stop bits in USART_CR2.
  4. 4. Enable the USART by writing the UE bit in USART_CR1 register to 1.
  5. 5. Select DMA enable (DMAT) in USART_CR3 if multibuffer communication is to take place. Configure the DMA register as explained in multibuffer communication.
  6. 6. Set the TE bit in USART_CR1 to send an idle frame as first transmission.
  7. 7. Write the data to send in the USART_TDR register (this clears the TXE bit). Repeat this for each data to be transmitted in case of single buffer.
  8. 8. After writing the last data into the USART_TDR register, wait until TC=1. This indicates that the transmission of the last frame is complete. This is required for instance when the USART is disabled or enters the Halt mode to avoid corrupting the last transmission.

For code example, refer to A.15.1: USART transmitter configuration code example .

Single byte communication

Clearing the TXE bit is always performed by a write to the transmit data register.

The TXE bit is set by hardware and it indicates:

For code example, refer to A.15.2: USART transmit byte code example .

This flag generates an interrupt if the TXEIE bit is set.

When a transmission is taking place, a write instruction to the USART_TDR register stores the data in the TDR register; next, the data is copied in the shift register at the end of the currently ongoing transmission.

When no transmission is taking place, a write instruction to the USART_TDR register places the data in the shift register, the data transmission starts, and the TXE bit is set.

If a frame is transmitted (after the stop bit) and the TXE bit is set, the TC bit goes high. An interrupt is generated if the TCIE bit is set in the USART_CR1 register.

After writing the last data in the USART_TDR register, it is mandatory to wait for TC=1 before disabling the USART or causing the microcontroller to enter the low-power mode (see Figure 216: TC/TXE behavior when transmitting ).

Figure 216. TC/TXE behavior when transmitting

Timing diagram showing TX line, TXE flag, USART_DR, and TC flag behavior during transmission of three frames.

The diagram shows the relationship between software actions and hardware flags during the transmission of three data frames (F1, F2, F3) following an idle preamble.

ai17121b

Timing diagram showing TX line, TXE flag, USART_DR, and TC flag behavior during transmission of three frames.

For code example, refer to A.15.3: USART transfer complete code example .

Break characters

Setting the SBKRQ bit transmits a break character. The break frame length depends on the M bits (see Figure 214 ).

If a '1' is written to the SBKRQ bit, a break character is sent on the TX line after completing the current character transmission. The SBKF bit is set by the write operation and it is reset by hardware when the break character is completed (during the stop bits after the break character). The USART inserts a logic 1 signal (STOP) for the duration of 2 bits at the end of the break frame to guarantee the recognition of the start bit of the next frame.

In the case the application needs to send the break character following all previously inserted data, including the ones not yet transmitted, the software should wait for the TXE flag assertion before setting the SBKRQ bit.

Idle characters

Setting the TE bit drives the USART to send an idle frame before the first data frame.

24.5.3 USART receiver

The USART can receive data words of either 7, 8 or 9 bits depending on the M bits in the USART_CR1 register.

Start bit detection

The start bit detection sequence is the same when oversampling by 16 or by 8.

In the USART, the start bit is detected when a specific sequence of samples is recognized. This sequence is: 1 1 1 0 X 0 X 0 X 0 X 0 X 0 X 0.

Figure 217. Start bit detection when oversampling by 16 or 8

Timing diagram for start bit detection with oversampling. It shows the RX state (Idle to Start bit), RX line signal, Ideal sample clock (16 samples per bit), and Real sample clock (8 samples per bit). The diagram illustrates the sampling of the start bit (0) and the conditions to validate it: falling edge detection followed by at least 2 bits out of 3 at 0 for two consecutive samplings. The sequence of sampled values is shown as 1 1 1 0 X 0 X 0 X 0 X 0 X 0 X 0.

The diagram illustrates the start bit detection process. The RX state transitions from Idle to Start bit. The RX line shows a falling edge for the start bit. Ideal sample clock has 16 samples per bit, while Real sample clock has 8 samples per bit. Sampling occurs at the 3rd, 5th, 7th, 8th, 9th, and 10th bits. The sequence of sampled values is 1 1 1 0 X 0 X 0 X 0 X 0 X 0 X 0. Conditions to validate the start bit include falling edge detection and at least 2 bits out of 3 at 0 for two consecutive samplings. Timing markers show 7/16 and 6/16 of a bit time.

Timing diagram for start bit detection with oversampling. It shows the RX state (Idle to Start bit), RX line signal, Ideal sample clock (16 samples per bit), and Real sample clock (8 samples per bit). The diagram illustrates the sampling of the start bit (0) and the conditions to validate it: falling edge detection followed by at least 2 bits out of 3 at 0 for two consecutive samplings. The sequence of sampled values is shown as 1 1 1 0 X 0 X 0 X 0 X 0 X 0 X 0.

Note: If the sequence is not complete, the start bit detection aborts and the receiver returns to the idle state (no flag is set), where it waits for a falling edge.

The start bit is confirmed (RXNE flag set, interrupt generated if RXNEIE=1) if the 3 sampled bits are at 0 (first sampling on the 3rd, 5th and 7th bits finds the 3 bits at 0 and second sampling on the 8th, 9th and 10th bits also finds the 3 bits at 0).

The start bit is validated (RXNE flag set, interrupt generated if RXNEIE=1) but the NF noise flag is set if,

    1. for both samplings, 2 out of the 3 sampled bits are at 0 (sampling on the 3rd, 5th and 7th bits and sampling on the 8th, 9th and 10th bits)
  1. or
    1. for one of the samplings (sampling on the 3rd, 5th and 7th bits or sampling on the 8th, 9th and 10th bits), 2 out of the 3 bits are found at 0.

If neither conditions a. or b. are met, the start detection aborts and the receiver returns to the idle state (no flag is set).

Character reception

During an USART reception, data shifts in least significant bit first (default configuration) through the RX pin. In this mode, the USART_RDR register consists of a buffer (RDR) between the internal bus and the receive shift register.

Character reception procedure

  1. 1. Program the M bits in USART_CR1 to define the word length.
  2. 2. Select the desired baud rate using the baud rate register USART_BRR
  3. 3. Program the number of stop bits in USART_CR2.
  4. 4. Enable the USART by writing the UE bit in USART_CR1 register to 1.
  5. 5. Select DMA enable (DMAR) in USART_CR3 if multibuffer communication is to take place. Configure the DMA register as explained in multibuffer communication.
  6. 6. Set the RE bit USART_CR1. This enables the receiver which begins searching for a start bit.

For code example, refer to A.15.4: USART receiver configuration code example .

When a character is received:

For code example, refer to A.15.5: USART receive byte code example .

Break character

When a break character is received, the USART handles it as a framing error.

Idle character

When an idle frame is detected, there is the same procedure as for a received data character plus an interrupt if the IDLEIE bit is set.

Overrun error

An overrun error occurs when a character is received when RXNE has not been reset. Data can not be transferred from the shift register to the RDR register until the RXNE bit is cleared.

The RXNE flag is set after every byte received. An overrun error occurs if RXNE flag is set when the next data is received or the previous DMA request has not been serviced. When an overrun error occurs:

Note: The ORE bit, when set, indicates that at least 1 data has been lost. There are two possibilities:

Selecting the proper oversampling method

When the dual clock domain with the wakeup from Stop mode is supported, the clock source can be one of the following sources: PCLK (default), LSE, HSI16 or SYSCLK. Otherwise, the USART clock source is PCLK.

Choosing LSE or HSI16 as clock source may allow the USART to receive data while the MCU is in low-power mode. Depending on the received data and wakeup mode selection, the USART wakes up the MCU, when needed, in order to transfer the received data by software reading the USART_RDR register or by DMA.

For the other clock sources, the system must be active in order to allow USART communication.

The receiver implements different user-configurable oversampling techniques for data recovery by discriminating between valid incoming data and noise. This allows a trade-off between the maximum communication speed and noise/clock inaccuracy immunity.

The oversampling method can be selected by programming the OVER8 bit in the USART_CR1 register and can be either 16 or 8 times the baud rate clock ( Figure 218 and Figure 219 ).

Depending on the application:

Programming the ONEBIT bit in the USART_CR3 register selects the method used to evaluate the logic level. There are two options:

Depending on the application:

When noise is detected in a frame:

The NF bit is reset by setting NFCF bit in ICR register.

Note: Oversampling by 8 is not available in LIN, Smartcard and IrDA modes. In those modes, the OVER8 bit is forced to '0' by hardware.

Figure 218. Data sampling when oversampling by 16

Timing diagram for data sampling when oversampling by 16. The diagram shows the RX line and Sample clock signals. The RX line is sampled 16 times per bit time. The sample clock is shown as a series of 16 pulses. The first 7 samples are labeled 1 through 7. The next 3 samples (8, 9, 10) are labeled 'sampled values'. The remaining 6 samples (11 through 16) are shown. The total bit time is divided into 16 equal parts. The first 7/16 of the bit time corresponds to the first 7 samples. The next 6/16 of the bit time corresponds to the 6 sampled values (samples 8-13). The final 7/16 of the bit time corresponds to the last 6 samples (samples 14-16).

The diagram illustrates the timing for data sampling with 16x oversampling. A horizontal line represents the RX line, and a series of vertical arrows represents the Sample clock. The clock pulses are numbered 1 through 16. The first 7 pulses (1-7) are grouped by a bracket labeled '7/16'. The next 6 pulses (8-13) are grouped by a bracket labeled 'sampled values'. The final 3 pulses (14-16) are grouped by a bracket labeled '6/16'. A horizontal double-headed arrow at the bottom indicates the full 'One bit time' spanning all 16 samples. The diagram is labeled 'MSv31152V1' in the bottom right corner.

Timing diagram for data sampling when oversampling by 16. The diagram shows the RX line and Sample clock signals. The RX line is sampled 16 times per bit time. The sample clock is shown as a series of 16 pulses. The first 7 samples are labeled 1 through 7. The next 3 samples (8, 9, 10) are labeled 'sampled values'. The remaining 6 samples (11 through 16) are shown. The total bit time is divided into 16 equal parts. The first 7/16 of the bit time corresponds to the first 7 samples. The next 6/16 of the bit time corresponds to the 6 sampled values (samples 8-13). The final 7/16 of the bit time corresponds to the last 6 samples (samples 14-16).

Figure 219. Data sampling when oversampling by 8

Timing diagram for data sampling with 8x oversampling. The RX line shows a bit transition. The Sample clock (x8) has 8 pulses per bit time. Sampling occurs at pulses 4, 5, and 6, labeled 'sampled values'. The bit time is divided into 8 parts. The first 3/8 are before the first sample (pulse 4). The interval between pulse 4 and 6 is 2/8. The interval between pulse 6 and the end of the bit time is 3/8. The diagram is labeled MSv31153V1.
Timing diagram for data sampling with 8x oversampling. The RX line shows a bit transition. The Sample clock (x8) has 8 pulses per bit time. Sampling occurs at pulses 4, 5, and 6, labeled 'sampled values'. The bit time is divided into 8 parts. The first 3/8 are before the first sample (pulse 4). The interval between pulse 4 and 6 is 2/8. The interval between pulse 6 and the end of the bit time is 3/8. The diagram is labeled MSv31153V1.

Table 118. Noise detection from sampled data

Sampled valueNE statusReceived bit value
00000
00110
01010
01111
10010
10111
11011
11101

Framing error

A framing error is detected when the stop bit is not recognized on reception at the expected time, following either a de-synchronization or excessive noise.

When the framing error is detected:

The FE bit is reset by writing 1 to the FECF in the USART_ICR register.

Configurable stop bits during reception

The number of stop bits to be received can be configured through the control bits of Control Register 2 - it can be either 1 or 2 in normal mode and 0.5 or 1.5 in Smartcard mode.

24.5.4 USART baud rate generation

The baud rate for the receiver and transmitter (Rx and Tx) are both set to the same value as programmed in the USART_BRR register.

Equation 1: Baud rate for standard USART (SPI mode included) (OVER8 = 0 or 1)

In case of oversampling by 16, the equation is:

\[ \text{Tx/Rx baud} = \frac{f_{\text{CK}}}{\text{USARTDIV}} \]

In case of oversampling by 8, the equation is:

\[ \text{Tx/Rx baud} = \frac{2 \times f_{\text{CK}}}{\text{USARTDIV}} \]

Equation 2: Baud rate in Smartcard, LIN and IrDA modes (OVER8 = 0)

In Smartcard, LIN and IrDA modes, only Oversampling by 16 is supported:

\[ \text{Tx/Rx baud} = \frac{f_{\text{CK}}}{\text{USARTDIV}} \]

USARTDIV is an unsigned fixed point number that is coded on the USART_BRR register.

Note: The baud counters are updated to the new value in the baud registers after a write operation to USART_BRR. Hence the baud rate register value should not be changed during communication.

In case of oversampling by 16 or 8, USARTDIV must be greater than or equal to 16d.

How to derive USARTDIV from USART_BRR register values

Example 1

To obtain 9600 baud with \( f_{CK} = 8 \) MHz.

Example 2

To obtain 921.6 kbaud with \( f_{CK} = 32 \) MHz.

Table 119. Error calculation for programmed baud rates at \( f_{CK} = 32 \) MHz in both cases of oversampling by 16 or by 8 (1)
Baud rateOversampling by 16 (OVER8 = 0)Oversampling by 8 (OVER8 = 1)
S.NoDesiredActualBRR% Error =
(Calculated -
Desired)B.Rate /
Desired B.Rate
ActualBRR% Error
12.4 kbaud2.4 kbaud0x341502.4 kbaud0x68250
29.6 kbaud9.6 kbaud0xD0509.6 kbaud0x1A050
319.2 kbaud19.19 kbaud0x6830.0219.2 kbaud0xD020
438.4 kbaud38.41 kbaud0x3410.0438.39 kbaud0x6810.02
557.6 kbaud57.55 kbaud0x22C0.0857.6 kbaud0x4530
6115.2 kbaud115.1 kbaud0x1160.08115.11 kbaud0x2260.08
7230.4 kbaud230.21 kbaud0x8B0.08230.21 kbaud0x1130.08
8460.8 kbaud463.76 kbaud0x0450.64460.06 kbaud0x850.08
9921.6 kbaud914.28 kbaud0x230.79927.5 kbaud0x420.79
102 Mbaud2 Mbaud0x1002 Mbaud0x200
124Mbaud4MbaudNANA4Mbaud0x100

1. The lower the CPU clock the lower the accuracy for a particular baud rate. The upper limit of the achievable baud rate can be fixed with these data.

24.5.5 Tolerance of the USART receiver to clock deviation

The asynchronous receiver of the USART works correctly only if the total clock system deviation is less than the tolerance of the USART receiver. The causes which contribute to the total deviation are:

\[ DTRA + DQUANT + DREC + DTCL + DWU < \text{USART receiver's tolerance} \]

where

DWU is the error due to sampling point deviation when the wakeup from Stop mode is used.

when M[1:0] = 01:

\[ DWU = \frac{t_{WUUSART}}{11 \times T_{bit}} \]

when M[1:0] = 00:

\[ DWU = \frac{t_{WUUSART}}{10 \times T_{bit}} \]

when M[1:0] = 10:

\[ DWU = \frac{t_{WUUSART}}{9 \times T_{bit}} \]

\( t_{WUUSART} \) is the time between:

\( t_{WUUSART} \) corresponds to \( t_{WUSTOP} \) value provided in the datasheet.

The USART receiver can receive data correctly at up to the maximum tolerated deviation specified in Table 120 and Table 121 depending on the following choices:

Table 120. Tolerance of the USART receiver when BRR [3:0] = 0000

M bitsOVER8 bit = 0OVER8 bit = 1
ONEBIT=0ONEBIT=1ONEBIT=0ONEBIT=1
003.75%4.375%2.50%3.75%
013.41%3.97%2.27%3.41%
104.16%4.86%2.77%4.16%

Table 121. Tolerance of the USART receiver when BRR [3:0] is different from 0000

M bitsOVER8 bit = 0OVER8 bit = 1
ONEBIT=0ONEBIT=1ONEBIT=0ONEBIT=1
003.33%3.88%2%3%
013.03%3.53%1.82%2.73%
103.7%4.31%2.22%3.33%

Note: The data specified in Table 120 and Table 121 may slightly differ in the special case when the received frames contain some Idle frames of exactly 10-bit durations when M bits = 00 (11-bit durations when M bits = 01 or 9- bit durations when M bits = 10).

24.5.6 USART auto baud rate detection

The USART is able to detect and automatically set the USART_BRR register value based on the reception of one character. Automatic baud rate detection is useful under two circumstances:

The clock source frequency must be compatible with the expected communication speed (when oversampling by 16, the baud rate is between \( f_{CK}/65535 \) and \( f_{CK}/16 \) . when oversampling by 8, the baud rate is between \( f_{CK}/65535 \) and \( f_{CK}/8 \) ).

Before activating the auto baud rate detection, the auto baud rate detection mode must be chosen. There are various modes based on different character patterns.

They can be chosen through the ABRMOD[1:0] field in the USART_CR2 register. In these auto baud rate modes, the baud rate is measured several times during the synchronization data reception and each measurement is compared to the previous one.

These modes are:

In parallel, another check is performed for each intermediate transition of RX line. An error is generated if the transitions on RX are not sufficiently synchronized with the receiver (the receiver being based on the baud rate calculated on bit 0).

Prior to activating auto baud rate detection, the USART_BRR register must be initialized by writing a non-zero baud rate value.

The automatic baud rate detection is activated by setting the ABREN bit in the USART_CR2 register. The USART will then wait for the first character on the RX line. The auto baud rate operation completion is indicated by the setting of the ABRF flag in the USART_ISR register. If the line is noisy, the correct baud rate detection cannot be guaranteed. In this case the BRR value may be corrupted and the ABRE error flag will be set. This also happens if the communication speed is not compatible with the automatic baud rate

detection range (bit duration not between 16 and 65536 clock periods (oversampling by 16) and not between 8 and 65536 clock periods (oversampling by 8)).

The RXNE interrupt will signal the end of the operation.

At any later time, the auto baud rate detection may be relaunched by resetting the ABRF flag (by writing a 0).

Note: If the USART is disabled (UE=0) during an auto baud rate operation, the BRR value may be corrupted.

24.5.7 Multiprocessor communication using USART

In multiprocessor communication, the following bits are to be kept cleared:

It is possible to perform multiprocessor communication with the USART (with several USARTs connected in a network). For instance one of the USARTs can be the master, its TX output connected to the RX inputs of the other USARTs. The others are slaves, their respective TX outputs are logically ANDed together and connected to the RX input of the master.

In multiprocessor configurations it is often desirable that only the intended message recipient should actively receive the full message contents, thus reducing redundant USART service overhead for all non addressed receivers.

The non addressed devices may be placed in mute mode by means of the muting function. In order to use the mute mode feature, the MME bit must be set in the USART_CR1 register.

In mute mode:

The USART can enter or exit from mute mode using one of two methods, depending on the WAKE bit in the USART_CR1 register:

Idle line detection (WAKE=0)

The USART enters mute mode when the MMRQ bit is written to 1 and the RWU is automatically set.

It wakes up when an Idle frame is detected. Then the RWU bit is cleared by hardware but the IDLE bit is not set in the USART_ISR register. An example of mute mode behavior using Idle line detection is given in Figure 220 .

Figure 220. Mute mode using Idle line detection

Timing diagram for Figure 220 showing RX and RWU signals. The RX signal shows a sequence of Data 1, Data 2, Data 3, Data 4, IDLE, Data 5, and Data 6. The RWU signal transitions from a low state to a high state (Mute mode) when MMRQ is written to 1. It returns to a low state (Normal mode) when an Idle frame is detected. RXNE flags are shown rising at the end of Data 5 and Data 6.

The diagram illustrates the relationship between the RX (Receive) signal and the RWU (Receive Wakeup) signal during Idle line detection. The RX signal shows a sequence of data frames: Data 1, Data 2, Data 3, Data 4, followed by an IDLE state, then Data 5, and Data 6. The RWU signal is initially low. When the MMRQ bit is written to 1, the RWU signal goes high, entering 'Mute mode'. The RWU signal returns to low, entering 'Normal mode', when an Idle frame is detected. RXNE (Receive Not Empty) flags are indicated by arrows pointing to the rising edges of the RX signal at the end of Data 5 and Data 6. The diagram is labeled MSv31154V1.

Timing diagram for Figure 220 showing RX and RWU signals. The RX signal shows a sequence of Data 1, Data 2, Data 3, Data 4, IDLE, Data 5, and Data 6. The RWU signal transitions from a low state to a high state (Mute mode) when MMRQ is written to 1. It returns to a low state (Normal mode) when an Idle frame is detected. RXNE flags are shown rising at the end of Data 5 and Data 6.

Note: If the MMRQ is set while the IDLE character has already elapsed, mute mode will not be entered (RWU is not set).

If the USART is activated while the line is IDLE, the idle state is detected after the duration of one IDLE frame (not only after the reception of one character frame).

4-bit/7-bit address mark detection (WAKE=1)

In this mode, bytes are recognized as addresses if their MSB is a '1' otherwise they are considered as data. In an address byte, the address of the targeted receiver is put in the 4 or 7 LSBs. The choice of 7 or 4-bit address detection is done using the ADDM7 bit. This 4-bit/7-bit word is compared by the receiver with its own address which is programmed in the ADD bits in the USART_CR2 register.

Note: In 7-bit and 9-bit data modes, address detection is done on 6-bit and 8-bit addresses (ADD[5:0] and ADD[7:0]) respectively.

The USART enters mute mode when an address character is received which does not match its programmed address. In this case, the RWU bit is set by hardware. The RXNE flag is not set for this address byte and no interrupt or DMA request is issued when the USART enters mute mode.

The USART also enters mute mode when the MMRQ bit is written to 1. The RWU bit is also automatically set in this case.

The USART exits from mute mode when an address character is received which matches the programmed address. Then the RWU bit is cleared and subsequent bytes are received normally. The RXNE bit is set for the address character since the RWU bit has been cleared.

An example of mute mode behavior using address mark detection is given in Figure 221 .

Figure 221. Mute mode using address mark detection

Timing diagram for Figure 221 showing RX and RWU signals. The RX signal shows a sequence of IDLE, Addr=0, Data 1, Data 2, IDLE, Addr=1, Data 3, Data 4, Addr=2, Data 5. The RWU signal shows transitions between Mute mode and Normal mode based on address matching. Annotations include RXNE flags, MMNQ write, and non-matching/matching addresses.

In this example, the current address of the receiver is 1 (programmed in the USART_CR2 register)

The diagram illustrates the RX and RWU signals during address mark detection. The RX signal shows a sequence of IDLE, Addr=0, Data 1, Data 2, IDLE, Addr=1, Data 3, Data 4, Addr=2, Data 5. The RWU signal shows transitions between Mute mode and Normal mode based on address matching. Annotations include RXNE flags, MMNQ write, and non-matching/matching addresses.

MSV31155V1

Timing diagram for Figure 221 showing RX and RWU signals. The RX signal shows a sequence of IDLE, Addr=0, Data 1, Data 2, IDLE, Addr=1, Data 3, Data 4, Addr=2, Data 5. The RWU signal shows transitions between Mute mode and Normal mode based on address matching. Annotations include RXNE flags, MMNQ write, and non-matching/matching addresses.

24.5.8 Modbus communication using USART

The USART offers basic support for the implementation of Modbus/RTU and Modbus/ASCII protocols. Modbus/RTU is a half duplex, block transfer protocol. The control part of the protocol (address recognition, block integrity control and command interpretation) must be implemented in software.

The USART offers basic support for the end of the block detection, without software overhead or other resources.

Modbus/RTU

In this mode, the end of one block is recognized by a “silence” (idle line) for more than 2 character times. This function is implemented through the programmable timeout function.

The timeout function and interrupt must be activated, through the RTOEN bit in the USART_CR2 register and the RTOIE in the USART_CR1 register. The value corresponding to a timeout of 2 character times (for example 22 x bit duration) must be programmed in the RTO register. When the receive line is idle for this duration, after the last stop bit is received, an interrupt is generated, informing the software that the current block reception is completed.

Modbus/ASCII

In this mode, the end of a block is recognized by a specific (CR/LF) character sequence. The USART manages this mechanism using the character match function.

By programming the LF ASCII code in the ADD[7:0] field and by activating the character match interrupt (CMIE=1), the software is informed when a LF has been received and can check the CR/LF in the DMA buffer.

24.5.9 USART parity control

Parity control (generation of parity bit in transmission and parity checking in reception) can be enabled by setting the PCE bit in the USART_CR1 register. Depending on the frame length defined by the M bits, the possible USART frame formats are as listed in Table 122 .

Table 122. Frame formats

M bitsPCE bitUSART frame (1)
000| SB | 8-bit data | STB |
001| SB | 7-bit data | PB | STB |
010| SB | 9-bit data | STB |
011| SB | 8-bit data | PB | STB |
100| SB | 7-bit data | STB |
101| SB | 6-bit data | PB | STB |

1. Legends: SB: start bit, STB: stop bit, PB: parity bit. In the data register, the PB is always taking the MSB position (9th, 8th or 7th, depending on the M bits value).

Even parity

The parity bit is calculated to obtain an even number of “1s” inside the frame of the 6, 7 or 8 LSB bits (depending on M bits values) and the parity bit.

As an example, if data=00110101, and 4 bits are set, then the parity bit will be 0 if even parity is selected (PS bit in USART_CR1 = 0).

Odd parity

The parity bit is calculated to obtain an odd number of “1s” inside the frame made of the 6, 7 or 8 LSB bits (depending on M bits values) and the parity bit.

As an example, if data=00110101 and 4 bits set, then the parity bit will be 1 if odd parity is selected (PS bit in USART_CR1 = 1).

Parity checking in reception

If the parity check fails, the PE flag is set in the USART_ISR register and an interrupt is generated if PEIE is set in the USART_CR1 register. The PE flag is cleared by software writing 1 to the PECF in the USART_ICR register.

Parity generation in transmission

If the PCE bit is set in USART_CR1, then the MSB bit of the data written in the data register is transmitted but is changed by the parity bit (even number of “1s” if even parity is selected (PS=0) or an odd number of “1s” if odd parity is selected (PS=1)).

24.5.10 USART LIN (local interconnection network) mode

This section is relevant only when LIN mode is supported. Please refer to Section 24.4: USART implementation on page 659 .

The LIN mode is selected by setting the LINEN bit in the USART_CR2 register. In LIN mode, the following bits must be kept cleared:

For code example, refer to A.15.6: USART LIN mode code example .

LIN transmission

The procedure explained in Section 24.5.2: USART transmitter has to be applied for LIN Master transmission. It must be the same as for normal USART transmission with the following differences:

LIN reception

When LIN mode is enabled, the break detection circuit is activated. The detection is totally independent from the normal USART receiver. A break can be detected whenever it occurs, during Idle state or during a frame.

When the receiver is enabled (RE=1 in USART_CR1), the circuit looks at the RX input for a start signal. The method for detecting start bits is the same when searching break characters or data. After a start bit has been detected, the circuit samples the next bits exactly like for the data (on the 8th, 9th and 10th samples). If 10 (when the LBDL = 0 in USART_CR2) or 11 (when LBDL=1 in USART_CR2) consecutive bits are detected as '0', and are followed by a delimiter character, the LBDF flag is set in USART_ISR. If the LBDIE bit=1, an interrupt is generated. Before validating the break, the delimiter is checked for as it signifies that the RX line has returned to a high level.

If a '1' is sampled before the 10 or 11 have occurred, the break detection circuit cancels the current detection and searches for a start bit again.

If the LIN mode is disabled (LINEN=0), the receiver continues working as normal USART, without taking into account the break detection.

If the LIN mode is enabled (LINEN=1), as soon as a framing error occurs (i.e. stop bit detected at '0', which will be the case for any break frame), the receiver stops until the break detection circuit receives either a '1', if the break word was not complete, or a delimiter character if a break has been detected.

The behavior of the break detector state machine and the break flag is shown on the Figure 222: Break detection in LIN mode (11-bit break length - LBDL bit is set) on page 682 .

Examples of break frames are given on Figure 223: Break detection in LIN mode vs. Framing error detection on page 683 .

Figure 222. Break detection in LIN mode (11-bit break length - LBDL bit is set)

Timing diagram for Case 1: RX line shows a short break frame. Capture strobe pulses are shown. Break state machine transitions from Idle to Bit0 and back to Idle before Bit10. Read samples are 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1. Timing diagram for Case 2: RX line shows a break frame of exactly 11 bits. Capture strobe pulses are shown. Break state machine reaches Bit10. Read samples are all 0. LBDF is set immediately after Bit10. Timing diagram for Case 3: RX line shows a long break frame. Capture strobe pulses are shown. Break state machine reaches Bit10 and then enters 'wait delimiter' state. Read samples are all 0. LBDF is set after Bit10.

Case 1: break signal not long enough => break discarded, LBDF is not set

RX lineBreak frame
Capture strobe|||||||||||
Break state machineIdleBit0Bit1Bit2Bit3Bit4Bit5Bit6Bit7Bit8Bit9Bit10Idle
Read samples00000000001

Case 2: break signal just long enough => break detected, LBDF is set

RX lineBreak frame
Capture strobe|||||||||||
Break state machineIdleBit0Bit1Bit2Bit3Bit4Bit5Bit6Bit7Bit8Bit9Bit10Idle
Read samples00000000000
LBDFDelimiter is immediate

Case 3: break signal long enough => break detected, LBDF is set

RX lineBreak frame
Capture strobe|||||||||||
Break state machineIdleBit0Bit1Bit2Bit3Bit4Bit5Bit6Bit7Bit8Bit9Bit10wait delimiterIdle
Read samples00000000000
LBDF
Timing diagram for Case 1: RX line shows a short break frame. Capture strobe pulses are shown. Break state machine transitions from Idle to Bit0 and back to Idle before Bit10. Read samples are 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1. Timing diagram for Case 2: RX line shows a break frame of exactly 11 bits. Capture strobe pulses are shown. Break state machine reaches Bit10. Read samples are all 0. LBDF is set immediately after Bit10. Timing diagram for Case 3: RX line shows a long break frame. Capture strobe pulses are shown. Break state machine reaches Bit10 and then enters 'wait delimiter' state. Read samples are all 0. LBDF is set after Bit10.

MSv31156V1

Figure 223. Break detection in LIN mode vs. Framing error detection

Figure 223. Break detection in LIN mode vs. Framing error detection. The diagram shows two cases of break detection. Case 1: break occurring after an Idle. The RX line shows data 1, IDLE, BREAK, data 2 (0x55), and data 3 (header). The RXNE/FE line is high during IDLE and low during BREAK. The LBDF line is high during IDLE and low during BREAK. Case 2: break occurring while data is being received. The RX line shows data 1, data 2, BREAK, data 2 (0x55), and data 3 (header). The RXNE/FE line is high during data 1 and data 2, and low during BREAK. The LBDF line is high during data 1 and data 2, and low during BREAK. Both cases show a '1 data time' duration for the BREAK signal.

Case 1: break occurring after an Idle

RX line: [data 1] [IDLE] [BREAK] [data 2 (0x55)] [data 3 (header)]

1 data time (BREAK duration)

RXNE /FE: [Idle state] [Break state]

LBDF: [Idle state] [Break state]

Case 2: break occurring while data is being received

RX line: [data 1] [data 2] [BREAK] [data 2 (0x55)] [data 3 (header)]

1 data time (BREAK duration)

RXNE /FE: [Data state] [Break state]

LBDF: [Data state] [Break state]

MSv31157V1

Figure 223. Break detection in LIN mode vs. Framing error detection. The diagram shows two cases of break detection. Case 1: break occurring after an Idle. The RX line shows data 1, IDLE, BREAK, data 2 (0x55), and data 3 (header). The RXNE/FE line is high during IDLE and low during BREAK. The LBDF line is high during IDLE and low during BREAK. Case 2: break occurring while data is being received. The RX line shows data 1, data 2, BREAK, data 2 (0x55), and data 3 (header). The RXNE/FE line is high during data 1 and data 2, and low during BREAK. The LBDF line is high during data 1 and data 2, and low during BREAK. Both cases show a '1 data time' duration for the BREAK signal.

24.5.11 USART synchronous mode

The synchronous mode is selected by writing the CLKEN bit in the USART_CR2 register to 1. In synchronous mode, the following bits must be kept cleared:

In this mode, the USART can be used to control bidirectional synchronous serial communications in master mode. The CK pin is the output of the USART transmitter clock. No clock pulses are sent to the CK pin during start bit and stop bit. Depending on the state of the LBCL bit in the USART_CR2 register, clock pulses are, or are not, generated during the last valid data bit (address mark). The CPOL bit in the USART_CR2 register is used to select the clock polarity, and the CPHA bit in the USART_CR2 register is used to select the phase of the external clock (see Figure 224 , Figure 225 and Figure 226 ).

During the Idle state, preamble and send break, the external CK clock is not activated.

In synchronous mode the USART transmitter works exactly like in asynchronous mode. But as CK is synchronized with TX (according to CPOL and CPHA), the data on TX is synchronous.

In this mode the USART receiver works in a different manner compared to the asynchronous mode. If RE=1, the data is sampled on CK (rising or falling edge, depending on CPOL and CPHA), without any oversampling. A setup and a hold time must be respected (which depends on the baud rate: 1/16 bit duration).

Note: The CK pin works in conjunction with the TX pin. Thus, the clock is provided only if the transmitter is enabled (TE=1) and data is being transmitted (the data register USART_TDR written). This means that it is not possible to receive synchronous data without transmitting data.

The LBCL, CPOL and CPHA bits have to be selected when the USART is disabled (UE=0) to ensure that the clock pulses function correctly.

For code example, refer to A.15.6: USART LIN mode code example .

Figure 224. USART example of synchronous transmission

Figure 224: USART example of synchronous transmission. A block diagram showing a USART block on the left and a 'Synchronous device (slave SPI)' on the right. Three signal lines connect them: RX (USART input) from 'Data out' (Slave output), TX (USART output) to 'Data in' (Slave input), and CK (USART output) to 'Clock' (Slave input).

MSv31158V2

Figure 224: USART example of synchronous transmission. A block diagram showing a USART block on the left and a 'Synchronous device (slave SPI)' on the right. Three signal lines connect them: RX (USART input) from 'Data out' (Slave output), TX (USART output) to 'Data in' (Slave input), and CK (USART output) to 'Clock' (Slave input).

Figure 225. USART data clock timing diagram (M bits = 00)

Figure 225: USART data clock timing diagram for 8-bit data (M bits = 00). The diagram shows four clock waveforms corresponding to different CPOL and CPHA settings: (CPOL=0, CPHA=0), (CPOL=0, CPHA=1), (CPOL=1, CPHA=0), and (CPOL=1, CPHA=1). Below the clocks, it shows 'Data on TX (from master)' and 'Data on RX (from slave)' waveforms, both transmitting 8 bits from bit 0 (LSB) to bit 7 (MSB) between Start and Stop conditions. A 'Capture strobe' line indicates sampling points. An asterisk on the last clock pulse of each waveform refers to the footnote.

MSv34709V2

*LBCL bit controls last data pulse

Figure 225: USART data clock timing diagram for 8-bit data (M bits = 00). The diagram shows four clock waveforms corresponding to different CPOL and CPHA settings: (CPOL=0, CPHA=0), (CPOL=0, CPHA=1), (CPOL=1, CPHA=0), and (CPOL=1, CPHA=1). Below the clocks, it shows 'Data on TX (from master)' and 'Data on RX (from slave)' waveforms, both transmitting 8 bits from bit 0 (LSB) to bit 7 (MSB) between Start and Stop conditions. A 'Capture strobe' line indicates sampling points. An asterisk on the last clock pulse of each waveform refers to the footnote.

Figure 226. USART data clock timing diagram (M bits = 01)

Figure 226: USART data clock timing diagram for M bits = 01 (9 data bits). The diagram shows four clock configurations: CPOL=0/CPHA=0, CPOL=0/CPHA=1, CPOL=1/CPHA=0, and CPOL=1/CPHA=1. It illustrates the timing for 'Data on TX (from master)' and 'Data on RX (from slave)' starting from an idle state, through a start bit, 9 data bits (0 to 8, where 0 is LSB and 8 is MSB), and a stop bit. A 'Capture strobe' signal is shown at the bottom. Asterisks indicate that the LBCL bit controls the last data pulse.

Idle or preceding transmission

Start

M bits = 01 (9 data bits)

Stop

Idle or next transmission

Clock (CPOL=0, CPHA=0)

Clock (CPOL=0, CPHA=1)

Clock (CPOL=1, CPHA=0)

Clock (CPOL=1, CPHA=1)

Data on TX (from master)

Start LSB 0 1 2 3 4 5 6 7 8 MSB Stop

Data on RX (from slave)

LSB 0 1 2 3 4 5 6 7 8 MSB

Capture strobe

*LBCL bit controls last data pulse

Figure 226: USART data clock timing diagram for M bits = 01 (9 data bits). The diagram shows four clock configurations: CPOL=0/CPHA=0, CPOL=0/CPHA=1, CPOL=1/CPHA=0, and CPOL=1/CPHA=1. It illustrates the timing for 'Data on TX (from master)' and 'Data on RX (from slave)' starting from an idle state, through a start bit, 9 data bits (0 to 8, where 0 is LSB and 8 is MSB), and a stop bit. A 'Capture strobe' signal is shown at the bottom. Asterisks indicate that the LBCL bit controls the last data pulse.

Figure 227. RX data setup/hold time

Figure 227: RX data setup/hold time diagram. It shows a clock signal CK with a capture strobe on the rising edge. Below it, the 'Data on RX (from slave)' waveform shows a 'Valid DATA bit'. The setup time tSETUP is the duration from the data transition to the rising clock edge. The hold time tHOLD is the duration from the rising clock edge to the next data transition.

CK
(capture strobe on CK rising
edge in this example)

Data on RX (from slave)

Valid DATA bit

\( t_{SETUP} \) \( t_{HOLD} \)

\( t_{SETUP}=t_{HOLD} \) 1/16 bit time

Figure 227: RX data setup/hold time diagram. It shows a clock signal CK with a capture strobe on the rising edge. Below it, the 'Data on RX (from slave)' waveform shows a 'Valid DATA bit'. The setup time tSETUP is the duration from the data transition to the rising clock edge. The hold time tHOLD is the duration from the rising clock edge to the next data transition.

Note: The function of CK is different in Smartcard mode. Refer to Section 24.5.13: USART Smartcard mode for more details.

24.5.12 USART Single-wire Half-duplex communication

Single-wire Half-duplex mode is selected by setting the HDSEL bit in the USART_CR3 register. In this mode, the following bits must be kept cleared:

The USART can be configured to follow a Single-wire Half-duplex protocol where the TX and RX lines are internally connected. The selection between half- and Full-duplex communication is made with a control bit HDSEL in USART_CR3.

As soon as HDSEL is written to 1:

Apart from this, the communication protocol is similar to normal USART mode. Any conflicts on the line must be managed by software (by the use of a centralized arbiter, for instance). In particular, the transmission is never blocked by hardware and continues as soon as data is written in the data register while the TE bit is set.

For code example, refer to A.15.8: USART single-wire half-duplex code example .

24.5.13 USART Smartcard mode

This section is relevant only when Smartcard mode is supported. Please refer to Section 24.4: USART implementation on page 659 .

Smartcard mode is selected by setting the SCEN bit in the USART_CR3 register. In Smartcard mode, the following bits must be kept cleared:

Moreover, the CLKEN bit may be set in order to provide a clock to the smartcard.

The smartcard interface is designed to support asynchronous protocol for smartcards as defined in the ISO 7816-3 standard. Both T=0 (character mode) and T=1 (block mode) are supported.

The USART should be configured as:

For code example, refer to A.15.9: USART smartcard mode code example .

In T=0 (character) mode, the parity error is indicated at the end of each character during the guard time period.

Figure 228 shows examples of what can be seen on the data line with and without parity error.

Figure 228. ISO 7816-3 asynchronous protocol

Figure 228. ISO 7816-3 asynchronous protocol. The diagram shows two timing diagrams for the ISO 7816-3 asynchronous protocol. The top diagram, 'Without Parity error', shows a sequence of bits: S (Start bit), 0, 1, 2, 3, 4, 5, 6, 7, p (Parity bit). A vertical dashed line marks the 'Guard time' after the parity bit. The bottom diagram, 'With Parity error', shows the same sequence of bits, but after the parity bit, the line is pulled low for a short duration, labeled 'Line pulled low by receiver during stop in case of parity error'. A vertical dashed line marks the 'Guard time' after the parity bit. The diagram is labeled MSv31162V1.
Figure 228. ISO 7816-3 asynchronous protocol. The diagram shows two timing diagrams for the ISO 7816-3 asynchronous protocol. The top diagram, 'Without Parity error', shows a sequence of bits: S (Start bit), 0, 1, 2, 3, 4, 5, 6, 7, p (Parity bit). A vertical dashed line marks the 'Guard time' after the parity bit. The bottom diagram, 'With Parity error', shows the same sequence of bits, but after the parity bit, the line is pulled low for a short duration, labeled 'Line pulled low by receiver during stop in case of parity error'. A vertical dashed line marks the 'Guard time' after the parity bit. The diagram is labeled MSv31162V1.

When connected to a smartcard, the TX output of the USART drives a bidirectional line that is also driven by the smartcard. The TX pin must be configured as open drain.

Smartcard mode implements a single wire half duplex communication protocol.

Note: A break character is not significant in Smartcard mode. A 0x00 data with a framing error is treated as data and not as a break.

No Idle frame is transmitted when toggling the TE bit. The Idle frame (as defined for the other configurations) is not defined by the ISO protocol.

Figure 229 details how the NACK signal is sampled by the USART. In this example the USART is transmitting data and is configured with 1.5 stop bits. The receiver part of the USART is enabled in order to check the integrity of the data and the NACK signal.

Figure 229. Parity error detection using the 1.5 stop bits

Timing diagram for parity error detection using 1.5 stop bits. The diagram shows two rows of bit transmission. The top row shows Bit 7, Parity bit, and 1.5 Stop bit. The bottom row shows the same bits plus sampling points. Sampling occurs at the 8th, 9th, and 10th bit times for both rows. The first row has a 1 bit time for Bit 7 and Parity bit, and a 1.5 bit time for the Stop bit. The second row has a 1 bit time for Bit 7 and Parity bit, a 0.5 bit time for the first stop bit, and a 1.5 bit time for the second stop bit. The diagram is labeled MSv31163V1.

The diagram illustrates the timing for parity error detection with 1.5 stop bits. It shows two rows of bit transmission. The top row shows Bit 7, Parity bit, and 1.5 Stop bit. The bottom row shows the same bits plus sampling points. Sampling occurs at the 8th, 9th, and 10th bit times for both rows. The first row has a 1 bit time for Bit 7 and Parity bit, and a 1.5 bit time for the Stop bit. The second row has a 1 bit time for Bit 7 and Parity bit, a 0.5 bit time for the first stop bit, and a 1.5 bit time for the second stop bit. The diagram is labeled MSv31163V1.

Timing diagram for parity error detection using 1.5 stop bits. The diagram shows two rows of bit transmission. The top row shows Bit 7, Parity bit, and 1.5 Stop bit. The bottom row shows the same bits plus sampling points. Sampling occurs at the 8th, 9th, and 10th bit times for both rows. The first row has a 1 bit time for Bit 7 and Parity bit, and a 1.5 bit time for the Stop bit. The second row has a 1 bit time for Bit 7 and Parity bit, a 0.5 bit time for the first stop bit, and a 1.5 bit time for the second stop bit. The diagram is labeled MSv31163V1.

The USART can provide a clock to the smartcard through the CK output. In Smartcard mode, CK is not associated to the communication but is simply derived from the internal peripheral input clock through a 5-bit prescaler. The division ratio is configured in the

prescaler register USART_GTPR. CK frequency can be programmed from \( f_{CK}/2 \) to \( f_{CK}/62 \) , where \( f_{CK} \) is the peripheral input clock.

Block mode (T=1)

In T=1 (block) mode, the parity error transmission is deactivated, by clearing the NACK bit in the UART_CR3 register.

When requesting a read from the smartcard, in block mode, the software must enable the receiver Timeout feature by setting the RTOEN bit in the USART_CR2 register and program the RTO bits field in the RTOR register to the BWT (block wait time) - 11 value. If no answer is received from the card before the expiration of this period, the RTOF flag will be set and a timeout interrupt will be generated (if RTOIE bit in the USART_CR1 register is set). If the first character is received before the expiration of the period, it is signaled by the RXNE interrupt.

Note: The RXNE interrupt must be enabled even when using the USART in DMA mode to read from the smartcard in block mode. In parallel, the DMA must be enabled only after the first received byte.

After the reception of the first character (RXNE interrupt), the RTO bit fields in the RTOR register must be programmed to the CWT (character wait time) - 11 value, in order to allow the automatic check of the maximum wait time between two consecutive characters. This time is expressed in baudtime units. If the smartcard does not send a new character in less than the CWT period after the end of the previous character, the USART signals this to the software through the RTOF flag and interrupt (when RTOIE bit is set).

Note: The RTO counter starts counting:

As in the Smartcard protocol definition, the BWT/CWT values are defined from the beginning (start bit) of the last character. The RTO register must be programmed to BWT - 11 or CWT - 11, respectively, taking into account the length of the last character itself.

A block length counter is used to count all the characters received by the USART. This counter is reset when the USART is transmitting (TXE=0). The length of the block is communicated by the smartcard in the third byte of the block (prologue field). This value must be programmed to the BLEN field in the USART_RTOR register. When using DMA mode, before the start of the block, this register field must be programmed to the minimum value (0x0). With this value, an interrupt is generated after the 4th received character. The software must read the LEN field (third byte), its value must be read from the receive buffer.

In interrupt driven receive mode, the length of the block may be checked by software or by programming the BLEN value. However, before the start of the block, the maximum value of BLEN (0xFF) may be programmed. The real value will be programmed after the reception of the third character.

If the block is using the LRC longitudinal redundancy check (1 epilogue byte), the BLEN=LEN. If the block is using the CRC mechanism (2 epilogue bytes), BLEN=LEN+1 must be programmed. The total block length (including prologue, epilogue and information fields) equals BLEN+4. The end of the block is signaled to the software through the EOBF flag and interrupt (when EOBIE bit is set).

In case of an error in the block length, the end of the block is signaled by the RTO interrupt (Character wait Time overflow).

Note: The error checking code (LRC/CRC) must be computed/verified by software.

Direct and inverse convention

The Smartcard protocol defines two conventions: direct and inverse.

The direct convention is defined as: LSB first, logical bit value of 1 corresponds to a H state of the line and parity is even. In order to use this convention, the following control bits must be programmed: MSBFIRST=0, DATAINV=0 (default values).

The inverse convention is defined as: MSB first, logical bit value 1 corresponds to an L state on the signal line and parity is even. In order to use this convention, the following control bits must be programmed: MSBFIRST=1, DATAINV=1.

Note: When logical data values are inverted (0=H, 1=L), the parity bit is also inverted in the same way.

In order to recognize the card convention, the card sends the initial character, TS, as the first character of the ATR (Answer To Reset) frame. The two possible patterns for the TS are: LHHL LLL LLH and LHHL HHH LLH.

Character parity is correct when there is an even number of bits set to 1 in the nine moments 2 to 10.

As the USART does not know which convention is used by the card, it needs to be able to recognize either pattern and act accordingly. The pattern recognition is not done in hardware, but through a software sequence. Moreover, supposing that the USART is configured in direct convention (default) and the card answers with the inverse convention, TS = LHHL LLL LLH => the USART received character will be '03' and the parity will be odd.

Therefore, two methods are available for TS pattern recognition:

Method 1

The USART is programmed in standard Smartcard mode/direct convention. In this case, the TS pattern reception generates a parity error interrupt and error signal to the card.

Alternatively, in answer to the parity error interrupt, the software may decide to reprogram the USART and to also generate a new reset command to the card, then wait again for the TS.

Method 2

The USART is programmed in 9-bit/no-parity mode, no bit inversion. In this mode it receives any of the two TS patterns as:

(H) LHHL LLL LLH = 0x103 -> inverse convention to be chosen

(H) LHHL HHH LLH = 0x13B -> direct convention to be chosen

The software checks the received character against these two patterns and, if any of them match, then programs the USART accordingly for the next character reception.

If none of the two is recognized, a card reset may be generated in order to restart the negotiation.

24.5.14 USART IrDA SIR ENDEC block

This section is relevant only when IrDA mode is supported. Please refer to Section 24.4: USART implementation on page 659 .

IrDA mode is selected by setting the IREN bit in the USART_CR3 register. In IrDA mode, the following bits must be kept cleared:

The IrDA SIR physical layer specifies use of a Return to Zero, Inverted (RZI) modulation scheme that represents logic 0 as an infrared light pulse (see Figure 230 ).

The SIR Transmit encoder modulates the Non Return to Zero (NRZ) transmit bit stream output from USART. The output pulse stream is transmitted to an external output driver and infrared LED. USART supports only bit rates up to 115.2 Kbps for the SIR ENDEC. In normal mode the transmitted pulse width is specified as 3/16 of a bit period.

The SIR receive decoder demodulates the return-to-zero bit stream from the infrared detector and outputs the received NRZ serial bit stream to the USART. The decoder input is normally high (marking state) in the Idle state. The transmit encoder output has the opposite polarity to the decoder input. A start bit is detected when the decoder input is low.

For code example, refer to A.15.10: USART IrDA mode code example .

IrDA low-power mode

Transmitter

In low-power mode the pulse width is not maintained at 3/16 of the bit period. Instead, the width of the pulse is 3 times the low-power baud rate which can be a minimum of 1.42 MHz.

Generally, this value is 1.8432 MHz (1.42 MHz < PSC < 2.12 MHz). A low-power mode programmable divisor divides the system clock to achieve this value.

Receiver

Receiving in low-power mode is similar to receiving in normal mode. For glitch detection the USART should discard pulses of duration shorter than 1 PSC period. A valid low is accepted only if its duration is greater than 2 periods of the IrDA low-power Baud clock (PSC value in the USART_GTPR).

Note: A pulse of width less than two and greater than one PSC period(s) may or may not be rejected.

The receiver set up time should be managed by software. The IrDA physical layer specification specifies a minimum of 10 ms delay between transmission and reception (IrDA is a half duplex protocol).

Figure 230. IrDA SIR ENDEC- block diagram

Figure 230. IrDA SIR ENDEC- block diagram. The diagram shows a USART block on the left connected to a SIREN block on the right. The USART has TX and RX pins. The TX pin connects to an OR gate inside the SIREN block, which outputs to USART_TX. The RX pin connects to a SIR Receive Decoder inside the SIREN block, which outputs to USART_RX. The SIREN block also contains a SIR Transmit Encoder that outputs to IrDA_OUT. The IrDA_IN pin connects to the SIR Receive Decoder. The SIREN block is labeled MSv31164V2.
graph LR
    subgraph SIREN
        OR[OR] --> USART_TX
        TE[SIR Transmit Encoder] --> IrDA_OUT
        RD[SIR Receive Decoder] --> USART_RX
        IrDA_IN --> RD
    end
    USART[USART] -- TX --> OR
    USART -- RX --> RD
  
Figure 230. IrDA SIR ENDEC- block diagram. The diagram shows a USART block on the left connected to a SIREN block on the right. The USART has TX and RX pins. The TX pin connects to an OR gate inside the SIREN block, which outputs to USART_TX. The RX pin connects to a SIR Receive Decoder inside the SIREN block, which outputs to USART_RX. The SIREN block also contains a SIR Transmit Encoder that outputs to IrDA_OUT. The IrDA_IN pin connects to the SIR Receive Decoder. The SIREN block is labeled MSv31164V2.

Figure 231. IrDA data modulation (3/16) -Normal Mode

Timing diagram for IrDA data modulation in Normal Mode. The diagram shows four waveforms: TX, IrDA_OUT, IrDA_IN, and RX. The TX waveform shows a start bit (0), data bits (1, 0, 1, 0, 0, 1, 1, 0), and a stop bit (1). The IrDA_OUT waveform shows the modulated signal. The IrDA_IN waveform shows the received signal. The RX waveform shows the demodulated signal. The bit period is indicated, and the IrDA_OUT signal is shown as a 3/16 duty cycle signal.

The diagram illustrates the IrDA data modulation process. The TX line shows a start bit (0), followed by data bits (1, 0, 1, 0, 0, 1, 1, 0), and a stop bit (1). The IrDA_OUT line shows the modulated signal, which is a 3/16 duty cycle signal. The IrDA_IN line shows the received signal, which is a modulated signal. The RX line shows the demodulated signal, which is a start bit (0), followed by data bits (1, 0, 1, 0, 0, 1, 1, 0), and a stop bit (1). The bit period is indicated by a double-headed arrow between two consecutive bits. The IrDA_OUT signal is shown as a 3/16 duty cycle signal. The diagram is labeled MSv31165V1.

Timing diagram for IrDA data modulation in Normal Mode. The diagram shows four waveforms: TX, IrDA_OUT, IrDA_IN, and RX. The TX waveform shows a start bit (0), data bits (1, 0, 1, 0, 0, 1, 1, 0), and a stop bit (1). The IrDA_OUT waveform shows the modulated signal. The IrDA_IN waveform shows the received signal. The RX waveform shows the demodulated signal. The bit period is indicated, and the IrDA_OUT signal is shown as a 3/16 duty cycle signal.

24.5.15 USART continuous communication in DMA mode

The USART is capable of performing continuous communication using the DMA. The DMA requests for Rx buffer and Tx buffer are generated independently.

Note: Please refer to Section 24.4: USART implementation on page 659 to determine if the DMA mode is supported. If DMA is not supported, use the USART as explained in Section 24.5.2: USART transmitter or Section 24.5.3: USART receiver . To perform continuous communication, the user can clear the TXE/ RXNE flags in the USART_ISR register.

For code example, refer to A.15.11: USART DMA code example .

Transmission using DMA

DMA mode can be enabled for transmission by setting DMAT bit in the USART_CR3 register. Data is loaded from a SRAM area configured using the DMA peripheral (refer to Section 10: Direct memory access controller (DMA) on page 241 ) to the USART_TDR register whenever the TXE bit is set. To map a DMA channel for USART transmission, use the following procedure (x denotes the channel number):

  1. 1. Write the USART_TDR register address in the DMA control register to configure it as the destination of the transfer. The data is moved to this address from memory after each TXE event.
  2. 2. Write the memory address in the DMA control register to configure it as the source of the transfer. The data is loaded into the USART_TDR register from this memory area after each TXE event.
  3. 3. Configure the total number of bytes to be transferred to the DMA control register.
  4. 4. Configure the channel priority in the DMA register
  5. 5. Configure DMA interrupt generation after half/ full transfer as required by the application.
  6. 6. Clear the TC flag in the USART_ISR register by setting the TCCF bit in the USART_ICR register.
  7. 7. Activate the channel in the DMA register.

When the number of data transfers programmed in the DMA Controller is reached, the DMA controller generates an interrupt on the DMA channel interrupt vector.

In transmission mode, once the DMA has written all the data to be transmitted (the TCIF flag is set in the DMA_ISR register), the TC flag can be monitored to make sure that the USART communication is complete. This is required to avoid corrupting the last transmission before disabling the USART or entering Stop mode. Software must wait until TC=1. The TC flag remains cleared during all data transfers and it is set by hardware at the end of transmission of the last frame.

Figure 232. Transmission using DMA

Timing diagram for USART transmission using DMA. The diagram shows the relationship between the TX line, TXE flag, DMA request, USART_TDR, TC flag, and DMA TCIF flag over three frames (Frame 1, Frame 2, Frame 3).

The diagram illustrates the sequence of events for USART transmission using DMA. It starts with an idle preamble on the TX line. When the TXE flag is set by hardware, a DMA request is generated. Software configures the DMA to send three data blocks (F1, F2, F3) and enables the USART. The DMA writes F1 into the USART_TDR register. As data is read by the USART, the TXE flag is cleared by hardware. This process repeats for F2 and F3. After the last byte of F3 is transmitted, the DMA transfer is complete, setting the TCIF flag in the DMA_ISR register. The TC flag is also set by hardware at this point. Software then waits until TC=1 before disabling the USART or entering Stop mode. Note that the DMA request for the third frame is ignored because the transfer is complete.

Timing diagram for USART transmission using DMA. The diagram shows the relationship between the TX line, TXE flag, DMA request, USART_TDR, TC flag, and DMA TCIF flag over three frames (Frame 1, Frame 2, Frame 3).

Reception using DMA

DMA mode can be enabled for reception by setting the DMAR bit in USART_CR3 register. Data is loaded from the USART_RDR register to a SRAM area configured using the DMA peripheral (refer to Section 10: Direct memory access controller (DMA) on page 241 ) whenever a data byte is received. To map a DMA channel for USART reception, use the following procedure:

  1. 1. Write the USART_RDR register address in the DMA control register to configure it as the source of the transfer. The data is moved from this address to the memory after each RXNE event.
  2. 2. Write the memory address in the DMA control register to configure it as the destination of the transfer. The data is loaded from USART_RDR to this memory area after each RXNE event.
  3. 3. Configure the total number of bytes to be transferred to the DMA control register.
  4. 4. Configure the channel priority in the DMA control register
  5. 5. Configure interrupt generation after half/ full transfer as required by the application.
  6. 6. Activate the channel in the DMA control register.

When the number of data transfers programmed in the DMA Controller is reached, the DMA controller generates an interrupt on the DMA channel interrupt vector.

Figure 233. Reception using DMA

Timing diagram for Figure 233: Reception using DMA. The diagram shows the sequence of events for receiving three frames (Frame 1, Frame 2, Frame 3) via DMA. The TX line is idle. The RXNE flag is set by hardware when a byte is received and cleared by the DMA read. The DMA request is generated when the RXNE flag is set. The USART_RDR register is updated with the received byte (F1, F2, F3). The DMA reads the byte from the USART_RDR register. The DMA TCIF flag (transfer complete) is set by hardware when the last byte is received and cleared by software. The sequence starts with software configuration, followed by DMA reads of F1, F2, and F3, and finally the transfer complete flag is set.

The diagram illustrates the reception of three frames (Frame 1, Frame 2, Frame 3) using DMA. The TX line shows three data frames. The RXNE flag is set by hardware at the end of each frame and cleared by the subsequent DMA read. A DMA request pulse is generated each time RXNE is set. The USART_RDR register holds the received data (F1, F2, F3). The 'DMA reads USART_RDR' signal shows pulses corresponding to the DMA reading each byte. The DMA TCIF flag (transfer complete) is set by hardware after the third byte is read and must be cleared by software.

Annotations in the diagram:

ai17193c

Timing diagram for Figure 233: Reception using DMA. The diagram shows the sequence of events for receiving three frames (Frame 1, Frame 2, Frame 3) via DMA. The TX line is idle. The RXNE flag is set by hardware when a byte is received and cleared by the DMA read. The DMA request is generated when the RXNE flag is set. The USART_RDR register is updated with the received byte (F1, F2, F3). The DMA reads the byte from the USART_RDR register. The DMA TCIF flag (transfer complete) is set by hardware when the last byte is received and cleared by software. The sequence starts with software configuration, followed by DMA reads of F1, F2, and F3, and finally the transfer complete flag is set.

Error flagging and interrupt generation in multibuffer communication

In multibuffer communication if any error occurs during the transaction the error flag is asserted after the current byte. An interrupt is generated if the interrupt enable flag is set. For framing error, overrun error and noise flag which are asserted with RXNE in single byte reception, there is a separate error flag interrupt enable bit (EIE bit in the USART_CR3 register), which, if set, enables an interrupt after the current byte if any of these errors occur.

24.5.16 RS232 hardware flow control and RS485 driver enable using USART

It is possible to control the serial data flow between 2 devices by using the CTS input and the RTS output. The Figure 234 shows how to connect 2 devices in this mode:

Figure 234. Hardware flow control between 2 USARTs

Diagram for Figure 234: Hardware flow control between 2 USARTs. The diagram shows two USARTs, USART 1 and USART 2, connected via their TX and RX circuits. USART 1's TX circuit is connected to USART 2's RX circuit. USART 1's RX circuit is connected to USART 2's TX circuit. Flow control lines are connected: USART 1's RTS output is connected to USART 2's CTS input, and USART 2's RTS output is connected to USART 1's CTS input.

The diagram illustrates the hardware flow control connection between two USARTs, USART 1 and USART 2. Each USART has a TX circuit and an RX circuit. The connections are as follows:

MSv31169V2

Diagram for Figure 234: Hardware flow control between 2 USARTs. The diagram shows two USARTs, USART 1 and USART 2, connected via their TX and RX circuits. USART 1's TX circuit is connected to USART 2's RX circuit. USART 1's RX circuit is connected to USART 2's TX circuit. Flow control lines are connected: USART 1's RTS output is connected to USART 2's CTS input, and USART 2's RTS output is connected to USART 1's CTS input.

RS232 RTS and CTS flow control can be enabled independently by writing the RTSE and CTSE bits respectively to 1 (in the USART_CR3 register).

RS232 RTS flow control

If the RTS flow control is enabled (RTSE=1), then RTS is deasserted (tied low) as long as the USART receiver is ready to receive a new data. When the receive register is full, RTS is asserted, indicating that the transmission is expected to stop at the end of the current frame. Figure 235 shows an example of communication with RTS flow control enabled.

Figure 235. RS232 RTS flow control

Timing diagram for RS232 RTS flow control showing RX and RTS signals over time. The RX signal shows two frames: 'Start bit | Data 1 | Stop bit' followed by 'Idle', then 'Start bit | Data 2 | Stop bit'. The RTS signal is initially low. It goes high at the end of the first frame's stop bit. It goes low again at the 'Data 1 read' point, which is labeled 'Data 2 can now be transmitted'. It goes high again at the end of the second frame's stop bit. RXNE flags are shown at the start and end of the second frame.

The diagram illustrates the relationship between the RX (receive) and RTS (Request To Send) signals during RS232 flow control. The RX signal shows two data frames. The first frame consists of a Start bit, Data 1, and a Stop bit, followed by an Idle state. The RTS signal is initially low. It transitions to high at the end of the first frame's stop bit. It transitions back to low at the 'Data 1 read' point, which is labeled 'Data 2 can now be transmitted'. It transitions to high again at the end of the second frame's stop bit. RXNE flags are shown at the start and end of the second frame.

MSV68794V1

Timing diagram for RS232 RTS flow control showing RX and RTS signals over time. The RX signal shows two frames: 'Start bit | Data 1 | Stop bit' followed by 'Idle', then 'Start bit | Data 2 | Stop bit'. The RTS signal is initially low. It goes high at the end of the first frame's stop bit. It goes low again at the 'Data 1 read' point, which is labeled 'Data 2 can now be transmitted'. It goes high again at the end of the second frame's stop bit. RXNE flags are shown at the start and end of the second frame.

RS232 CTS flow control

If the CTS flow control is enabled (CTSE=1), then the transmitter checks the CTS input before transmitting the next frame. If CTS is deasserted (tied low), then the next data is transmitted (assuming that data is to be transmitted, in other words, if TXE=0), else the transmission does not occur. When CTS is asserted during a transmission, the current transmission is completed before the transmitter stops.

When CTSE=1, the CTSIF status bit is automatically set by hardware as soon as the CTS input toggles. It indicates when the receiver becomes ready or not ready for communication. An interrupt is generated if the CTSIE bit in the USART_CR3 register is set. Figure 236 shows an example of communication with CTS flow control enabled.

Figure 236. RS232 CTS flow control

Timing diagram for RS232 CTS flow control showing the relationship between the CTS signal, Transmit Data Register (TDR), and Transmit (TX) lines. The diagram illustrates that writing Data 3 into the TDR while CTS is still active (low) results in a delay in its transmission until CTS becomes inactive (high).

The diagram shows three horizontal timelines:

Timing diagram for RS232 CTS flow control showing the relationship between the CTS signal, Transmit Data Register (TDR), and Transmit (TX) lines. The diagram illustrates that writing Data 3 into the TDR while CTS is still active (low) results in a delay in its transmission until CTS becomes inactive (high).

Note: For correct behavior, CTS must be deasserted at least 3 USART clock source periods before the end of the current character. In addition it should be noted that the CTSCF flag may not be set for pulses shorter than 2 x PCLK periods.

For code example, refer to A.15.12: USART hardware flow control code example .

RS485 Driver Enable

The driver enable feature is enabled by setting bit DEM in the USART_CR3 control register. This allows the user to activate the external transceiver control, through the DE (Driver Enable) signal. The assertion time is the time between the activation of the DE signal and the beginning of the START bit. It is programmed using the DEAT [4:0] bit fields in the USART_CR1 control register. The de-assertion time is the time between the end of the last stop bit, in a transmitted message, and the de-activation of the DE signal. It is programmed using the DEDT [4:0] bit fields in the USART_CR1 control register. The polarity of the DE signal can be configured using the DEP bit in the USART_CR3 control register.

In USART, the DEAT and DEDT are expressed in sample time units (1/8 or 1/16 bit duration, depending on the oversampling rate).

24.5.17 Wakeup from Stop mode using USART

The USART is able to wake up the MCU from Stopmode when the UESM bit is set and the USART clock is set to HSI or LSE (refer to Section Reset and clock control (RCC)).

If during Stop mode the HSI clock is switched OFF, when a falling edge on the USART receive line is detected, the USART interface requests the HSI clock to be switched ON. The HSI clock is then used for the frame reception.

Note: If the USART kernel clock is kept ON during Stop mode, there is no constraint on the maximum baud rate that allows waking up from Stop mode. It is the same as in Run mode.

Same principle as described in case of USART source clock is HSI with the difference that the LSE is ON in Stop mode, but the LSE clock is not propagated to USART if the USART is not requesting it. The LSE clock is not OFF but there is a clock gating to avoid useless consumption.

When the USART clock source is configured to be \( f_{LSE} \) or \( f_{HSI} \) , it is possible to keep enabled this clock during STOP mode by setting the UCESM bit in USART_CR3 control register.

The MCU wakeup from Stop mode can be done using the standard RXNE interrupt. In this case, the RXNEIE bit must be set before entering Stop mode.

Alternatively, a specific interrupt may be selected through the WUS bit fields.

In order to be able to wake up the MCU from Stop mode, the UESM bit in the USART_CR1 control register must be set prior to entering Stop mode.

When the wakeup event is detected, the WUF flag is set by hardware and a wakeup interrupt is generated if the WUFIE bit is set.

Note: Before entering Stop mode, the user must ensure that the USART is not performing a transfer. BUSY flag cannot ensure that Stop mode is never entered during a running reception.

The WUF flag is set when a wakeup event is detected, independently of whether the MCU is in Stop or in an active mode.

When entering Stop mode just after having initialized and enabled the receiver, the REACK bit must be checked to ensure the USART is actually enabled.

When DMA is used for reception, it must be disabled before entering Stop mode and re-enabled upon exit from Stop mode.

The wakeup from Stop mode feature is not available for all modes. For example it doesn't work in SPI mode because the SPI operates in master mode only.

Using Mute mode with Stop mode

If the USART is put into Mute mode before entering Stop mode:

Determining the maximum USART baud rate allowing to wakeup correctly from Stop mode when the USART clock source is the HSI clock

The maximum baud rate allowing to wakeup correctly from Stop mode depends on:

Let us take this example: OVER8 = 0, M bits = 10, ONEBIT = 1, BRR [3:0] = 0000.

In these conditions, according to Table 120: Tolerance of the USART receiver when BRR [3:0] = 0000 , the USART receiver tolerance is 4.86 %.

\( DTRA + DQUANT + DREC + DTCL + DWU < \text{USART receiver's tolerance} \)

\( DWU \text{ max} = t_{\text{WUUSART}} / (9 \times Tbit \text{ Min}) \)

\( Tbit \text{ Min} = t_{\text{WUUSART}} / (9 \times DWU \text{ max}) \)

If we consider an ideal case where the parameters DTRA, DQUANT, DREC and DTCL are at 0%, the DWU max is 4.86 %. In reality, we need to consider at least the HSI inaccuracy.

Let us consider HSI inaccuracy = 1 %, \( t_{\text{WUUSART}} = 8.1 \mu s \) (in case of Stop mode with main regulator in Run mode, Range 1 ):

\( DWU \text{ max} = 4.86 \% - 1 \% = 3.86 \% \)

\( Tbit \text{ min} = 8.1 \mu s / (9 \times 3.86 \%) = 23.31 \mu s \) .

In these conditions, the maximum baud rate allowing to wakeup correctly from Stop mode is \( 1/23.31 \mu s = 42 \text{ kbaud} \) .

24.6 USART in low-power modes

Table 123. Effect of low-power modes on the USART

ModeDescription
SleepNo effect. USART interrupt causes the device to exit Sleep mode.
Low-power runNo effect.
Low-power sleepNo effect. USART interrupt causes the device to exit Low-power sleep mode.
StopThe USART is able to wake up the MCU from Stop mode when the UESM bit is set and the USART clock is set to HSI16 or LSE.
The MCU wakeup from Stop mode can be done using the standard RXNE interrupt.
StandbyThe USART is powered down and must be reinitialized when the device has exited from Standby mode.

24.7 USART interrupts

Table 124. USART interrupt requests

Interrupt eventEvent flagEnable Control bit
Transmit data register emptyTXETXEIE
CTS interruptCTSIFCTSIE
Transmission CompleteTCTCIE
Receive data register not empty (data ready to be read)RXNERXNEIE
Overrun error detectedORE

Table 124. USART interrupt requests (continued)

Interrupt eventEvent flagEnable Control bit
Idle line detectedIDLEIDLEIE
Parity errorPEPEIE
LIN breakLBDFLBDIE
Noise Flag, Overrun error and Framing Error in multibuffer communication.NF or ORE or FEEIE
Character matchCMFCMIE
Receiver timeoutRTOFRTOIE
End of BlockEOBFEOBIE
Wakeup from Stop modeWUF (1)WUFIE
Transmission complete before guard timeTCBGTTCBGTIE

1. The WUF interrupt is active only in Stop mode.

The USART interrupt events are connected to the same interrupt vector (see Figure 237 ).

These events generate an interrupt if the corresponding Enable Control Bit is set.

Figure 237. USART interrupt mapping diagram

Figure 237. USART interrupt mapping diagram. This logic diagram shows how various USART interrupt events are combined to trigger a single 'USART interrupt'. The diagram uses AND and OR gates to combine enable bits (IE) and event flags (EF).

The diagram illustrates the logic for generating a USART interrupt. It consists of several stages of AND and OR gates:

Figure 237. USART interrupt mapping diagram. This logic diagram shows how various USART interrupt events are combined to trigger a single 'USART interrupt'. The diagram uses AND and OR gates to combine enable bits (IE) and event flags (EF).

MSv19820V1

24.8 USART registers

Refer to Section 1.2 on page 45 for a list of abbreviations used in register descriptions.

The peripheral registers have to be accessed by words (32 bits).

24.8.1 USART control register 1 (USART_CR1)

Address offset: 0x00

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.M1EOBIERTOIEDEAT[4:0]DEDT[4:0]
rwrwrwrwrwrwrwrwrwrwrwrwrw
1514131211109876543210
OVER8CMIEMMEM0WAKEPCEPSPEIETXEIETCIERXNEIEIDLEIETEREUESMUE
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:29 Reserved, must be kept at reset value.

Bit 28 M1 : Word length

This bit, with bit 12 (M0), determines the word length. It is set or cleared by software.

M[1:0] = 00: 1 Start bit, 8 data bits, n stop bits

M[1:0] = 01: 1 Start bit, 9 data bits, n stop bits

M[1:0] = 10: 1 Start bit, 7 data bits, n stop bits

This bit can only be written when the USART is disabled (UE=0).

Note: Not all modes are supported In 7-bit data length mode. Refer to Section 24.4: USART implementation for details.

Bit 27 EOBIE : End of Block interrupt enable

This bit is set and cleared by software.

0: Interrupt is inhibited

1: A USART interrupt is generated when the EOBF flag is set in the USART_ISR register.

Note: If the USART does not support Smartcard mode, this bit is reserved and must be kept at reset value. Please refer to Section 24.4: USART implementation on page 659 .

Bit 26 RTOIE : Receiver timeout interrupt enable

This bit is set and cleared by software.

0: Interrupt is inhibited

1: An USART interrupt is generated when the RTOF bit is set in the USART_ISR register.

Note: If the USART does not support the Receiver timeout feature, this bit is reserved and must be kept at reset value. Section 24.4: USART implementation on page 659 .

Bits 25:21 DEAT[4:0] : Driver Enable assertion time

This 5-bit value defines the time between the activation of the DE (Driver Enable) signal and the beginning of the start bit. It is expressed in sample time units (1/8 or 1/16 bit duration, depending on the oversampling rate).

This bit field can only be written when the USART is disabled (UE=0).

Note: If the Driver Enable feature is not supported, this bit is reserved and must be kept at reset value. Please refer to Section 24.4: USART implementation on page 659 .

Bits 20:16 DEDT[4:0] : Driver Enable de-assertion time

This 5-bit value defines the time between the end of the last stop bit, in a transmitted message, and the de-activation of the DE (Driver Enable) signal. It is expressed in sample time units (1/8 or 1/16 bit duration, depending on the oversampling rate).

If the USART_TDR register is written during the DEDT time, the new data is transmitted only when the DEDT and DEAT times have both elapsed.

This bit field can only be written when the USART is disabled (UE=0).

Note: If the Driver Enable feature is not supported, this bit is reserved and must be kept at reset value. Please refer to Section 24.4: USART implementation on page 659 .

Bit 15 OVER8 : Oversampling mode

0: Oversampling by 16

1: Oversampling by 8

This bit can only be written when the USART is disabled (UE=0).

Note: In LIN, IrDA and modes, this bit must be kept at reset value.

Bit 14 CMIE : Character match interrupt enable

This bit is set and cleared by software.

0: Interrupt is inhibited

1: A USART interrupt is generated when the CMF bit is set in the USART_ISR register.

Bit 13 MME : Mute mode enable

This bit activates the mute mode function of the USART. When set, the USART can switch between the active and mute modes, as defined by the WAKE bit. It is set and cleared by software.

0: Receiver in active mode permanently

1: Receiver can switch between mute mode and active mode.

Bit 12 MO : Word length

This bit, with bit 28 (M1), determines the word length. It is set or cleared by software. See Bit 28 (M1) description.

This bit can only be written when the USART is disabled (UE=0).

Bit 11 WAKE : Receiver wakeup method

This bit determines the USART wakeup method from Mute mode. It is set or cleared by software.

0: Idle line

1: Address mark

This bit field can only be written when the USART is disabled (UE=0).

Bit 10 PCE : Parity control enable

This bit selects the hardware parity control (generation and detection). When the parity control is enabled, the computed parity is inserted at the MSB position (9th bit if M=1; 8th bit if M=0) and parity is checked on the received data. This bit is set and cleared by software. Once it is set, PCE is active after the current byte (in reception and in transmission).

0: Parity control disabled

1: Parity control enabled

This bit field can only be written when the USART is disabled (UE=0).

Bit 9 PS : Parity selection

This bit selects the odd or even parity when the parity generation/detection is enabled (PCE bit set). It is set and cleared by software. The parity will be selected after the current byte.

0: Even parity

1: Odd parity

This bit field can only be written when the USART is disabled (UE=0).

Bit 8 PEIE : PE interrupt enable

This bit is set and cleared by software.

0: Interrupt is inhibited

1: A USART interrupt is generated whenever PE=1 in the USART_ISR register

Bit 7 TXEIE : interrupt enable

This bit is set and cleared by software.

0: Interrupt is inhibited

1: A USART interrupt is generated whenever TXE=1 in the USART_ISR register

Bit 6 TCIE : Transmission complete interrupt enable

This bit is set and cleared by software.

0: Interrupt is inhibited

1: A USART interrupt is generated whenever TC=1 in the USART_ISR register

Bit 5 RXNEIE : RXNE interrupt enable

This bit is set and cleared by software.

0: Interrupt is inhibited

1: A USART interrupt is generated whenever ORE=1 or RXNE=1 in the USART_ISR register

Bit 4 IDLEIE : IDLE interrupt enable

This bit is set and cleared by software.

0: Interrupt is inhibited

1: A USART interrupt is generated whenever IDLE=1 in the USART_ISR register

Bit 3 TE : Transmitter enable

This bit enables the transmitter. It is set and cleared by software.

0: Transmitter is disabled

1: Transmitter is enabled

Note: During transmission, a “0” pulse on the TE bit (“0” followed by “1”) sends a preamble (idle line) after the current word, except in Smartcard mode. In order to generate an idle character, the TE must not be immediately written to 1. In order to ensure the required duration, the software can poll the TEACK bit in the USART_ISR register.

In Smartcard mode, when TE is set there is a 1 bit-time delay before the transmission starts.

Bit 2 RE : Receiver enable

This bit enables the receiver. It is set and cleared by software.

0: Receiver is disabled

1: Receiver is enabled and begins searching for a start bit

Bit 1 UESM : USART enable in Stop mode

When this bit is cleared, the USART is not able to wake up the MCU from Stop mode.

When this bit is set, the USART is able to wake up the MCU from Stop mode, provided that the USART clock selection is HSI16 or LSE in the RCC.

This bit is set and cleared by software.

0: USART not able to wake up the MCU from Stop mode.

1: USART able to wake up the MCU from Stop mode. When this function is active, the clock source for the USART must be HSI16 or LSE (see Section Reset and clock control (RCC)).

Note: It is recommended to set the UESM bit just before entering Stop mode and clear it on exit from Stop mode.

If the USART does not support the wakeup from Stop feature, this bit is reserved and must be kept at reset value. Please refer to Section 24.4: USART implementation on page 659 .

Bit 0 UE : USART enable

When this bit is cleared, the USART prescalers and outputs are stopped immediately, and current operations are discarded. The configuration of the USART is kept, but all the status flags, in the USART_ISR are set to their default values. This bit is set and cleared by software.

0: USART prescaler and outputs disabled, low-power mode

1: USART enabled

Note: In order to go into low-power mode without generating errors on the line, the TE bit must be reset before and the software must wait for the TC bit in the USART_ISR to be set before resetting the UE bit.

The DMA requests are also reset when UE = 0 so the DMA channel must be disabled before resetting the UE bit.

24.8.2 USART control register 2 (USART_CR2)

Address offset: 0x04

Reset value: 0x0000 0000

31302928272625242322212019181716
ADD[7:4]ADD[3:0]RTOENABRMOD[1:0]ABRENMSBFI
RST
DATAINVTXINVRXINV
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw
1514131211109876543210
SWAPLINENSTOP[1:0]CLKENCPOLCPHALBCLRes.LBDIELBDLADD7Res.Res.Res.Res.
rwrwrwrwrwrwrwrwrwrwrw
Bits 31:28 ADD[7:4] : Address of the USART node

This bit-field gives the address of the USART node or a character code to be recognized.

This is used in multiprocessor communication during Mute mode or Stop mode, for wakeup with 7-bit address mark detection. The MSB of the character sent by the transmitter should be equal to 1. It may also be used for character detection during normal reception, Mute mode inactive (for example, end of block detection in ModBus protocol). In this case, the whole received character (8-bit) is compared to the ADD[7:0] value and CMF flag is set on match.

This bit field can only be written when reception is disabled (RE = 0) or the USART is disabled (UE=0)

Bits 27:24 ADD[3:0] : Address of the USART node

This bit-field gives the address of the USART node or a character code to be recognized.

This is used in multiprocessor communication during Mute mode or Stop mode, for wakeup with address mark detection.

This bit field can only be written when reception is disabled (RE = 0) or the USART is disabled (UE=0)

Bit 23 RTOEN : Receiver timeout enable

This bit is set and cleared by software.

0: Receiver timeout feature disabled.

1: Receiver timeout feature enabled.

When this feature is enabled, the RTOF flag in the USART_ISR register is set if the RX line is idle (no reception) for the duration programmed in the RTOR (receiver timeout register).

Note: If the USART does not support the Receiver timeout feature, this bit is reserved and must be kept at reset value. Please refer to Section 24.4: USART implementation on page 659 .

Bits 22:21 ABRMOD[1:0] : Auto baud rate mode

These bits are set and cleared by software.

00: Measurement of the start bit is used to detect the baud rate.

01: Falling edge to falling edge measurement. (the received frame must start with a single bit = 1 ->

Frame = Start10xxxxx)

10: 0x7F frame detection.

11: 0x55 frame detection

This bit field can only be written when ABREN = 0 or the USART is disabled (UE=0).

Note: If DATAINV=1 and/or MSBFIRST=1 the patterns must be the same on the line, for example 0xAA for MSBFIRST)

If the USART does not support the auto baud rate feature, this bit is reserved and must be kept at reset value. Please refer to Section 24.4: USART implementation on page 659 .

Bit 20 ABREN : Auto baud rate enable

This bit is set and cleared by software.

0: Auto baud rate detection is disabled.

1: Auto baud rate detection is enabled.

Note: If the USART does not support the auto baud rate feature, this bit is reserved and must be kept at reset value. Please refer to Section 24.4: USART implementation on page 659 .

Bit 19 MSBFIRST : Most significant bit first

This bit is set and cleared by software.

0: data is transmitted/received with data bit 0 first, following the start bit.

1: data is transmitted/received with the MSB (bit 7/8/9) first, following the start bit.

This bit field can only be written when the USART is disabled (UE=0).

Bit 18 DATAINV: Binary data inversion

This bit is set and cleared by software.

0: Logical data from the data register are send/received in positive/direct logic. (1=H, 0=L)

1: Logical data from the data register are send/received in negative/inverse logic. (1=L, 0=H). The parity bit is also inverted.

This bit field can only be written when the USART is disabled (UE=0).

Bit 17 TXINV: TX pin active level inversion

This bit is set and cleared by software.

0: TX pin signal works using the standard logic levels ( \( V_{DD} \) =1/idle, Gnd=0/mark)

1: TX pin signal values are inverted. ( \( V_{DD} \) =0/mark, Gnd=1/idle).

This allows the use of an external inverter on the TX line.

This bit field can only be written when the USART is disabled (UE=0).

Bit 16 RXINV: RX pin active level inversion

This bit is set and cleared by software.

0: RX pin signal works using the standard logic levels ( \( V_{DD} \) =1/idle, Gnd=0/mark)

1: RX pin signal values are inverted. ( \( V_{DD} \) =0/mark, Gnd=1/idle).

This allows the use of an external inverter on the RX line.

This bit field can only be written when the USART is disabled (UE=0).

Bit 15 SWAP: Swap TX/RX pins

This bit is set and cleared by software.

0: TX/RX pins are used as defined in standard pinout

1: The TX and RX pins functions are swapped. This allows to work in the case of a cross-wired connection to another USART.

This bit field can only be written when the USART is disabled (UE=0).

Bit 14 LINEN: LIN mode enable

This bit is set and cleared by software.

0: LIN mode disabled

1: LIN mode enabled

The LIN mode enables the capability to send LIN synchronous breaks (13 low bits) using the SBKRQ bit in the USART_RQR register, and to detect LIN Sync breaks.

This bit field can only be written when the USART is disabled (UE=0).

Note: If the USART does not support LIN mode, this bit is reserved and must be kept at reset value. Please refer to Section 24.4: USART implementation on page 659 .

Bits 13:12 STOP[1:0]: STOP bits

These bits are used for programming the stop bits.

00: 1 stop bit

01: 0.5 stop bit

10: 2 stop bits

11: 1.5 stop bits

This bit field can only be written when the USART is disabled (UE=0).

Bit 11 CLKEN: Clock enable

This bit allows the user to enable the CK pin.

0: CK pin disabled

1: CK pin enabled

This bit can only be written when the USART is disabled (UE=0).

Note: If neither synchronous mode nor Smartcard mode is supported, this bit is reserved and must be kept at reset value. Please refer to Section 24.4: USART implementation on page 659 .

In order to provide correctly the CK clock to the Smartcard when CK is always available When CLKEN = 1, regardless of the UE bit value, the steps below must be respected:

Bit 10 CPOL: Clock polarity

This bit allows the user to select the polarity of the clock output on the CK pin in synchronous mode.

It works in conjunction with the CPHA bit to produce the desired clock/data relationship

0: Steady low value on CK pin outside transmission window

1: Steady high value on CK pin outside transmission window

This bit can only be written when the USART is disabled (UE=0).

Note: If synchronous mode is not supported, this bit is reserved and must be kept at reset value. Please refer to Section 24.4: USART implementation on page 659 .

Bit 9 CPHA: Clock phase

This bit is used to select the phase of the clock output on the CK pin in synchronous mode. It works in conjunction with the CPOL bit to produce the desired clock/data relationship (see Figure 225 and Figure 226 )

0: The first clock transition is the first data capture edge

1: The second clock transition is the first data capture edge

This bit can only be written when the USART is disabled (UE=0).

Note: If synchronous mode is not supported, this bit is reserved and must be kept at reset value. Please refer to Section 24.4: USART implementation on page 659 .

Bit 8 LBCL: Last bit clock pulse

This bit is used to select whether the clock pulse associated with the last data bit transmitted (MSB) has to be output on the CK pin in synchronous mode.

0: The clock pulse of the last data bit is not output to the CK pin

1: The clock pulse of the last data bit is output to the CK pin

Caution: The last bit is the 7th or 8th or 9th data bit transmitted depending on the 7 or 8 or 9 bit format selected by the M bits in the USART_CR1 register.

This bit can only be written when the USART is disabled (UE=0).

Note: If synchronous mode is not supported, this bit is reserved and must be kept at reset value. Please refer to Section 24.4: USART implementation on page 659 .

Bit 7 Reserved, must be kept at reset value. Bit 6 LBDIE: LIN break detection interrupt enable

Break interrupt mask (break detection using break delimiter).

0: Interrupt is inhibited

1: An interrupt is generated whenever LBDF=1 in the USART_ISR register

Note: If LIN mode is not supported, this bit is reserved and must be kept at reset value. Please refer to Section 24.4: USART implementation on page 659 .

Bit 5 LBDL : LIN break detection length

This bit is for selection between 11 bit or 10 bit break detection.

0: 10-bit break detection

1: 11-bit break detection

This bit can only be written when the USART is disabled (UE=0).

Note: If LIN mode is not supported, this bit is reserved and must be kept at reset value. Please refer to Section 24.4: USART implementation on page 659.

Bit 4 ADDM7 : 7-bit Address Detection/4-bit Address Detection

This bit is for selection between 4-bit address detection or 7-bit address detection.

0: 4-bit address detection

1: 7-bit address detection (in 8-bit data mode)

This bit can only be written when the USART is disabled (UE=0)

Note: In 7-bit and 9-bit data modes, the address detection is done on 6-bit and 8-bit address (ADD[5:0] and ADD[7:0]) respectively.

Bits 3:0 Reserved, must be kept at reset value.

Note: The 3 bits (CPOL, CPHA, LBCL) should not be written while the transmitter is enabled.

24.8.3 USART control register 3 (USART_CR3)

Address offset: 0x08

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.TCBGTI
E
UCESMWUFIEWUS1WUS0SCARC
NT2
SCARC
NT1
SCARC
NT0
Res.
rwrwrwrwrwrwrwrw

1514131211109876543210
DEPDEMDDREOVRDI
S
ONEBI
T
CTSIECTSERTSEDMATDMARSCENNACKHDSELIRLPIRENEIE
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:25 Reserved, must be kept at reset value.

Bit 24 TCBGTIE : Transmission complete before guard time interrupt enable

This bit is set and cleared by software.

0: Interrupt is inhibited

1: An USART interrupt is generated whenever TCBGT=1 in the USART_ISR register.

Note: If Smartcard mode is not supported, this bit is reserved and must be kept at reset value (see Section 24.4: USART implementation).

Note: This bit is available on category 1 devices only.

Bit 23 UCESM : USART Clock Enable in Stop mode.

This bit is set and cleared by software.

0: USART Clock is disabled in STOP mode.

1: USART Clock is enabled in STOP mode.

Bit 22 WUFIE : Wakeup from Stop mode interrupt enable

This bit is set and cleared by software.

0: Interrupt is inhibited

1: An USART interrupt is generated whenever WUF=1 in the USART_ISR register

Note: WUFIE must be set before entering in Stop mode.

The WUF interrupt is active only in Stop mode.

If the USART does not support the wakeup from Stop feature, this bit is reserved and must be kept at reset value.

Bits 21:20 WUS[1:0] : Wakeup from Stop mode interrupt flag selection

This bit-field specify the event which activates the WUF (wakeup from Stop mode flag).

00: WUF active on address match (as defined by ADD[7:0] and ADDM7)

01: Reserved.

10: WuF active on Start bit detection

11: WUF active on RXNE.

This bit field can only be written when the USART is disabled (UE=0).

Note: If the USART does not support the wakeup from Stop feature, this bit is reserved and must be kept at reset value.

Bits 19:17 SCARCNT[2:0] : Smartcard auto-retry count

This bit-field specifies the number of retries in transmit and receive, in Smartcard mode.

In transmission mode, it specifies the number of automatic retransmission retries, before generating a transmission error (FE bit set).

In reception mode, it specifies the number of erroneous reception trials, before generating a reception error (RXNE and PE bits set).

This bit field must be programmed only when the USART is disabled (UE=0).

When the USART is enabled (UE=1), this bit field may only be written to 0x0, in order to stop retransmission.

0x0: retransmission disabled - No automatic retransmission in transmit mode.

0x1 to 0x7: number of automatic retransmission attempts (before signaling error)

Note: If Smartcard mode is not supported, this bit is reserved and must be kept at reset value. Please refer to Section 24.4: USART implementation on page 659 .

Bit 16 Reserved, must be kept at reset value.

Bit 15 DEP : Driver enable polarity selection

0: DE signal is active high.

1: DE signal is active low.

This bit can only be written when the USART is disabled (UE=0).

Note: If the Driver Enable feature is not supported, this bit is reserved and must be kept at reset value. Please refer to Section 24.4: USART implementation on page 659 .

Bit 14 DEM : Driver enable mode

This bit allows the user to activate the external transceiver control, through the DE signal.

0: DE function is disabled.

1: DE function is enabled. The DE signal is output on the RTS pin.

This bit can only be written when the USART is disabled (UE=0).

Note: If the Driver Enable feature is not supported, this bit is reserved and must be kept at reset value. Section 24.4: USART implementation on page 659 .

Bit 13 DDRE : DMA Disable on Reception Error

0: DMA is not disabled in case of reception error. The corresponding error flag is set but RXNE is kept 0 preventing from overrun. As a consequence, the DMA request is not asserted, so the erroneous data is not transferred (no DMA request), but next correct received data will be transferred (used for Smartcard mode).

1: DMA is disabled following a reception error. The corresponding error flag is set, as well as RXNE. The DMA request is masked until the error flag is cleared. This means that the software must first disable the DMA request (DMAR = 0) or clear RXNE before clearing the error flag.

This bit can only be written when the USART is disabled (UE=0).

Note: The reception errors are: parity error, framing error or noise error.

Bit 12 OVRDIS : Overrun Disable

This bit is used to disable the receive overrun detection.

0: Overrun Error Flag, ORE, is set when received data is not read before receiving new data.

1: Overrun functionality is disabled. If new data is received while the RXNE flag is still set the ORE flag is not set and the new received data overwrites the previous content of the USART_RDR register.

This bit can only be written when the USART is disabled (UE=0).

Note: This control bit allows checking the communication flow without reading the data.

Bit 11 ONEBIT : One sample bit method enable

This bit allows the user to select the sample method. When the one sample bit method is selected the noise detection flag (NF) is disabled.

0: Three sample bit method

1: One sample bit method

This bit can only be written when the USART is disabled (UE=0).

Note: ONEBIT feature applies only to data bits, It does not apply to Start bit.

Bit 10 CTSIE : CTS interrupt enable

0: Interrupt is inhibited

1: An interrupt is generated whenever CTSIF=1 in the USART_ISR register

Note: If the hardware flow control feature is not supported, this bit is reserved and must be kept at reset value. Please refer to Section 24.4: USART implementation on page 659 .

Bit 9 CTSE : CTS enable

0: CTS hardware flow control disabled

1: CTS mode enabled, data is only transmitted when the CTS input is deasserted (tied to 0). If the CTS input is asserted while data is being transmitted, then the transmission is completed before stopping. If data is written into the data register while CTS is asserted, the transmission is postponed until CTS is deasserted.

This bit can only be written when the USART is disabled (UE=0)

Note: If the hardware flow control feature is not supported, this bit is reserved and must be kept at reset value. Please refer to Section 24.4: USART implementation on page 659 .

Bit 8 RTSE : RTS enable

0: RTS hardware flow control disabled

1: RTS output enabled, data is only requested when there is space in the receive buffer. The transmission of data is expected to cease after the current character has been transmitted. The RTS output is deasserted (pulled to 0) when data can be received.

This bit can only be written when the USART is disabled (UE=0).

Note: If the hardware flow control feature is not supported, this bit is reserved and must be kept at reset value. Please refer to Section 24.4: USART implementation on page 659 .

Bit 7 DMAT : DMA enable transmitter

This bit is set/reset by software

1: DMA mode is enabled for transmission

0: DMA mode is disabled for transmission

Bit 6 DMAR : DMA enable receiver

This bit is set/reset by software

1: DMA mode is enabled for reception

0: DMA mode is disabled for reception

Bit 5 SCEN : Smartcard mode enable

This bit is used for enabling Smartcard mode.

0: Smartcard Mode disabled

1: Smartcard Mode enabled

This bit field can only be written when the USART is disabled (UE=0).

Note: If the USART does not support Smartcard mode, this bit is reserved and must be kept at reset value. Please refer to Section 24.4: USART implementation on page 659 .

Bit 4 NACK : Smartcard NACK enable

0: NACK transmission in case of parity error is disabled

1: NACK transmission during parity error is enabled

This bit field can only be written when the USART is disabled (UE=0).

Note: If the USART does not support Smartcard mode, this bit is reserved and must be kept at reset value. Please refer to Section 24.4: USART implementation on page 659 .

Bit 3 HDSEL : Half-duplex selection

Selection of Single-wire Half-duplex mode

0: Half duplex mode is not selected

1: Half duplex mode is selected

This bit can only be written when the USART is disabled (UE=0).

Bit 2 IRLP : IrDA low-power

This bit is used for selecting between normal and low-power IrDA modes

0: Normal mode

1: Low-power mode

This bit can only be written when the USART is disabled (UE=0).

Note: If IrDA mode is not supported, this bit is reserved and must be kept at reset value. Please refer to Section 24.4: USART implementation on page 659 .

Bit 1 IREN : IrDA mode enable

This bit is set and cleared by software.

0: IrDA disabled

1: IrDA enabled

This bit can only be written when the USART is disabled (UE=0).

Note: If IrDA mode is not supported, this bit is reserved and must be kept at reset value. Please refer to Section 24.4: USART implementation on page 659 .

Bit 0 EIE : Error interrupt enable

Error Interrupt Enable Bit is required to enable interrupt generation in case of a framing error, overrun error or noise flag (FE=1 or ORE=1 or NF=1 in the USART_ISR register).

0: Interrupt is inhibited

1: An interrupt is generated when FE=1 or ORE=1 or NF=1 in the USART_ISR register.

24.8.4 USART baud rate register (USART_BRR)

This register can only be written when the USART is disabled (UE=0). It may be automatically updated by hardware in auto baud rate detection mode.

Address offset: 0x0C

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
BRR[15:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:16 Reserved, must be kept at reset value.

Bits 15:4 BRR[15:4]

BRR[15:4] = USARTDIV[15:4]

Bits 3:0 BRR[3:0]

When OVER8 = 0, BRR[3:0] = USARTDIV[3:0].
When OVER8 = 1:
BRR[2:0] = USARTDIV[3:0] shifted 1 bit to the right.
BRR[3] must be kept cleared.

24.8.5 USART guard time and prescaler register (USART_GTPR)

Address offset: 0x10

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
GT[7:0]PSC[7:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:16 Reserved, must be kept at reset value.

Bits 15:8 GT[7:0] : Guard time value

This bit-field is used to program the Guard time value in terms of number of baud clock periods.

This is used in Smartcard mode. The Transmission Complete flag is set after this guard time value.

This bit field can only be written when the USART is disabled (UE=0).

Note: If Smartcard mode is not supported, this bit is reserved and must be kept at reset value. Please refer to Section 24.4: USART implementation on page 659.

Bits 7:0 PSC[7:0] : Prescaler value

In IrDA Low-power and normal IrDA mode:

PSC[7:0] = IrDA Normal and Low-Power Baud Rate

Used for programming the prescaler for dividing the USART source clock to achieve the low-power frequency:

The source clock is divided by the value given in the register (8 significant bits):

00000000: Reserved - do not program this value

00000001: divides the source clock by 1

00000010: divides the source clock by 2

...

In Smartcard mode:

PSC[4:0]: Prescaler value

Used for programming the prescaler for dividing the USART source clock to provide the Smartcard clock.

The value given in the register (5 significant bits) is multiplied by 2 to give the division factor of the source clock frequency:

00000: Reserved - do not program this value

00001: divides the source clock by 2

00010: divides the source clock by 4

00011: divides the source clock by 6

...

This bit field can only be written when the USART is disabled (UE=0).

Note: Bits [7:5] must be kept at reset value if Smartcard mode is used.

This bit field is reserved and must be kept at reset value when the Smartcard and IrDA modes are not supported. Please refer to Section 24.4: USART implementation on page 659.

24.8.6 USART receiver timeout register (USART_RTOR)

Address offset: 0x14

Reset value: 0x0000 0000

31302928272625242322212019181716
BLEN[7:0]RTO[23:16]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw
1514131211109876543210
RTO[15:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw
Bits 31:24 BLEN[7:0] : Block Length

This bit-field gives the Block length in Smartcard T=1 Reception. Its value equals the number of information characters + the length of the Epilogue Field (1-LEC/2-CRC) - 1.

Examples:

BLEN = 0 -> 0 information characters + LEC

BLEN = 1 -> 0 information characters + CRC

BLEN = 255 -> 254 information characters + CRC (total 256 characters)

In Smartcard mode, the Block length counter is reset when TXE=0.

This bit-field can be used also in other modes. In this case, the Block length counter is reset when RE=0 (receiver disabled) and/or when the EOBCF bit is written to 1.

Note: This value can be programmed after the start of the block reception (using the data from the LEN character in the Prologue Field). It must be programmed only once per received block.

Bits 23:0 RTO[23:0] : Receiver timeout value

This bit-field gives the Receiver timeout value in terms of number of bit duration.

In standard mode, the RTOF flag is set if, after the last received character, no new start bit is detected for more than the RTO value.

In Smartcard mode, this value is used to implement the CWT and BWT. See Smartcard section for more details.

In this case, the timeout measurement is done starting from the Start Bit of the last received character.

Note: This value must only be programmed once per received character.

Note: RTOR can be written on the fly. If the new value is lower than or equal to the counter, the RTOF flag is set.

This register is reserved and forced by hardware to “0x00000000” when the Receiver timeout feature is not supported. Please refer to Section 24.4: USART implementation on page 659 .

24.8.7 USART request register (USART_RQR)

Address offset: 0x18

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.TXFRQRXFRQMMRQSBKRQABRRQ
wwwww

Bits 31:5 Reserved, must be kept at reset value.

Bit 4 TXFRQ : Transmit data flush request

Writing 1 to this bit sets the TXE flag.

This allows to discard the transmit data. This bit must be used only in Smartcard mode, when data has not been sent due to errors (NACK) and the FE flag is active in the USART_ISR register.

If the USART does not support Smartcard mode, this bit is reserved and must be kept at reset value. Please refer to Section 24.4: USART implementation on page 659 .

Bit 3 RXFRQ : Receive data flush request

Writing 1 to this bit clears the RXNE flag.

This allows to discard the received data without reading it, and avoid an overrun condition.

Bit 2 MMRQ : Mute mode request

Writing 1 to this bit puts the USART in mute mode and sets the RWU flag.

Bit 1 SBKRQ : Send break request

Writing 1 to this bit sets the SBKF flag and request to send a BREAK on the line, as soon as the transmit machine is available.

Note: In the case the application needs to send the break character following all previously inserted data, including the ones not yet transmitted, the software should wait for the TXE flag assertion before setting the SBKRQ bit.

Bit 0 ABRRQ : Auto baud rate request

Writing 1 to this bit resets the ABRF and ABRE flags in the USART_ISR and request an automatic baud rate measurement on the next received data frame.

Note: If the USART does not support the auto baud rate feature, this bit is reserved and must be kept at reset value. Please refer to Section 24.4: USART implementation on page 659 .

24.8.8 USART interrupt and status register (USART_ISR)

Address offset: 0x1C

Reset value: 0x0200 00C0

31302928272625242322212019181716
Res.TCBGTRes.REACKTEACKWUFRWUSBKFCMFBUSY
rrrrrrrr
1514131211109876543210
ABRFABRERes.EOBFRTOFCTSCTSIFLBDFTXETCRXNEIDLEORENFFEPE
rrrrrrrrrrrrrrr

Bits 31:26 Reserved, must be kept at reset value.

Bit 25 TCBGT : Transmission complete before guard time completion.

This bit is used in Smartcard mode. It is set by hardware if the transmission of a frame containing data has completed successfully (no NACK received from the card) and before the guard time has elapsed (contrary to the TC flag which is set when the guard time has elapsed).

An interrupt is generated if TCBGTIE=1 in USART_CR3 register. It is cleared by software, by writing 1 to TCBGTIF in USART_ICR or by writing to the USART_TDR register.

0: Transmission not complete or transmission completed with error (i.e. NACK received from the card)

1: Transmission complete (before Guard time has elapsed and no NACK received from the smartcard).

Note: If the USART does not support the Smartcard mode, this bit is reserved and must be kept at reset value. If the USART supports the Smartcard mode and the Smartcard mode is enabled, the TCBGT reset value is 1.

Note: This bit is available on category 1 devices only.

Bits 24:23 Reserved, must be kept at reset value.

Bit 22 REACK : Receive enable acknowledge flag

This bit is set/reset by hardware, when the Receive Enable value is taken into account by the USART.

When the wakeup from Stop mode is supported, the REACK flag can be used to verify that the USART is ready for reception before entering Stop mode.

Bit 21 TEACK : Transmit enable acknowledge flag

This bit is set/reset by hardware, when the Transmit Enable value is taken into account by the USART.

It can be used when an idle frame request is generated by writing TE=0, followed by TE=1 in the USART_CR1 register, in order to respect the TE=0 minimum period.

Bit 20 WUF : Wakeup from Stop mode flag

This bit is set by hardware, when a wakeup event is detected. The event is defined by the WUS bit field. It is cleared by software, writing a 1 to the WUCF in the USART_ICR register.

An interrupt is generated if WUFIE=1 in the USART_CR3 register.

Note: When UESM is cleared, WUF flag is also cleared.

The WUF interrupt is active only in Stop mode.

If the USART does not support the wakeup from Stop feature, this bit is reserved and kept at reset value.

Bit 19 RWU : Receiver wakeup from Mute mode

This bit indicates if the USART is in mute mode. It is cleared/set by hardware when a wakeup/mute sequence is recognized. The mute mode control sequence (address or IDLE) is selected by the WAKE bit in the USART_CR1 register.

When wakeup on IDLE mode is selected, this bit can only be set by software, writing 1 to the MMRQ bit in the USART_RQR register.

0: Receiver in active mode

1: Receiver in mute mode

Bit 18 SBKF : Send break flag

This bit indicates that a send break character was requested. It is set by software, by writing 1 to the SBKRQ bit in the USART_RQR register. It is automatically reset by hardware during the stop bit of break transmission.

0: No break character is transmitted

1: Break character will be transmitted

Bit 17 CMF: Character match flag

This bit is set by hardware, when the character defined by ADD[7:0] is received. It is cleared by software, writing 1 to the CMCF in the USART_ICR register.

An interrupt is generated if CMIE=1 in the USART_CR1 register.

0: No Character match detected

1: Character Match detected

Bit 16 BUSY: Busy flag

This bit is set and reset by hardware. It is active when a communication is ongoing on the RX line (successful start bit detected). It is reset at the end of the reception (successful or not).

0: USART is idle (no reception)

1: Reception on going

Bit 15 ABRF: Auto baud rate flag

This bit is set by hardware when the automatic baud rate has been set (RXNE will also be set, generating an interrupt if RXNEIE = 1) or when the auto baud rate operation was completed without success (ABRE=1) (ABRE, RXNE and FE are also set in this case)

It is cleared by software, in order to request a new auto baud rate detection, by writing 1 to the ABRREQ in the USART_RQR register.

Note: If the USART does not support the auto baud rate feature, this bit is reserved and kept at reset value.

Bit 14 ABRE: Auto baud rate error

This bit is set by hardware if the baud rate measurement failed (baud rate out of range or character comparison failed)

It is cleared by software, by writing 1 to the ABRREQ bit in the USART_RQR register.

Note: If the USART does not support the auto baud rate feature, this bit is reserved and kept at reset value.

Bit 13 Reserved, must be kept at reset value. Bit 12 EOBF: End of block flag

This bit is set by hardware when a complete block has been received (for example T=1 Smartcard mode). The detection is done when the number of received bytes (from the start of the block, including the prologue) is equal or greater than BLEN + 4.

An interrupt is generated if EOBIE = 1 in the USART_CR1 register.

It is cleared by software, writing 1 to EOBCF in the USART_ICR register.

0: End of Block not reached

1: End of Block (number of characters) reached

Note: If Smartcard mode is not supported, this bit is reserved and kept at reset value. Please refer to Section 24.4: USART implementation on page 659 .

Bit 11 RTOF: Receiver timeout

This bit is set by hardware when the timeout value, programmed in the RTOR register has lapsed, without any communication. It is cleared by software, writing 1 to the RTOCF bit in the USART_ICR register.

An interrupt is generated if RTOIE=1 in the USART_CR1 register.

In Smartcard mode, the timeout corresponds to the CWT or BWT timings.

0: Timeout value not reached

1: Timeout value reached without any data reception

Note: If a time equal to the value programmed in RTOR register separates 2 characters, RTOF is not set. If this time exceeds this value + 2 sample times (2/16 or 2/8, depending on the oversampling method), RTOF flag is set.

The counter counts even if RE = 0 but RTOF is set only when RE = 1. If the timeout has already elapsed when RE is set, then RTOF will be set.

If the USART does not support the Receiver timeout feature, this bit is reserved and kept at reset value.

Bit 10 CTS: CTS flag

This bit is set/reset by hardware. It is an inverted copy of the status of the CTS input pin.

0: CTS line set

1: CTS line reset

Note: If the hardware flow control feature is not supported, this bit is reserved and kept at reset value.

Bit 9 CTSIF: CTS interrupt flag

This bit is set by hardware when the CTS input toggles, if the CTSE bit is set. It is cleared by software, by writing 1 to the CTSCF bit in the USART_ICR register.

An interrupt is generated if CTSIE=1 in the USART_CR3 register.

0: No change occurred on the CTS status line

1: A change occurred on the CTS status line

Note: If the hardware flow control feature is not supported, this bit is reserved and kept at reset value.

Bit 8 LBDIF: LIN break detection flag

This bit is set by hardware when the LIN break is detected. It is cleared by software, by writing 1 to the LBDCF in the USART_ICR.

An interrupt is generated if LBDIE = 1 in the USART_CR2 register.

0: LIN Break not detected

1: LIN break detected

Note: If the USART does not support LIN mode, this bit is reserved and kept at reset value. Please refer to Section 24.4: USART implementation on page 659 .

Bit 7 TXE: Transmit data register empty

This bit is set by hardware when the content of the USART_TDR register has been transferred into the shift register. It is cleared by a write to the USART_TDR register.

The TXE flag can also be cleared by writing 1 to the TXFRQ in the USART_RQR register, in order to discard the data (only in Smartcard T=0 mode, in case of transmission failure).

An interrupt is generated if the TXEIE bit =1 in the USART_CR1 register.

0: data is not transferred to the shift register

1: data is transferred to the shift register)

Note: This bit is used during single buffer transmission.

Bit 6 TC: Transmission complete

This bit is set by hardware if the transmission of a frame containing data is complete and if TXE is set. An interrupt is generated if TCIE=1 in the USART_CR1 register. It is cleared by software, writing 1 to the TCCF in the USART_ICR register or by a write to the USART_TDR register.

An interrupt is generated if TCIE=1 in the USART_CR1 register.

0: Transmission is not complete

1: Transmission is complete

Note: If TE bit is reset and no transmission is on going, the TC bit will be set immediately.

Bit 5 RXNE: Read data register not empty

This bit is set by hardware when the content of the RDR shift register has been transferred to the USART_RDR register. It is cleared by a read to the USART_RDR register. The RXNE flag can also be cleared by writing 1 to the RXFRQ in the USART_RQR register.

An interrupt is generated if RXNEIE=1 in the USART_CR1 register.

0: data is not received

1: Received data is ready to be read.

Bit 4 IDLE: Idle line detected

This bit is set by hardware when an Idle Line is detected. An interrupt is generated if IDLEIE=1 in the USART_CR1 register. It is cleared by software, writing 1 to the IDLECF in the USART_ICR register.

0: No Idle line is detected

1: Idle line is detected

Note: The IDLE bit will not be set again until the RXNE bit has been set (i.e. a new idle line occurs).

If mute mode is enabled (MME=1), IDLE is set if the USART is not mute (RWU=0), whatever the mute mode selected by the WAKE bit. If RWU=1, IDLE is not set.

Bit 3 ORE: Overrun error

This bit is set by hardware when the data currently being received in the shift register is ready to be transferred into the RDR register while RXNE=1. It is cleared by a software, writing 1 to the ORECF, in the USART_ICR register.

An interrupt is generated if RXNEIE=1 or EIE = 1 in the USART_CR1 register.

0: No overrun error

1: Overrun error is detected

Note: When this bit is set, the RDR register content is not lost but the shift register is overwritten. An interrupt is generated if the ORE flag is set during multibuffer communication if the EIE bit is set.

This bit is permanently forced to 0 (no overrun detection) when the OVRDIS bit is set in the USART_CR3 register.

Bit 2 NF : START bit Noise detection flag

This bit is set by hardware when noise is detected on a received frame. It is cleared by software, writing 1 to the NFCF bit in the USART_ICR register.

0: No noise is detected

1: Noise is detected

Note: This bit does not generate an interrupt as it appears at the same time as the RXNE bit which itself generates an interrupt. An interrupt is generated when the NF flag is set during multibuffer communication if the EIE bit is set.

Note: When the line is noise-free, the NF flag can be disabled by programming the ONEBIT bit to 1 to increase the USART tolerance to deviations (Refer to Section 24.5.5: Tolerance of the USART receiver to clock deviation on page 674 ).

Bit 1 FE : Framing error

This bit is set by hardware when a de-synchronization, excessive noise or a break character is detected. It is cleared by software, writing 1 to the FECF bit in the USART_ICR register.

In Smartcard mode, in transmission, this bit is set when the maximum number of transmit attempts is reached without success (the card NACKs the data frame).

An interrupt is generated if EIE = 1 in the USART_CR1 register.

0: No Framing error is detected

1: Framing error or break character is detected

Bit 0 PE : Parity error

This bit is set by hardware when a parity error occurs in receiver mode. It is cleared by software, writing 1 to the PECF in the USART_ICR register.

An interrupt is generated if PEIE = 1 in the USART_CR1 register.

0: No parity error

1: Parity error

24.8.9 USART interrupt flag clear register (USART_ICR)

Address offset: 0x20

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.WUCFRes.Res.CMCFRes.
rc_w1rc_w1
1514131211109876543210
Res.Res.Res.EOBCFRTOCFRes.CTSCFLBDCFTCBGTCFTCCFRes.IDLECFORECFNCFFECFPECF
rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1

Bits 31:21 Reserved, must be kept at reset value.

Bit 20 WUCF : Wakeup from Stop mode clear flag

Writing 1 to this bit clears the WUF flag in the USART_ISR register.

Note: If the USART does not support the wakeup from Stop feature, this bit is reserved and must be kept at reset value.

Bits 19:18 Reserved, must be kept at reset value.

Bit 17 CMCF : Character match clear flag

Writing 1 to this bit clears the CMF flag in the USART_ISR register.

Bits 16:13 Reserved, must be kept at reset value.

Bit 12 EOBCF : End of block clear flag

Writing 1 to this bit clears the EOBF flag in the USART_ISR register.

Note: If the USART does not support Smartcard mode, this bit is reserved and must be kept at reset value. Please refer to Section 24.4: USART implementation on page 659 .

Bit 11 RTOCF : Receiver timeout clear flag

Writing 1 to this bit clears the RTOF flag in the USART_ISR register.

Note: If the USART does not support the Receiver timeout feature, this bit is reserved and must be kept at reset value. Please refer to Section 24.4: USART implementation on page 659 .

Bit 10 Reserved, must be kept at reset value.

Bit 9 CTSCF : CTS clear flag

Writing 1 to this bit clears the CTSIF flag in the USART_ISR register.

Note: If the hardware flow control feature is not supported, this bit is reserved and must be kept at reset value. Please refer to Section 24.4: USART implementation on page 659 .

Bit 8 LBDCF : LIN break detection clear flag

Writing 1 to this bit clears the LBDF flag in the USART_ISR register.

Note: If LIN mode is not supported, this bit is reserved and must be kept at reset value. Please refer to Section 24.4: USART implementation on page 659 .

Bit 7 TCBGTCF : Transmission completed before guard time clear flag

Writing 1 to this bit clears the TCBGT flag in the USART_ISR register.

Note: If the USART does not support SmartCard mode, this bit is reserved and forced by hardware to 0. Please refer to Section 24.4: USART implementation on page 659 .

Note: This bit is available on category 1 devices only.

Bit 6 TCCF : Transmission complete clear flag

Writing 1 to this bit clears the TC flag in the USART_ISR register.

Bit 5 Reserved, must be kept at reset value.

Bit 4 IDLECF : Idle line detected clear flag

Writing 1 to this bit clears the IDLE flag in the USART_ISR register.

Bit 3 ORECF : Overrun error clear flag

Writing 1 to this bit clears the ORE flag in the USART_ISR register.

Bit 2 NCF : Noise detected clear flag

Writing 1 to this bit clears the NF flag in the USART_ISR register.

Bit 1 FECEF : Framing error clear flag

Writing 1 to this bit clears the FE flag in the USART_ISR register.

Bit 0 PECF : Parity error clear flag

Writing 1 to this bit clears the PE flag in the USART_ISR register.

24.8.10 USART receive data register (USART_RDR)

Address offset: 0x24

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
Res.Res.Res.Res.Res.Res.Res.RDR[8:0]
rrrrrrrrr

Bits 31:9 Reserved, must be kept at reset value.

Bits 8:0 RDR[8:0] : Receive data value

Contains the received data character.

The RDR register provides the parallel interface between the input shift register and the internal bus (see Figure 213 ).

When receiving with the parity enabled, the value read in the MSB bit is the received parity bit.

24.8.11 USART transmit data register (USART_TDR)

Address offset: 0x28

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
Res.Res.Res.Res.Res.Res.Res.TDR[8:0]
rwrwrwrwrwrwrwrwrw

Bits 31:9 Reserved, must be kept at reset value.

Bits 8:0 TDR[8:0] : Transmit data value

Contains the data character to be transmitted.

The TDR register provides the parallel interface between the internal bus and the output shift register (see Figure 213 ).

When transmitting with the parity enabled (PCE bit set to 1 in the USART_CR1 register), the value written in the MSB (bit 7 or bit 8 depending on the data length) has no effect because it is replaced by the parity.

Note: This register must be written only when TXE=1.

24.8.12 USART register map

The table below gives the USART register map and reset values.

Table 125. USART register map and reset values

OffsetRegister313029282726252423222120191817161514131211109876543210
0x00USART_CR1Res.Res.Res.M1EOIERTOIEDEAT4DEAT3DEAT2DEAT1DEAT0DEDT4DEDT3DEDT2DEDT1DEDT0OVER8CMIEMMEM0WAKEPCEPSPEIETXEIETCIERXNEIEIDLEIETEREUESMUE
Reset value00000000000000000000000000000
0x04USART_CR2ADD[7:4]ADD[3:0]RTOENABRMOD1ABRMOD0ABRENMSBFIRSTDATAINVTXINVRXINVSWAPLINENSTOP [1:0]CLKENCPOLCPHALBCLRes.LBIDLELBDLADDM7Res.Res.Res.Res.
Reset value000000000000000000000000000
0x08USART_CR3Res.Res.Res.Res.Res.Res.Res.TCBGTIEUCESMWUFIEWUSSCARCNT[2:0]Res.DEPDEMDDREOVRDISONEBITCTSIECTSERTSEDMATDMARSCENNACKHDSELIRLPIRENEIE
Reset value00000000000000000000000
0x0CUSART_BRRRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.BRR[15:0]
Reset value0000000000000000
0x10USART_GTPRRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.GT[7:0]PSC[7:0]
Reset value0000000000000000
0x14USART_RTORBLEN[7:0]RTO[23:0]
Reset value00000000000000000000000000000000
0x18USART_RQRRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.TXFRQRXFRQMMRQSBKRQABRRQ
Reset value00000
0x1CUSART_ISRRes.Res.Res.Res.Res.Res.TCBGTRes.REACKTEACKWUFSBKFCMFBUSYABRFABRERes.EOBFRTOFCTSCTSIFLBDFTXETCRXNEIDLEORENFFEPE
Reset value1000000000000011000000
0x20USART_ICRRes.Res.Res.Res.Res.Res.Res.Res.Res.WUCFRes.Res.CMCFRes.Res.Res.Res.EOBCFRTOCFRes.CTSCFLBDCFTCBGTCFTCCFRes.IDLECFORECFNCFFECFPECF
Reset value0000000000000
0x24USART_RDRRes.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.RDR[8:0]
Reset valueXXXXXXXXX

Table 125. USART register map and reset values (continued)

OffsetRegister313029282726252423222120191817161514131211109876543210
0x28USART_TDRResResResResResResResResResResResResResResResResResResResResResResResTDR[8:0]
Reset valueXXXXXXXX

Refer to Section 2.2 on page 51 for the register boundary addresses.