33 #include "fsl_common.h" 46 #define FSL_LPSCI_DRIVER_VERSION (MAKE_VERSION(2, 0, 0)) 68 typedef enum _lpsci_parity_mode
76 typedef enum _lpsci_stop_bit_count
89 #if defined(FSL_FEATURE_LPSCI_HAS_LIN_BREAK_DETECT) && FSL_FEATURE_LPSCI_HAS_LIN_BREAK_DETECT 114 (UART0_S1_RDRF_MASK),
123 #if defined(FSL_FEATURE_LPSCI_HAS_LIN_BREAK_DETECT) && FSL_FEATURE_LPSCI_HAS_LIN_BREAK_DETECT 125 (UART0_S2_LBKDIF_MASK
129 (UART0_S2_RXEDGIF_MASK << 8),
131 (UART0_S2_RAF_MASK << 8),
132 #
if defined(FSL_FEATURE_LPSCI_HAS_EXTENDED_DATA_REGISTER_FLAGS) && FSL_FEATURE_LPSCI_HAS_EXTENDED_DATA_REGISTER_FLAGS
134 (UART0_ED_NOISY_MASK << 16),
136 (UART0_ED_PARITYE_MASK << 16),
141 typedef struct _lpsci_config
145 #if defined(FSL_FEATURE_LPSCI_HAS_STOP_BIT_CONFIG_SUPPORT) && FSL_FEATURE_LPSCI_HAS_STOP_BIT_CONFIG_SUPPORT 153 typedef struct _lpsci_transfer
192 #if defined(__cplusplus) 305 status_t LPSCI_ClearStatusFlags(UART0_Type *base, uint32_t mask);
368 #if defined(FSL_FEATURE_LPSCI_HAS_DMA_ENABLE) && FSL_FEATURE_LPSCI_HAS_DMA_ENABLE 385 return (uint32_t) & (base->D);
400 base->C5 |= UART0_C5_TDMAE_MASK;
401 base->C2 |= UART0_C2_TIE_MASK;
405 base->C5 &= ~UART0_C5_TDMAE_MASK;
406 base->C2 &= ~UART0_C2_TIE_MASK;
422 base->C5 |= UART0_C5_RDMAE_MASK;
423 base->C2 |= UART0_C2_RIE_MASK;
427 base->C5 &= ~UART0_C5_RDMAE_MASK;
428 base->C2 &= ~UART0_C2_RIE_MASK;
452 base->C2 |= UART0_C2_TE_MASK;
456 base->C2 &= ~UART0_C2_TE_MASK;
472 base->C2 |= UART0_C2_RE_MASK;
476 base->C2 &= ~UART0_C2_RE_MASK;
534 lpsci_handle_t *handle,
556 lpsci_handle_t *handle,
558 size_t ringBufferSize);
673 lpsci_handle_t *handle,
675 size_t *receivedBytes);
720 #if defined(__cplusplus) Definition: fsl_lpsci.h:118
void LPSCI_DisableInterrupts(UART0_Type *base, uint32_t mask)
Disables the LPSCI interrupt according to a provided mask.
Definition: fsl_lpsci.c:413
static void LPSCI_EnableTxDMA(UART0_Type *base, bool enable)
Enables or disable LPSCI transmitter DMA request.
Definition: fsl_lpsci.h:396
bool enableTx
Definition: fsl_lpsci.h:148
void(* lpsci_transfer_callback_t)(UART0_Type *base, lpsci_handle_t *handle, status_t status, void *userData)
LPSCI transfer callback function.
Definition: fsl_lpsci.h:163
volatile uint8_t rxState
Definition: fsl_lpsci.h:185
Definition: fsl_lpsci.h:124
Definition: fsl_lpsci.h:111
Definition: fsl_lpsci.h:63
void LPSCI_TransferStartRingBuffer(UART0_Type *base, lpsci_handle_t *handle, uint8_t *ringBuffer, size_t ringBufferSize)
Sets up the RX ring buffer.
Definition: fsl_lpsci.c:573
Definition: fsl_lpsci.h:51
Definition: fsl_lpsci.h:96
Definition: fsl_lpsci.h:90
uint8_t * rxRingBuffer
Definition: fsl_lpsci.h:176
void LPSCI_TransferHandleErrorIRQ(UART0_Type *base, lpsci_handle_t *handle)
LPSCI Error IRQ handle function.
Definition: fsl_lpsci.c:957
uint32_t baudRate_Bps
Definition: fsl_lpsci.h:143
status_t LPSCI_TransferSendNonBlocking(UART0_Type *base, lpsci_handle_t *handle, lpsci_transfer_t *xfer)
Transmits a buffer of data using the interrupt method.
Definition: fsl_lpsci.c:605
volatile uint16_t rxRingBufferTail
Definition: fsl_lpsci.h:179
Definition: fsl_lpsci.h:128
uint8_t * data
Definition: fsl_lpsci.h:155
static void LPSCI_WriteByte(UART0_Type *base, uint8_t data)
Writes to the TX register.
Definition: fsl_lpsci.h:489
void LPSCI_TransferCreateHandle(UART0_Type *base, lpsci_handle_t *handle, lpsci_transfer_callback_t callback, void *userData)
Initializes the LPSCI handle.
Definition: fsl_lpsci.c:541
_lpsci_interrupt_enable_t
LPSCI interrupt configuration structure, default settings all disabled.
Definition: fsl_lpsci.h:87
Definition: fsl_lpsci.h:54
Definition: fsl_lpsci.h:50
Definition: fsl_lpsci.h:95
void LPSCI_EnableInterrupts(UART0_Type *base, uint32_t mask)
Enables an LPSCI interrupt according to a provided mask.
Definition: fsl_lpsci.c:404
static void LPSCI_EnableRx(UART0_Type *base, bool enable)
Enables or disables the LPSCI receiver.
Definition: fsl_lpsci.h:468
void LPSCI_TransferAbortSend(UART0_Type *base, lpsci_handle_t *handle)
Aborts the interrupt-driven data transmit.
Definition: fsl_lpsci.c:636
Definition: fsl_lpsci.h:78
volatile uint8_t txState
Definition: fsl_lpsci.h:184
status_t LPSCI_TransferReceiveBlocking(UART0_Type *base, uint8_t *data, size_t length)
Reads the RX register using a non-blocking method.
Definition: fsl_lpsci.c:501
void LPSCI_Deinit(UART0_Type *base)
Deinitializes an LPSCI instance.
Definition: fsl_lpsci.c:306
lpsci_stop_bit_count_t stopBitCount
Definition: fsl_lpsci.h:146
static uint8_t LPSCI_ReadByte(UART0_Type *base)
Reads the RX data register.
Definition: fsl_lpsci.h:503
status_t LPSCI_SetBaudRate(UART0_Type *base, uint32_t baudRate_Bps, uint32_t srcClock_Hz)
Sets the LPSCI instance baudrate.
Definition: fsl_lpsci.c:326
Definition: fsl_lpsci.h:110
Definition: fsl_lpsci.h:116
volatile size_t rxDataSize
Definition: fsl_lpsci.h:173
Definition: fsl_lpsci.h:133
Definition: fsl_lpsci.h:113
Definition: fsl_lpsci.h:92
uint8_t *volatile txData
Definition: fsl_lpsci.h:169
status_t LPSCI_TransferGetReceiveCount(UART0_Type *base, lpsci_handle_t *handle, uint32_t *count)
Get the number of bytes that have been received.
Definition: fsl_lpsci.c:792
status_t LPSCI_Init(UART0_Type *base, const lpsci_config_t *config, uint32_t srcClock_Hz)
Initializes an LPSCI instance with the user configuration structure and the peripheral clock...
Definition: fsl_lpsci.c:197
Definition: fsl_lpsci.h:115
uint8_t *volatile rxData
Definition: fsl_lpsci.h:172
Definition: fsl_lpsci.h:70
Definition: fsl_lpsci.h:99
uint32_t LPSCI_GetStatusFlags(UART0_Type *base)
Gets LPSCI status flags.
Definition: fsl_lpsci.c:430
size_t txDataSizeAll
Definition: fsl_lpsci.h:171
void LPSCI_TransferAbortReceive(UART0_Type *base, lpsci_handle_t *handle)
Aborts interrupt driven data receiving.
Definition: fsl_lpsci.c:779
Definition: fsl_common.h:77
static void LPSCI_EnableTx(UART0_Type *base, bool enable)
Enables or disables the LPSCI transmitter.
Definition: fsl_lpsci.h:448
lpsci_parity_mode_t parityMode
Definition: fsl_lpsci.h:144
size_t dataSize
Definition: fsl_lpsci.h:156
static void LPSCI_EnableRxDMA(UART0_Type *base, bool enable)
Enables or disables the LPSCI receiver DMA.
Definition: fsl_lpsci.h:418
Definition: fsl_lpsci.h:122
void LPSCI_GetDefaultConfig(lpsci_config_t *config)
Gets the default configuration structure and saves the configuration to a user-provided pointer...
Definition: fsl_lpsci.c:317
size_t rxRingBufferSize
Definition: fsl_lpsci.h:177
Definition: fsl_lpsci.h:53
volatile size_t txDataSize
Definition: fsl_lpsci.h:170
lpsci_stop_bit_count_t
LPSCI stop bit count.
Definition: fsl_lpsci.h:76
void LPSCI_TransferStopRingBuffer(UART0_Type *base, lpsci_handle_t *handle)
Aborts the background transfer and uninstalls the ring buffer.
Definition: fsl_lpsci.c:590
Definition: fsl_lpsci.h:59
Definition: fsl_lpsci.h:97
LPSCI configure structure.
Definition: fsl_lpsci.h:141
Definition: fsl_lpsci.h:93
Definition: fsl_lpsci.h:167
Definition: fsl_lpsci.h:135
Definition: fsl_lpsci.h:120
Definition: fsl_lpsci.h:64
static uint32_t LPSCI_GetDataRegisterAddress(UART0_Type *base)
Gets the LPSCI data register address.
Definition: fsl_lpsci.h:383
Definition: fsl_lpsci.h:130
Definition: fsl_lpsci.h:52
lpsci_parity_mode_t
LPSCI parity mode.
Definition: fsl_lpsci.h:68
Definition: fsl_lpsci.h:98
Definition: fsl_lpsci.h:71
volatile uint16_t rxRingBufferHead
Definition: fsl_lpsci.h:178
Definition: fsl_lpsci.h:79
void LPSCI_TransferHandleIRQ(UART0_Type *base, lpsci_handle_t *handle)
LPSCI IRQ handle function.
Definition: fsl_lpsci.c:809
Definition: fsl_lpsci.h:100
void * userData
Definition: fsl_lpsci.h:182
status_t LPSCI_TransferGetSendCount(UART0_Type *base, lpsci_handle_t *handle, uint32_t *count)
Get the number of bytes that have been written to LPSCI TX register.
Definition: fsl_lpsci.c:644
Definition: fsl_lpsci.h:72
void LPSCI_TransferSendBlocking(UART0_Type *base, const uint8_t *data, size_t length)
Writes to the TX register using a blocking method.
Definition: fsl_lpsci.c:488
status_t LPSCI_TransferReceiveNonBlocking(UART0_Type *base, lpsci_handle_t *handle, lpsci_transfer_t *xfer, size_t *receivedBytes)
Receives buffer of data using the interrupt method.
Definition: fsl_lpsci.c:661
bool enableRx
Definition: fsl_lpsci.h:149
int32_t status_t
Type used for all status and error return values.
Definition: fsl_common.h:121
Definition: fsl_lpsci.h:62
size_t rxDataSizeAll
Definition: fsl_lpsci.h:174
LPSCI transfer structure.
Definition: fsl_lpsci.h:153
uint32_t LPSCI_GetEnabledInterrupts(UART0_Type *base)
Gets the enabled LPSCI interrupts.
Definition: fsl_lpsci.c:422
Definition: fsl_lpsci.h:94
_lpsci_status_flag_t
LPSCI status flags.
Definition: fsl_lpsci.h:108
Definition: fsl_lpsci.h:56
lpsci_transfer_callback_t callback
Definition: fsl_lpsci.h:181
Definition: fsl_lpsci.h:61
Definition: fsl_lpsci.h:58