33 #include "fsl_common.h" 46 #define FSL_UART_DRIVER_VERSION (MAKE_VERSION(2, 0, 0)) 65 typedef enum _uart_parity_mode
73 typedef enum _uart_stop_bit_count
86 #if defined(FSL_FEATURE_UART_HAS_LIN_BREAK_DETECT) && FSL_FEATURE_UART_HAS_LIN_BREAK_DETECT 98 #if defined(FSL_FEATURE_UART_HAS_FIFO) && FSL_FEATURE_UART_HAS_FIFO 122 #if defined(FSL_FEATURE_UART_HAS_LIN_BREAK_DETECT) && FSL_FEATURE_UART_HAS_LIN_BREAK_DETECT 130 #
if defined(FSL_FEATURE_UART_HAS_EXTENDED_DATA_REGISTER_FLAGS) && FSL_FEATURE_UART_HAS_EXTENDED_DATA_REGISTER_FLAGS
134 #if defined(FSL_FEATURE_UART_HAS_FIFO) && FSL_FEATURE_UART_HAS_FIFO 144 typedef struct _uart_config
148 #if defined(FSL_FEATURE_UART_HAS_STOP_BIT_CONFIG_SUPPORT) && FSL_FEATURE_UART_HAS_STOP_BIT_CONFIG_SUPPORT 151 #if defined(FSL_FEATURE_UART_HAS_FIFO) && FSL_FEATURE_UART_HAS_FIFO 160 typedef struct _uart_transfer
198 #if defined(__cplusplus) 269 void UART_SetBaudRate(UART_Type *base, uint32_t baudRate_Bps, uint32_t srcClock_Hz);
376 #if defined(FSL_FEATURE_UART_HAS_DMA_SELECT) && FSL_FEATURE_UART_HAS_DMA_SELECT 392 return (uint32_t) & (base->D);
407 #if (defined(FSL_FEATURE_UART_IS_SCI) && FSL_FEATURE_UART_IS_SCI) 408 base->C4 |= UART_C4_TDMAS_MASK;
410 base->C5 |= UART_C5_TDMAS_MASK;
412 base->C2 |= UART_C2_TIE_MASK;
416 #if (defined(FSL_FEATURE_UART_IS_SCI) && FSL_FEATURE_UART_IS_SCI) 417 base->C4 &= ~UART_C4_TDMAS_MASK;
419 base->C5 &= ~UART_C5_TDMAS_MASK;
421 base->C2 &= ~UART_C2_TIE_MASK;
437 #if (defined(FSL_FEATURE_UART_IS_SCI) && FSL_FEATURE_UART_IS_SCI) 438 base->C4 |= UART_C4_RDMAS_MASK;
440 base->C5 |= UART_C5_RDMAS_MASK;
442 base->C2 |= UART_C2_RIE_MASK;
446 #if (defined(FSL_FEATURE_UART_IS_SCI) && FSL_FEATURE_UART_IS_SCI) 447 base->C4 &= ~UART_C4_RDMAS_MASK;
449 base->C5 &= ~UART_C5_RDMAS_MASK;
451 base->C2 &= ~UART_C2_RIE_MASK;
475 base->C2 |= UART_C2_TE_MASK;
479 base->C2 &= ~UART_C2_TE_MASK;
495 base->C2 |= UART_C2_RE_MASK;
499 base->C2 &= ~UART_C2_RE_MASK;
597 void UART_StartRingBuffer(UART_Type *base, uart_handle_t *handle, uint8_t *ringBuffer,
size_t ringBufferSize);
729 #if defined(__cplusplus) void UART_AbortReceive(UART_Type *base, uart_handle_t *handle)
Aborts the interrupt-driven data receiving.
Definition: fsl_uart.c:706
uint8_t rxFifoWatermark
Definition: fsl_uart.h:153
static uint8_t UART_ReadByte(UART_Type *base)
Reads the RX register directly.
Definition: fsl_uart.h:554
void UART_StartRingBuffer(UART_Type *base, uart_handle_t *handle, uint8_t *ringBuffer, size_t ringBufferSize)
Sets up the RX ring buffer.
Definition: fsl_uart.c:523
Definition: fsl_uart.h:89
volatile size_t rxDataSize
Definition: fsl_uart.h:179
void UART_Init(UART_Type *base, const uart_config_t *config, uint32_t srcClock_Hz)
Initializes a UART instance with user configuration structure and peripheral clock.
Definition: fsl_uart.c:196
Definition: fsl_uart.h:61
uint32_t UART_GetEnabledInterrupts(UART_Type *base)
Gets the enabled UART interrupts.
Definition: fsl_uart.c:365
Definition: fsl_uart.h:101
_uart_flags
UART status flags.
Definition: fsl_uart.h:110
volatile uint16_t rxRingBufferTail
Definition: fsl_uart.h:185
uart_parity_mode_t
UART parity mode.
Definition: fsl_uart.h:65
bool enableRx
Definition: fsl_uart.h:156
status_t UART_ReceiveNonBlocking(UART_Type *base, uart_handle_t *handle, uart_transfer_t *xfer, size_t *receivedBytes)
Receives a buffer of data using an interrupt method.
Definition: fsl_uart.c:605
uint32_t baudRate_Bps
Definition: fsl_uart.h:146
void UART_HandleIRQ(UART_Type *base, uart_handle_t *handle)
UART IRQ handle function.
Definition: fsl_uart.c:736
volatile size_t txDataSize
Definition: fsl_uart.h:176
void UART_EnableInterrupts(UART_Type *base, uint32_t mask)
Enables UART interrupts according to the provided mask.
Definition: fsl_uart.c:339
Definition: fsl_uart.h:119
Definition: fsl_uart.h:112
Definition: fsl_uart.h:97
Definition: fsl_uart.h:132
size_t txDataSizeAll
Definition: fsl_uart.h:177
Definition: fsl_uart.h:91
void UART_Deinit(UART_Type *base)
Deinitializes a UART instance.
Definition: fsl_uart.c:270
status_t UART_GetSendCount(UART_Type *base, uart_handle_t *handle, uint32_t *count)
Get the number of bytes that have been written to UART TX register.
Definition: fsl_uart.c:588
_uart_interrupt_enable
UART interrupt configuration structure, default settings all disabled.
Definition: fsl_uart.h:84
static void UART_EnableTx(UART_Type *base, bool enable)
Enables or disables the UART transmitter.
Definition: fsl_uart.h:471
Definition: fsl_uart.h:100
Definition: fsl_uart.h:93
Definition: fsl_uart.h:94
size_t dataSize
Definition: fsl_uart.h:163
Definition: fsl_uart.h:52
Definition: fsl_uart.h:56
Definition: fsl_uart.h:136
Definition: fsl_uart.h:115
status_t UART_GetReceiveCount(UART_Type *base, uart_handle_t *handle, uint32_t *count)
Get the number of bytes that have been received.
Definition: fsl_uart.c:719
Definition: fsl_uart.h:137
UART transfer structure.
Definition: fsl_uart.h:160
Definition: fsl_uart.h:57
Definition: fsl_uart.h:128
volatile uint8_t txState
Definition: fsl_uart.h:190
uint8_t * rxRingBuffer
Definition: fsl_uart.h:182
Definition: fsl_uart.h:117
Definition: fsl_uart.h:54
Definition: fsl_uart.h:92
uint8_t txFifoWatermark
Definition: fsl_uart.h:152
Definition: fsl_uart.h:138
void UART_AbortSend(UART_Type *base, uart_handle_t *handle)
Aborts the interrupt driven data transmit.
Definition: fsl_uart.c:580
Definition: fsl_uart.h:69
volatile uint16_t rxRingBufferHead
Definition: fsl_uart.h:184
uint32_t UART_GetStatusFlags(UART_Type *base)
Get UART status flags.
Definition: fsl_uart.c:378
Definition: fsl_uart.h:139
Definition: fsl_uart.h:116
Definition: fsl_uart.h:123
void UART_DisableInterrupts(UART_Type *base, uint32_t mask)
Disables the UART interrupts according to the provided mask.
Definition: fsl_uart.c:352
static void UART_EnableTxDMA(UART_Type *base, bool enable)
Enables or disables the UART transmitter DMA request.
Definition: fsl_uart.h:403
Definition: fsl_uart.h:51
Definition: fsl_uart.h:99
Definition: fsl_uart.h:53
uart_stop_bit_count_t
UART stop bit count.
Definition: fsl_uart.h:73
uint8_t * data
Definition: fsl_uart.h:162
uart_stop_bit_count_t stopBitCount
Definition: fsl_uart.h:149
static uint32_t UART_GetDataRegisterAddress(UART_Type *base)
Gets the UART data register address.
Definition: fsl_uart.h:390
size_t rxDataSizeAll
Definition: fsl_uart.h:180
UART configuration structure.
Definition: fsl_uart.h:144
void UART_CreateHandle(UART_Type *base, uart_handle_t *handle, uart_transfer_callback_t callback, void *userData)
Initializes the UART handle.
Definition: fsl_uart.c:484
Definition: fsl_uart.h:135
size_t rxRingBufferSize
Definition: fsl_uart.h:183
void UART_GetDefaultConfig(uart_config_t *config)
Gets the default configuration structure.
Definition: fsl_uart.c:290
Definition: fsl_uart.h:76
static void UART_EnableRx(UART_Type *base, bool enable)
Enables or disables the UART receiver.
Definition: fsl_uart.h:491
Definition: fsl_uart.h:121
static void UART_EnableRxDMA(UART_Type *base, bool enable)
Enables or disables the UART receiver DMA.
Definition: fsl_uart.h:433
Definition: fsl_uart.h:60
void UART_HandleErrorIRQ(UART_Type *base, uart_handle_t *handle)
UART Error IRQ handle function.
Definition: fsl_uart.c:885
bool enableTx
Definition: fsl_uart.h:155
Definition: fsl_uart.h:114
Definition: fsl_common.h:75
void * userData
Definition: fsl_uart.h:188
void UART_SetBaudRate(UART_Type *base, uint32_t baudRate_Bps, uint32_t srcClock_Hz)
Sets the UART instance baud rate.
Definition: fsl_uart.c:307
uart_parity_mode_t parityMode
Definition: fsl_uart.h:147
Definition: fsl_uart.h:90
Definition: fsl_uart.h:96
Definition: fsl_uart.h:113
Definition: fsl_uart.h:55
Definition: fsl_uart.h:126
status_t UART_ClearStatusFlags(UART_Type *base, uint32_t mask)
Clears status flags with the provided mask.
Definition: fsl_uart.c:395
volatile uint8_t rxState
Definition: fsl_uart.h:191
Definition: fsl_uart.h:131
static void UART_WriteByte(UART_Type *base, uint8_t data)
Writes to the TX register.
Definition: fsl_uart.h:528
Definition: fsl_uart.h:95
Definition: fsl_uart.h:59
uint8_t *volatile txData
Definition: fsl_uart.h:175
void(* uart_transfer_callback_t)(UART_Type *base, uart_handle_t *handle, status_t status, void *userData)
UART transfer callback function.
Definition: fsl_uart.h:170
Definition: fsl_uart.h:68
int32_t status_t
Type used for all status and error return values.
Definition: fsl_common.h:121
void UART_WriteBlocking(UART_Type *base, const uint8_t *data, size_t length)
Writes to the TX register using a blocking method.
Definition: fsl_uart.c:436
uint8_t *volatile rxData
Definition: fsl_uart.h:178
Definition: fsl_uart.h:75
Definition: fsl_uart.h:87
Definition: fsl_uart.h:67
UART handle structure.
Definition: fsl_uart.h:173
uart_transfer_callback_t callback
Definition: fsl_uart.h:187
void UART_StopRingBuffer(UART_Type *base, uart_handle_t *handle)
Aborts the background transfer and uninstalls the ring buffer.
Definition: fsl_uart.c:540
void UART_ReadBlocking(UART_Type *base, uint8_t *data, size_t length)
Read RX data register using a blocking method.
Definition: fsl_uart.c:459
status_t UART_SendNonBlocking(UART_Type *base, uart_handle_t *handle, uart_transfer_t *xfer)
Transmits a buffer of data using the interrupt method.
Definition: fsl_uart.c:555