35 #ifndef __SILICON_LABS_EM_USART_H__
36 #define __SILICON_LABS_EM_USART_H__
39 #if defined(USART_COUNT) && (USART_COUNT > 0)
168 #if defined(USART_IRCTRL_IRPRSSEL_PRSCH4)
171 #if defined(USART_IRCTRL_IRPRSSEL_PRSCH5)
174 #if defined(USART_IRCTRL_IRPRSSEL_PRSCH6)
177 #if defined(USART_IRCTRL_IRPRSSEL_PRSCH7)
182 #if defined(_USART_I2SCTRL_MASK)
204 #if defined(_USART_INPUT_MASK)
213 #if defined(USART_INPUT_RXPRSSEL_PRSCH7)
220 #if defined(USART_INPUT_RXPRSSEL_PRSCH11)
237 #if defined(USART_TRIGCTRL_TSEL_PRSCH7)
277 #if defined(USART_INPUT_RXPRS) && defined(USART_CTRL_MVDIS)
287 #if defined(_USART_TIMING_CSHOLD_MASK)
300 #if defined(USART_TRIGCTRL_AUTOTXTEN)
313 #if defined(_USART_TIMING_CSHOLD_MASK) && defined(USART_CTRL_MVDIS)
314 #define USART_INITASYNC_DEFAULT \
330 #elif defined(USART_INPUT_RXPRS) && defined(USART_CTRL_MVDIS)
331 #define USART_INITASYNC_DEFAULT \
345 #define USART_INITASYNC_DEFAULT \
358 #if defined(USART_TRIGCTRL_AUTOTXTEN)
359 #define USART_INITPRSTRIGGER_DEFAULT \
367 #define USART_INITPRSTRIGGER_DEFAULT \
402 #if defined(USART_INPUT_RXPRS) && defined(USART_TRIGCTRL_AUTOTXTEN)
413 #if defined(_USART_TIMING_CSHOLD_MASK)
424 #if defined(_USART_TIMING_CSHOLD_MASK)
425 #define USART_INITSYNC_DEFAULT \
441 #elif defined(USART_INPUT_RXPRS) && defined(USART_TRIGCTRL_AUTOTXTEN)
442 #define USART_INITSYNC_DEFAULT \
456 #define USART_INITSYNC_DEFAULT \
496 #define USART_INITIRDA_DEFAULT \
515 #if defined(_USART_I2SCTRL_MASK)
542 #define USART_INITI2S_DEFAULT \
556 usartI2sFormatW16D16, \
559 usartI2sJustifyLeft, \
584 #if defined(USART0) || ((USART_COUNT == 1) && defined(USART1))
588 #if defined(_USART_I2SCTRL_MASK)
624 usart->
IEN &= ~flags;
698 return usart->
IF & ien;
772 return (uint8_t)usart->
RXDATA;
881 return (uint16_t)usart->
RXDATAX;
#define USART_FRAME_STOPBITS_ONE
#define USART_TRIGCTRL_TSEL_PRSCH3
USART_Stopbits_TypeDef stopbits
USART_I2sJustify_TypeDef justify
__STATIC_INLINE uint32_t USART_IntGetEnabled(USART_TypeDef *usart)
Get enabled and pending USART interrupt flags. Useful for handling more interrupt sources in the same...
void USART_Tx(USART_TypeDef *usart, uint8_t data)
Transmit one 4-9 bit frame.
#define USART_FRAME_DATABITS_ELEVEN
#define USART_I2SCTRL_FORMAT_W32D24M
#define USART_FRAME_PARITY_EVEN
USART_PrsTriggerCh_TypeDef prsTriggerChannel
void USART_InitSync(USART_TypeDef *usart, const USART_InitSync_TypeDef *init)
Init USART for synchronous mode.
#define USART_FRAME_DATABITS_TWELVE
#define USART_IRCTRL_IRPRSSEL_PRSCH0
USART_OVS_TypeDef oversampling
#define USART_FRAME_DATABITS_FIVE
#define USART_CTRL_OVS_X4
#define USART_FRAME_DATABITS_SIX
__STATIC_INLINE void USART_IntClear(USART_TypeDef *usart, uint32_t flags)
Clear one or more pending USART interrupts.
void USART_BaudrateSyncSet(USART_TypeDef *usart, uint32_t refFreq, uint32_t baudrate)
Configure USART operating in synchronous mode to use a given baudrate (or as close as possible to spe...
#define USART_IRCTRL_IRPW_ONE
#define USART_FRAME_PARITY_NONE
#define USART_FRAME_DATABITS_FIFTEEN
USART_Databits_TypeDef databits
uint8_t USART_Rx(USART_TypeDef *usart)
Receive one 4-8 bit frame, (or part of 10-16 bit frame).
#define USART_CTRL_OVS_X8
USART_InitAsync_TypeDef async
#define USART_TRIGCTRL_TSEL_PRSCH5
void USART_TxDoubleExt(USART_TypeDef *usart, uint32_t data)
Transmit two 4-9 bit frames, or one 10-16 bit frame with extended control.
USART_InitSync_TypeDef sync
uint32_t USART_RxDoubleExt(USART_TypeDef *usart)
Receive two 4-9 bit frames, or one 10-16 bit frame with extended information.
uint32_t USART_BaudrateCalc(uint32_t refFreq, uint32_t clkdiv, bool syncmode, USART_OVS_TypeDef ovs)
Calculate baudrate for USART/UART given reference frequency, clock division and oversampling rate (if...
USART_PrsRxCh_TypeDef prsRxCh
CMSIS Cortex-M Peripheral Access Layer for Silicon Laboratories microcontroller devices.
#define USART_CTRL_CLKPOL_IDLEHIGH
USART_IrDAPw_Typedef irPw
USART_Parity_TypeDef parity
#define USART_CTRL_CLKPHA_SAMPLELEADING
#define USART_CTRL_CLKPOL_IDLELOW
__STATIC_INLINE void USART_IntEnable(USART_TypeDef *usart, uint32_t flags)
Enable one or more USART interrupts.
USART_Enable_TypeDef enable
#define USART_INPUT_RXPRSSEL_PRSCH8
#define USART_INPUT_RXPRSSEL_PRSCH5
#define USART_IRCTRL_IRPRSSEL_PRSCH7
#define USART_FRAME_DATABITS_EIGHT
#define USART_I2SCTRL_FORMAT_W32D16
USART_PrsTriggerCh_TypeDef
USART_I2sFormat_TypeDef format
#define USART_TRIGCTRL_TSEL_PRSCH7
#define USART_INPUT_RXPRSSEL_PRSCH3
#define USART_IRCTRL_IRPRSSEL_PRSCH3
#define USART_IRCTRL_IRPW_FOUR
#define USART_FRAME_STOPBITS_TWO
#define USART_TRIGCTRL_TSEL_PRSCH6
#define USART_INPUT_RXPRSSEL_PRSCH0
#define USART_TRIGCTRL_TSEL_PRSCH4
#define USART_TRIGCTRL_TSEL_PRSCH2
__STATIC_INLINE uint32_t USART_IntGet(USART_TypeDef *usart)
Get pending USART interrupt flags.
uint16_t USART_RxExt(USART_TypeDef *usart)
Receive one 4-9 bit frame, (or part of 10-16 bit frame) with extended information.
#define USART_I2SCTRL_FORMAT_W16D8
#define USART_IRCTRL_IRPRSSEL_PRSCH2
__STATIC_INLINE void USART_IntSet(USART_TypeDef *usart, uint32_t flags)
Set one or more pending USART interrupts from SW.
#define USART_FRAME_DATABITS_SEVEN
__STATIC_INLINE uint16_t USART_RxDoubleGet(USART_TypeDef *usart)
Receive two 4-8 bit frames, or one 10-16 bit frame.
#define USART_I2SCTRL_JUSTIFY_LEFT
#define USART_INPUT_RXPRSSEL_PRSCH7
#define USART_I2SCTRL_FORMAT_W16D16
__STATIC_INLINE uint32_t USART_RxDoubleXGet(USART_TypeDef *usart)
Receive two 4-9 bit frames, or one 10-16 bit frame with extended information.
#define USART_FRAME_DATABITS_NINE
#define USART_I2SCTRL_FORMAT_W32D24
#define USART_FRAME_DATABITS_FOUR
USART_IrDAPrsSel_Typedef irPrsSel
#define USART_TRIGCTRL_TSEL_PRSCH1
#define USART_IRCTRL_IRPW_THREE
#define USART_IRCTRL_IRPRSSEL_PRSCH4
#define USART_CTRL_OVS_X16
USART_ClockMode_TypeDef clockMode
#define USART_INPUT_RXPRSSEL_PRSCH11
__STATIC_INLINE uint32_t USART_StatusGet(USART_TypeDef *usart)
Get USART STATUS register.
USART_Enable_TypeDef enable
void USART_TxExt(USART_TypeDef *usart, uint16_t data)
Transmit one 4-9 bit frame with extended control.
#define USART_I2SCTRL_FORMAT_W32D32
USART_Databits_TypeDef databits
__STATIC_INLINE void USART_IntDisable(USART_TypeDef *usart, uint32_t flags)
Disable one or more USART interrupts.
#define USART_I2SCTRL_FORMAT_W32D8
void USART_Reset(USART_TypeDef *usart)
Reset USART/UART to same state as after a HW reset.
uint8_t USART_SpiTransfer(USART_TypeDef *usart, uint8_t data)
Perform one 8 bit frame SPI transfer.
#define USART_INPUT_RXPRSSEL_PRSCH10
#define USART_INPUT_RXPRSSEL_PRSCH1
void USART_InitI2s(USART_TypeDef *usart, USART_InitI2s_TypeDef *init)
Init USART for I2S mode.
#define USART_FRAME_PARITY_ODD
#define USART_IRCTRL_IRPRSSEL_PRSCH1
__STATIC_INLINE uint16_t USART_RxDataXGet(USART_TypeDef *usart)
Receive one 4-9 bit frame, (or part of 10-16 bit frame) with extended information.
#define USART_TRIGCTRL_TSEL_PRSCH0
#define USART_FRAME_DATABITS_THIRTEEN
#define USART_FRAME_STOPBITS_ONEANDAHALF
#define USART_IRCTRL_IRPW_TWO
#define USART_FRAME_STOPBITS_HALF
#define USART_FRAME_DATABITS_FOURTEEN
#define USART_FRAME_DATABITS_TEN
void USART_Enable(USART_TypeDef *usart, USART_Enable_TypeDef enable)
Enable/disable USART/UART receiver and/or transmitter.
void USART_InitPrsTrigger(USART_TypeDef *usart, const USART_PrsTriggerInit_TypeDef *init)
Initialize automatic transmissions using PRS channel as trigger.
void USART_InitAsync(USART_TypeDef *usart, const USART_InitAsync_TypeDef *init)
Init USART/UART for normal asynchronous mode.
#define USART_FRAME_DATABITS_SIXTEEN
#define USART_INPUT_RXPRSSEL_PRSCH4
#define USART_I2SCTRL_JUSTIFY_RIGHT
uint16_t USART_RxDouble(USART_TypeDef *usart)
Receive two 4-8 bit frames, or one 10-16 bit frame.
#define USART_INPUT_RXPRSSEL_PRSCH6
#define USART_IRCTRL_IRPRSSEL_PRSCH6
#define USART_CTRL_CLKPHA_SAMPLETRAILING
uint32_t USART_BaudrateGet(USART_TypeDef *usart)
Get current baudrate for USART/UART.
#define USART_I2SCTRL_FORMAT_W8D8
#define USART_INPUT_RXPRSSEL_PRSCH2
#define USART_INPUT_RXPRSSEL_PRSCH9
__STATIC_INLINE uint8_t USART_RxDataGet(USART_TypeDef *usart)
Receive one 4-8 bit frame, (or part of 10-16 bit frame).
void USART_TxDouble(USART_TypeDef *usart, uint16_t data)
Transmit two 4-9 bit frames, or one 10-16 bit frame.
USART_PrsRxCh_TypeDef prsRxCh
#define USART_CTRL_OVS_X6
#define USART_IRCTRL_IRPRSSEL_PRSCH5
void USART_BaudrateAsyncSet(USART_TypeDef *usart, uint32_t refFreq, uint32_t baudrate, USART_OVS_TypeDef ovs)
Configure USART/UART operating in asynchronous mode to use a given baudrate (or as close as possible ...