33 #include "fsl_common.h" 45 #define FSL_LPSPI_DRIVER_VERSION (MAKE_VERSION(2, 0, 0)) 48 #define LPSPI_MASTER_DUMMY_DATA (0x00U) 49 #define LPSPI_SLAVE_DUMMY_DATA (0x00U) 73 LPSPI_SR_TCF_MASK | LPSPI_SR_TEF_MASK | LPSPI_SR_REF_MASK | LPSPI_SR_DMF_MASK |
89 (LPSPI_IER_TDIE_MASK | LPSPI_IER_RDIE_MASK | LPSPI_IER_WCIE_MASK | LPSPI_IER_FCIE_MASK | LPSPI_IER_TCIE_MASK |
90 LPSPI_IER_TEIE_MASK | LPSPI_IER_REIE_MASK | LPSPI_IER_DMIE_MASK)
101 typedef enum _lpspi_master_slave_mode
108 typedef enum _lpspi_which_pcs_config
117 typedef enum _lpspi_pcs_polarity_config
134 typedef enum _lpspi_clock_polarity
141 typedef enum _lpspi_clock_phase
150 typedef enum _lpspi_shift_direction
157 typedef enum _lpspi_host_request_select
164 typedef enum _lpspi_match_config
176 typedef enum _lpspi_pin_config
185 typedef enum _lpspi_data_out_config
192 typedef enum _lpspi_transfer_width
200 typedef enum _lpspi_delay_type
207 #define LPSPI_MASTER_PCS_SHIFT (4U) 208 #define LPSPI_MASTER_PCS_MASK (0xF0U) 211 enum _lpspi_transfer_config_flag_for_master 231 #define LPSPI_SLAVE_PCS_SHIFT (4U) 232 #define LPSPI_SLAVE_PCS_MASK (0xF0U) 235 enum _lpspi_transfer_config_flag_for_slave 262 typedef struct _lpspi_master_config
289 typedef struct _lpspi_slave_config
325 lpspi_master_handle_t *handle,
338 lpspi_slave_handle_t *handle,
343 typedef struct _lpspi_transfer
425 #if defined(__cplusplus) 505 base->CR |= LPSPI_CR_MEN_MASK;
509 base->CR &= ~LPSPI_CR_MEN_MASK;
539 return (1U << ((base->PARAM & LPSPI_PARAM_TXFIFO_MASK) >> LPSPI_PARAM_TXFIFO_SHIFT));
549 return (1U << ((base->PARAM & LPSPI_PARAM_RXFIFO_MASK) >> LPSPI_PARAM_RXFIFO_SHIFT));
559 return ((base->FSR & LPSPI_FSR_TXCOUNT_MASK) >> LPSPI_FSR_TXCOUNT_SHIFT);
569 return ((base->FSR & LPSPI_FSR_RXCOUNT_MASK) >> LPSPI_FSR_RXCOUNT_SHIFT);
587 base->SR = statusFlags;
685 return (uint32_t) & (base->TDR);
700 return (uint32_t) & (base->RDR);
722 base->CFGR1 = (base->CFGR1 & (~LPSPI_CFGR1_MASTER_MASK)) | LPSPI_CFGR1_MASTER(mode);
733 return (
bool)((base->CFGR1) & LPSPI_CFGR1_MASTER_MASK);
743 static inline void LPSPI_FlushFifo(LPSPI_Type *base,
bool flushTxFifo,
bool flushRxFifo)
745 base->CR |= ((uint32_t)flushTxFifo << LPSPI_CR_RTF_SHIFT) | ((uint32_t)flushRxFifo << LPSPI_CR_RRF_SHIFT);
761 base->FCR = LPSPI_FCR_TXWATER(txWater) | LPSPI_FCR_RXWATER(rxWater);
780 base->CFGR1 = (base->CFGR1 & ~LPSPI_CFGR1_PCSPOL_MASK) | LPSPI_CFGR1_PCSPOL(~mask);
803 base->TCR = (base->TCR & ~LPSPI_TCR_FRAMESZ_MASK) | LPSPI_TCR_FRAMESZ(frameSize - 1);
830 uint32_t baudRate_Bps,
831 uint32_t srcClock_Hz,
832 uint32_t *tcrPrescaleValue);
887 uint32_t delayTimeInNanoSec,
889 uint32_t srcClock_Hz);
962 lpspi_master_handle_t *handle,
1029 lpspi_slave_handle_t *handle,
1088 #if defined(__cplusplus) Definition: fsl_lpspi.h:171
uint32_t LPSPI_MasterSetDelayTimes(LPSPI_Type *base, uint32_t delayTimeInNanoSec, lpspi_delay_type_t whichDelay, uint32_t srcClock_Hz)
Calculates the delay based on the desired delay input in nanoseconds (module must be disabled to chan...
Definition: fsl_lpspi.c:391
Definition: fsl_lpspi.h:88
status_t LPSPI_MasterTransferBlocking(LPSPI_Type *base, lpspi_transfer_t *transfer)
LPSPI master transfer data using polling.
Definition: fsl_lpspi.c:493
Definition: fsl_lpspi.h:85
volatile size_t dataSize
Definition: fsl_lpspi.h:347
Definition: fsl_lpspi.h:57
Definition: fsl_lpspi.h:172
Definition: fsl_lpspi.h:180
lpspi_delay_type_t
LPSPI delay type selection.
Definition: fsl_lpspi.h:200
lpspi_clock_polarity_t
LPSPI clock polarity configuration.
Definition: fsl_lpspi.h:134
Definition: fsl_lpspi.h:196
lpspi_transfer_width_t
LPSPI transfer width configuration.
Definition: fsl_lpspi.h:192
Definition: fsl_lpspi.h:129
Definition: fsl_lpspi.h:126
volatile uint32_t errorCount
Definition: fsl_lpspi.h:416
status_t LPSPI_SlaveTransferNonBlocking(LPSPI_Type *base, lpspi_slave_handle_t *handle, lpspi_transfer_t *transfer)
LPSPI slave transfer data using interrupt.
Definition: fsl_lpspi.c:1088
static void LPSPI_EnableDMA(LPSPI_Type *base, uint32_t mask)
Enable the LPSPI DMA request.
Definition: fsl_lpspi.h:652
uint8_t *volatile rxData
Definition: fsl_lpspi.h:372
lpspi_pcs_polarity_config_t pcsActiveHighOrLow
Definition: fsl_lpspi.h:278
Definition: fsl_lpspi.h:83
uint8_t * txData
Definition: fsl_lpspi.h:345
Definition: fsl_lpspi.h:195
void LPSPI_Reset(LPSPI_Type *base)
Restores the LPSPI peripheral to reset state, notice that this function will set all the registers to...
Definition: fsl_lpspi.c:264
uint32_t totalByteCount
Definition: fsl_lpspi.h:379
Definition: fsl_lpspi.h:159
void LPSPI_SlaveHandleInterrupt(LPSPI_Type *base, lpspi_slave_handle_t *handle)
LPSPI Slave IRQ handler function.
Definition: fsl_lpspi.c:1360
lpspi_clock_polarity_t cpol
Definition: fsl_lpspi.h:266
Definition: fsl_lpspi.h:152
Definition: fsl_lpspi.h:63
uint32_t lastSckToPcsDelayInNanoSec
Definition: fsl_lpspi.h:272
Definition: fsl_lpspi.h:103
Definition: fsl_lpspi.h:181
Definition: fsl_lpspi.h:80
Definition: fsl_lpspi.h:111
lpspi_shift_direction_t direction
Definition: fsl_lpspi.h:268
Definition: fsl_lpspi.h:128
Definition: fsl_lpspi.h:137
lpspi_host_request_select_t
LPSPI Host Request select configuration.
Definition: fsl_lpspi.h:157
static void LPSPI_SetFrameSize(LPSPI_Type *base, uint32_t frameSize)
Configures the frame size .
Definition: fsl_lpspi.h:801
_lpspi_transfer_state
LPSPI transfer state, which is used for LPSPI transactiaonl APIs' state machine.
Definition: fsl_lpspi.h:254
uint32_t baudRate
Definition: fsl_lpspi.h:264
LPSPI slave config structure.
Definition: fsl_lpspi.h:289
static uint32_t LPSPI_ReadDataNonBlocking(LPSPI_Type *base)
Reads data from the data buffer.
Definition: fsl_lpspi.h:917
Definition: fsl_lpspi.h:239
Definition: fsl_lpspi.h:110
void LPSPI_MasterAbortTransfer(LPSPI_Type *base, lpspi_master_handle_t *handle)
LPSPI master abort transfer which using interrupt.
Definition: fsl_lpspi.c:965
void LPSPI_MasterSetDelayScaler(LPSPI_Type *base, uint32_t scaler, lpspi_delay_type_t whichDelay)
Manually configures a specific LPSPI delay parameter (module must be disabled to change the delay val...
Definition: fsl_lpspi.c:369
uint32_t betweenTransferDelayInNanoSec
Definition: fsl_lpspi.h:274
LPSPI master config structure.
Definition: fsl_lpspi.h:262
Definition: fsl_lpspi.h:237
Definition: fsl_lpspi.h:256
Definition: fsl_lpspi.h:113
lpspi_master_transfer_callback_t callback
Definition: fsl_lpspi.h:385
Definition: fsl_lpspi.h:218
Definition: fsl_lpspi.h:136
volatile size_t rxRemainingByteCount
Definition: fsl_lpspi.h:374
Definition: fsl_lpspi.h:257
static void LPSPI_FlushFifo(LPSPI_Type *base, bool flushTxFifo, bool flushRxFifo)
Flushes the LPSPI FIFOs.
Definition: fsl_lpspi.h:743
static bool LPSPI_IsMaster(LPSPI_Type *base)
Returns whether the LPSPI module is in master mode.
Definition: fsl_lpspi.h:731
volatile uint8_t bytesEachRead
Definition: fsl_lpspi.h:369
void LPSPI_SlaveCreateHandle(LPSPI_Type *base, lpspi_slave_handle_t *handle, lpspi_slave_transfer_callback_t callback, void *userData)
Initialize the lpspi slave handle.
Definition: fsl_lpspi.c:1069
volatile uint32_t writeRegRemainingTimes
Definition: fsl_lpspi.h:376
volatile uint8_t bytesEachWrite
Definition: fsl_lpspi.h:368
uint32_t txBuffIfNull
Definition: fsl_lpspi.h:381
void LPSPI_SlaveInit(LPSPI_Type *base, const lpspi_slave_config_t *slaveConfig)
LPSPI slave configuration.
Definition: fsl_lpspi.c:227
lpspi_pcs_polarity_config_t
LPSPI Peripheral Chip Select (Pcs) Polarity configuration.
Definition: fsl_lpspi.h:117
Definition: fsl_lpspi.h:104
_lpspi_flags
LPSPI status flags in SPIx_SR register.
Definition: fsl_lpspi.h:61
Definition: fsl_lpspi.h:72
void LPSPI_MasterCreateHandle(LPSPI_Type *base, lpspi_master_handle_t *handle, lpspi_master_transfer_callback_t callback, void *userData)
Initialize the lpspi master handle.
Definition: fsl_lpspi.c:673
Definition: fsl_lpspi.h:143
Definition: fsl_lpspi.h:167
Definition: fsl_lpspi.h:96
_lpspi_pcs_polarity
LPSPI Peripheral Chip Select (Pcs) Polarity.
Definition: fsl_lpspi.h:124
static void LPSPI_ClearStatusFlags(LPSPI_Type *base, uint32_t statusFlags)
Clears the LPSPI status flag.
Definition: fsl_lpspi.h:585
Definition: fsl_lpspi.h:81
Definition: fsl_lpspi.h:97
Definition: fsl_lpspi.h:54
static uint32_t LPSPI_GetTxRegisterAddress(LPSPI_Type *base)
Gets the LPSPI Transmit Data Register address for DMA operation.
Definition: fsl_lpspi.h:683
volatile bool writeTcrInIsr
Definition: fsl_lpspi.h:360
uint32_t configFlags
Definition: fsl_lpspi.h:349
Definition: fsl_lpspi.h:64
Definition: fsl_lpspi.h:70
lpspi_shift_direction_t
LPSPI data shifter direction options.
Definition: fsl_lpspi.h:150
status_t LPSPI_MasterTransferNonBlocking(LPSPI_Type *base, lpspi_master_handle_t *handle, lpspi_transfer_t *transfer)
LPSPI master transfer data using interrupt.
Definition: fsl_lpspi.c:692
_lpspi_interrupt_enable
LPSPI interrupt source.
Definition: fsl_lpspi.h:78
Definition: fsl_lpspi.h:130
Definition: fsl_lpspi.h:194
Definition: fsl_lpspi.h:160
void(* lpspi_master_transfer_callback_t)(LPSPI_Type *base, lpspi_master_handle_t *handle, status_t status, void *userData)
Master completion callback function pointer type.
Definition: fsl_lpspi.h:324
lpspi_master_slave_mode_t
LPSPI master or slave mode configuration.
Definition: fsl_lpspi.h:101
Definition: fsl_lpspi.h:214
lpspi_which_pcs_t
LPSPI Peripheral Chip Select (Pcs) configuration (which Pcs to configure).
Definition: fsl_lpspi.h:108
static void LPSPI_DisableInterrupts(LPSPI_Type *base, uint32_t mask)
Disable the LPSPI interrupts.
Definition: fsl_lpspi.h:627
uint8_t * rxData
Definition: fsl_lpspi.h:346
Definition: fsl_lpspi.h:166
uint32_t bitsPerFrame
Definition: fsl_lpspi.h:265
Definition: fsl_lpspi.h:68
LPSPI master/slave transfer structure.
Definition: fsl_lpspi.h:343
uint32_t pcsToSckDelayInNanoSec
Definition: fsl_lpspi.h:270
Definition: fsl_lpspi.h:240
uint32_t LPSPI_MasterSetBaudRate(LPSPI_Type *base, uint32_t baudRate_Bps, uint32_t srcClock_Hz, uint32_t *tcrPrescaleValue)
Sets the LPSPI baud rate in bits per second.
Definition: fsl_lpspi.c:297
status_t LPSPI_MasterGetTransferCount(LPSPI_Type *base, lpspi_master_handle_t *handle, size_t *count)
Get the master transfer remaining bytes.
Definition: fsl_lpspi.c:933
lpspi_data_out_config_t
LPSPI data output configuration.
Definition: fsl_lpspi.h:185
uint8_t *volatile txData
Definition: fsl_lpspi.h:371
static void LPSPI_WriteDataNonBlocking(LPSPI_Type *base, uint32_t data)
Writes data into the transmit data buffer.
Definition: fsl_lpspi.h:903
lpspi_clock_phase_t
LPSPI clock phase configuration.
Definition: fsl_lpspi.h:141
Definition: fsl_lpspi.h:170
Definition: fsl_lpspi.h:203
Definition: fsl_lpspi.h:258
Definition: fsl_lpspi.h:67
static uint32_t LPSPI_GetTxFifoSize(LPSPI_Type *base)
Gets the LPSPI Tx FIFO size.
Definition: fsl_lpspi.h:537
Definition: fsl_lpspi.h:238
static uint32_t LPSPI_GetStatusFlags(LPSPI_Type *base)
Gets the LPSPI status flag state.
Definition: fsl_lpspi.h:527
Definition: fsl_lpspi.h:84
Definition: fsl_lpspi.h:145
Definition: fsl_lpspi.h:204
Definition: fsl_lpspi.h:153
Definition: fsl_lpspi.h:86
void LPSPI_MasterInit(LPSPI_Type *base, const lpspi_master_config_t *masterConfig, uint32_t srcClock_Hz)
LPSPI master Init.
Definition: fsl_lpspi.c:169
Definition: fsl_lpspi.h:55
Definition: fsl_lpspi.h:71
void LPSPI_MasterGetDefaultConfig(lpspi_master_config_t *masterConfig)
Set the lpspi_master_config_t structure to default values.
Definition: fsl_lpspi.c:208
Definition: fsl_lpspi.h:112
Definition: fsl_lpspi.h:82
void LPSPI_SlaveAbortTransfer(LPSPI_Type *base, lpspi_slave_handle_t *handle)
LPSPI slave abort transfer which using interrupt.
Definition: fsl_lpspi.c:1350
static uint32_t LPSPI_GetRxFifoCount(LPSPI_Type *base)
Gets the LPSPI Rx FIFO count.
Definition: fsl_lpspi.h:567
Definition: fsl_lpspi.h:220
lpspi_match_config_t
LPSPI Match configuration options.
Definition: fsl_lpspi.h:164
void LPSPI_MasterHandleInterrupt(LPSPI_Type *base, lpspi_master_handle_t *handle)
LPSPI Master IRQ handler function.
Definition: fsl_lpspi.c:973
Definition: fsl_lpspi.h:169
Definition: fsl_lpspi.h:216
LPSPI master transfer handle structure used for transactional API.
Definition: fsl_lpspi.h:355
lpspi_pin_config_t
LPSPI pin (SDO and SDI) configuration.
Definition: fsl_lpspi.h:176
lpspi_which_pcs_t whichPcs
Definition: fsl_lpspi.h:277
static uint32_t LPSPI_GetTxFifoCount(LPSPI_Type *base)
Gets the LPSPI Tx FIFO count.
Definition: fsl_lpspi.h:557
Definition: fsl_lpspi.h:215
volatile bool isByteSwap
Definition: fsl_lpspi.h:362
static void LPSPI_EnableInterrupts(LPSPI_Type *base, uint32_t mask)
Enable the LPSPI interrupts.
Definition: fsl_lpspi.h:612
static void LPSPI_DisableDMA(LPSPI_Type *base, uint32_t mask)
Disable the LPSPI DMA request.
Definition: fsl_lpspi.h:668
Definition: fsl_lpspi.h:65
volatile size_t txRemainingByteCount
Definition: fsl_lpspi.h:373
static void LPSPI_SetFifoWatermarks(LPSPI_Type *base, uint32_t txWater, uint32_t rxWater)
Sets the transmit and receive FIFO watermark values.
Definition: fsl_lpspi.h:759
lpspi_pin_config_t pinCfg
Definition: fsl_lpspi.h:280
Definition: fsl_lpspi.h:188
void LPSPI_SlaveGetDefaultConfig(lpspi_slave_config_t *slaveConfig)
Set the lpspi_slave_config_t structure to default values.
Definition: fsl_lpspi.c:250
volatile uint8_t state
Definition: fsl_lpspi.h:383
Definition: fsl_lpspi.h:168
Definition: fsl_lpspi.h:69
LPSPI_Type * base
Definition: fsl_lpspi.h:392
LPSPI slave transfer handle structure used for transactional API.
Definition: fsl_lpspi.h:390
volatile uint32_t readRegRemainingTimes
Definition: fsl_lpspi.h:377
static uint32_t LPSPI_GetRxFifoSize(LPSPI_Type *base)
Gets the LPSPI Rx FIFO size.
Definition: fsl_lpspi.h:547
status_t LPSPI_SlaveGetTransferCount(LPSPI_Type *base, lpspi_slave_handle_t *handle, size_t *count)
Get the slave transfer remaining bytes.
Definition: fsl_lpspi.c:1318
Definition: fsl_lpspi.h:56
Definition: fsl_lpspi.h:178
volatile uint8_t rxWatermark
Definition: fsl_lpspi.h:366
static void LPSPI_Enable(LPSPI_Type *base, bool enable)
Enables the LPSPI peripheral and sets the MCR MDIS to 0.
Definition: fsl_lpspi.h:501
lpspi_slave_transfer_callback_t callback
Definition: fsl_lpspi.h:418
void * userData
Definition: fsl_lpspi.h:419
Definition: fsl_lpspi.h:119
lpspi_data_out_config_t dataOutConfig
Definition: fsl_lpspi.h:283
void(* lpspi_slave_transfer_callback_t)(LPSPI_Type *base, lpspi_slave_handle_t *handle, status_t status, void *userData)
Slave completion callback function pointer type.
Definition: fsl_lpspi.h:337
static uint32_t LPSPI_GetRxRegisterAddress(LPSPI_Type *base)
Gets the LPSPI Receive Data Register address for DMA operation.
Definition: fsl_lpspi.h:698
volatile bool isPcsContinuous
Definition: fsl_lpspi.h:359
Definition: fsl_lpspi.h:179
_lpspi_dma_enable
LPSPI DMA source.
Definition: fsl_lpspi.h:94
Definition: fsl_lpspi.h:187
int32_t status_t
Type used for all status and error return values.
Definition: fsl_common.h:121
void LPSPI_Deinit(LPSPI_Type *base)
De-initialize the LPSPI peripheral, call this API to disbale the lpspi clock.
Definition: fsl_lpspi.c:276
Definition: fsl_lpspi.h:213
Definition: fsl_lpspi.h:127
volatile uint8_t fifoSize
Definition: fsl_lpspi.h:364
static void LPSPI_SetMasterSlaveMode(LPSPI_Type *base, lpspi_master_slave_mode_t mode)
Configures the LPSPI for master or slave.
Definition: fsl_lpspi.h:720
Definition: fsl_common.h:69
Definition: fsl_lpspi.h:66
Definition: fsl_lpspi.h:120
Definition: fsl_lpspi.h:202
Definition: fsl_lpspi.h:242
static void LPSPI_SetAllPcsPolarity(LPSPI_Type *base, uint32_t mask)
Configures all the LPSPI peripheral chip select polarity simultaneously.
Definition: fsl_lpspi.h:778
lpspi_clock_phase_t cpha
Definition: fsl_lpspi.h:267
Definition: fsl_lpspi.h:87