usart.h
¶
Universal Synchronous/Asynchronous Receiver/Transmitter (USART, or commonly serial port) support.
Contents
Functions¶
-
void
usart_init
(usart_dev *dev)¶ Initialize a serial port.
- Parameters
dev
-Serial port to be initialized
-
void
usart_enable
(usart_dev *dev)¶ Enable a serial port.
USART is enabled in single buffer transmission mode, multibuffer receiver mode, 8n1.
Serial port must have a baud rate configured to work properly.
- See
- usart_set_baud_rate()
- Parameters
dev
-Serial port to enable.
-
void
usart_disable
(usart_dev *dev)¶ Turn off a serial port.
- Parameters
dev
-Serial port to be disabled
-
static void
usart_disable_all
(void)¶ Disable all serial ports.
-
void usart_foreach(void(*)( usart_dev *dev) fn)
-
uint32
usart_rx
(usart_dev *dev, uint8 *buf, uint32 len)¶ Nonblocking USART receive.
- Return
- Number of bytes received
- Parameters
dev
-Serial port to receive bytes from
buf
-Buffer to store received bytes into
len
-Maximum number of bytes to store
-
uint32
usart_tx
(usart_dev *dev, const uint8 *buf, uint32 len)¶ Nonblocking USART transmit.
- Return
- Number of bytes transmitted
- Parameters
dev
-Serial port to transmit over
buf
-Buffer to transmit
len
-Maximum number of bytes to transmit
-
void
usart_putudec
(usart_dev *dev, uint32 val)¶ Transmit an unsigned integer to the specified serial port in decimal format.
This function blocks until the integer’s digits have been completely transmitted.
- Parameters
dev
-Serial port to send on
val
-Number to print
-
static void
usart_putc
(usart_dev *dev, uint8 byte)¶ Transmit one character on a serial port.
This function blocks until the character has been successfully transmitted.
- Parameters
dev
-Serial port to send on.
byte
-Byte to transmit.
-
static void
usart_putstr
(usart_dev *dev, const char *str)¶ Transmit a character string on a serial port.
This function blocks until str is completely transmitted.
- Parameters
dev
-Serial port to send on
str
-String to send
-
static uint8
usart_getc
(usart_dev *dev)¶ Read one character from a serial port.
It’s not safe to call this function if the serial port has no data available.
- Return
- byte read
- See
- usart_data_available()
- Parameters
dev
-Serial port to read from
Register Map Base Pointers¶
-
USART1_BASE
¶ USART1 register map base pointer.
-
USART2_BASE
¶ USART2 register map base pointer.
-
USART3_BASE
¶ USART3 register map base pointer.
-
UART4_BASE
¶ UART4 register map base pointer.
-
UART5_BASE
¶ UART5 register map base pointer.
Register Bit Definitions¶
Status Register¶
-
USART_SR_CTS_BIT
¶ Clear to send bit.
-
USART_SR_LBD_BIT
¶ Line break detection bit.
-
USART_SR_TXE_BIT
¶ Transmit data register empty bit.
-
USART_SR_TC_BIT
¶ Transmission complete bit.
-
USART_SR_RXNE_BIT
¶ Read data register not empty bit.
-
USART_SR_IDLE_BIT
¶ IDLE line detected bit.
-
USART_SR_ORE_BIT
¶ Overrun error bit.
-
USART_SR_NE_BIT
¶ Noise error bit.
-
USART_SR_FE_BIT
¶ Framing error bit.
-
USART_SR_PE_BIT
¶ Parity error bit.
-
USART_SR_CTS
¶ Clear to send mask.
-
USART_SR_LBD
¶ Line break detected mask.
-
USART_SR_TXE
¶ Transmit data register empty mask.
-
USART_SR_TC
¶ Transmission complete mask.
-
USART_SR_RXNE
¶ Read data register not empty mask.
-
USART_SR_IDLE
¶ IDLE line detected mask.
-
USART_SR_ORE
¶ Overrun error mask.
-
USART_SR_NE
¶ Noise error mask.
-
USART_SR_FE
¶ Framing error mask.
-
USART_SR_PE
¶ Parity error mask.
Data register¶
-
USART_DR_DR
¶ Data register data value mask.
Baud Rate Register¶
-
USART_BRR_DIV_MANTISSA
¶ Mantissa of USARTDIV mask.
-
USART_BRR_DIV_FRACTION
¶ Fraction of USARTDIV mask.
Control Register 1¶
-
USART_CR1_UE_BIT
¶ USART enable bit.
-
USART_CR1_M_BIT
¶ Word length bit.
-
USART_CR1_WAKE_BIT
¶ Wakeup method bit.
-
USART_CR1_PCE_BIT
¶ Parity control enable bit.
-
USART_CR1_PS_BIT
¶ Parity selection bit.
-
USART_CR1_PEIE_BIT
¶ Parity error interrupt enable bit.
-
USART_CR1_TXEIE_BIT
¶ Transmit data regsiter not empty interrupt enable bit.
-
USART_CR1_TCIE_BIT
¶ Transmission complete interrupt enable bit.
-
USART_CR1_RXNEIE_BIT
¶ RXNE interrupt enable bit.
-
USART_CR1_IDLEIE_BIT
¶ IDLE interrupt enable bit.
-
USART_CR1_TE_BIT
¶ Transmitter enable bit.
-
USART_CR1_RE_BIT
¶ Receiver enable bit.
-
USART_CR1_RWU_BIT
¶ Receiver wakeup bit.
-
USART_CR1_SBK_BIT
¶ Send break bit.
-
USART_CR1_UE
¶ USART enable mask.
-
USART_CR1_M
¶ Word length mask.
-
USART_CR1_WAKE
¶ Wakeup method mask.
-
USART_CR1_WAKE_IDLE
¶ Wakeup on idle line.
-
USART_CR1_WAKE_ADDR
¶ Wakeup on address mark.
-
USART_CR1_PCE
¶ Parity control enable mask.
-
USART_CR1_PS
¶ Parity selection mask.
-
USART_CR1_PS_EVEN
¶ Parity selection: even parity.
-
USART_CR1_PS_ODD
¶ Parity selection: odd parity.
-
USART_CR1_PEIE
¶ Parity error interrupt enable mask.
-
USART_CR1_TXEIE
¶ Transmit data register empty interrupt enable mask.
-
USART_CR1_TCIE
¶ Transmission complete interrupt enable mask.
-
USART_CR1_RXNEIE
¶ RXNE interrupt enable mask.
-
USART_CR1_IDLEIE
¶ IDLE line interrupt enable mask.
-
USART_CR1_TE
¶ Transmitter enable mask.
-
USART_CR1_RE
¶ Receiver enable mask.
-
USART_CR1_RWU
¶ Receiver wakeup mask.
-
USART_CR1_RWU_ACTIVE
¶ Receiver wakeup: receiver in active mode.
-
USART_CR1_RWU_MUTE
¶ Receiver wakeup: receiver in mute mode.
-
USART_CR1_SBK
¶ Send break.
Control Register 2¶
-
USART_CR2_LINEN_BIT
¶ LIN mode enable bit.
-
USART_CR2_CLKEN_BIT
¶ Clock enable bit.
-
USART_CR2_CPOL_BIT
¶ Clock polarity bit.
-
USART_CR2_CPHA_BIT
¶ Clock phase bit.
-
USART_CR2_LBCL_BIT
¶ Last bit clock pulse bit.
-
USART_CR2_LBDIE_BIT
¶ LIN break detection interrupt enable bit.
-
USART_CR2_LBDL_BIT
¶ LIN break detection length bit.
-
USART_CR2_LINEN
¶ LIN mode enable mask.
-
USART_CR2_STOP
¶ STOP bits mask.
-
USART_CR2_STOP_BITS_1
¶ STOP bits: 1 stop bit.
-
USART_CR2_STOP_BITS_POINT_5
¶ STOP bits: 0.5 stop bits Not available on UART4, UART5.
-
USART_CR2_STOP_BITS_1_POINT_5
¶ STOP bits: 1.5 stop bits Not available on UART4, UART5.
-
USART_CR2_STOP_BITS_2
¶ STOP bits: 2 stop bits.
-
USART_CR2_CLKEN
¶ Clock enable.
Not available on UART4, UART5
-
USART_CR2_CPOL
¶ Clock polarity mask.
Not available on UART4, UART5
-
USART_CR2_CPOL_LOW
¶ Clock polarity: low.
-
USART_CR2_CPOL_HIGH
¶ Clock polarity: high.
-
USART_CR2_CPHA
¶ Clock phase mask.
Not available on UART4, UART5
-
USART_CR2_CPHA_FIRST
¶ Clock phase: first First clock transition is the first data capture edge.
-
USART_CR2_CPHA_SECOND
¶ Clock phase: second Second clock transition is the first data capture edge.
-
USART_CR2_LBCL
¶ Last bit clock pulse mask.
When set, the last bit transmitted causes a clock pulse in synchronous mode.
Not available on UART4, UART5
-
USART_CR2_LBDIE
¶ LIN break detection interrupt enable mask.
-
USART_CR2_LBDL
¶ LIN break detection length.
-
USART_CR2_LBDL_10_BIT
¶ LIN break detection length: 10 bits.
-
USART_CR2_LBDL_11_BIT
¶ LIN break detection length: 11 bits.
-
USART_CR2_ADD
¶ Address of the USART node This is useful during multiprocessor communication.
Control Register 3¶
-
USART_CR3_CTSIE_BIT
¶ Clear to send interrupt enable bit.
-
USART_CR3_CTSE_BIT
¶ Clear to send enable bit.
-
USART_CR3_RTSE_BIT
¶ Ready to send enable bit.
-
USART_CR3_DMAT_BIT
¶ DMA enable transmitter bit.
-
USART_CR3_DMAR_BIT
¶ DMA enable receiver bit.
-
USART_CR3_SCEN_BIT
¶ Smartcard mode enable bit.
-
USART_CR3_NACK_BIT
¶ Smartcard NACK enable bit.
-
USART_CR3_HDSEL_BIT
¶ Half-duplex selection bit.
-
USART_CR3_IRLP_BIT
¶ IrDA low power bit.
-
USART_CR3_IREN_BIT
¶ IrDA mode enable bit.
-
USART_CR3_EIE_BIT
¶ Error interrupt enable bit.
-
USART_CR3_CTSIE
¶ Clear to send interrupt enable Not available on UART4, UART5.
-
USART_CR3_CTSE
¶ Clear to send enable Not available on UART4, UART5.
-
USART_CR3_RTSE
¶ Ready to send enable Not available on UART4, UART5.
-
USART_CR3_DMAT
¶ DMA enable transmitter Not available on UART5.
-
USART_CR3_DMAR
¶ DMA enable receiver Not available on UART5.
-
USART_CR3_SCEN
¶ Smartcard mode enable Not available on UART4, UART5.
-
USART_CR3_NACK
¶ Smartcard NACK enable Not available on UART4, UART5.
-
USART_CR3_HDSEL
¶ Half-duplex selection When set, single-wire half duplex mode is selected.
-
USART_CR3_IRLP
¶ IrDA low power mode.
-
USART_CR3_IRLP_NORMAL
¶ IrDA mode: normal.
-
USART_CR3_IRLP_LOW_POWER
¶ IrDA mode: low power.
-
USART_CR3_IREN
¶ IrDA mode enable.
-
USART_CR3_EIE
¶ Error interrupt enable.
Guard Time and Prescaler Register¶
-
USART_GTPR_GT
¶ Guard time value mask Used in Smartcard mode.
Not available on UART4, UART5.
-
USART_GTPR_PSC
¶ Prescaler value mask Restrictions on this value apply, depending on the USART mode.
Not available on UART4, UART5.