4.1.7.5. USART

4.1.7.5.1. Introduction to USART

Universal Synchronous Asynchronous Receiver Transmitter (USART) is a communication protocol used for transmitting and receiving serial data. It’s commonly used to communicate with devices such as serial monitors, GPS modules, and other microcontrollers.

4.1.7.5.2. Key Configurations

  1. Baud Rate: Determines the speed of communication (e.g., 9600 bits per second). The baud rate is calculated as:

  2. USART_DIV=SystemClockBaudRateUSART_DIV = frac{SystemClock}{BaudRate}USART_DIV=BaudRateSystemClock

  3. This value is programmed into the BRR register.

  4. Data Format: Includes settings for word length, stop bits, and parity. These are configured using the CR1 and CR2 registers:

  • Word Length: 8 or 9 bits (configured via M bit in CR1).

  • Stop Bits: 1 or 2 stop bits (configured via STOP bits in CR2).

  • Parity: None, Even, or Odd (configured via PCE and PS bits in CR1).

  1. Control Registers:

  • CR1: Enables USART (UE bit) and configures word length, parity, and transmitter/receiver.

  • CR2: Configures stop bits.

  • CR3: Optional features like hardware flow control.

4.1.7.5.3. Example

  1. Enable USART clock - Enable GPIO clock RCC_AHB1ENR and USART clock RCC_APB1ENR or RCC_APB2ENR.

  2. Configure GPIO pins for USART - TX and RX pins are set to alternate function mode.

  3. Set Baud rate - We calculate baud rate with the formula and set word length, parity and stop bits.

  4. Enable USART - We set the UE bit in CR1.

  5. Transmit data - The TXE bit is checked and data is written in USART_DR.

  6. Receive data - RXNE is checked and the data is read from USART_DR