25#define FSL_LPSPI_DRIVER_VERSION (MAKE_VERSION(2, 0, 3))
28#ifndef LPSPI_DUMMY_DATA
30#define LPSPI_DUMMY_DATA (0x00U)
57 kLPSPI_AllStatusFlag = (LPSPI_SR_TDF_MASK | LPSPI_SR_RDF_MASK | LPSPI_SR_WCF_MASK | LPSPI_SR_FCF_MASK |
58 LPSPI_SR_TCF_MASK | LPSPI_SR_TEF_MASK | LPSPI_SR_REF_MASK | LPSPI_SR_DMF_MASK |
74 (LPSPI_IER_TDIE_MASK | LPSPI_IER_RDIE_MASK | LPSPI_IER_WCIE_MASK | LPSPI_IER_FCIE_MASK | LPSPI_IER_TCIE_MASK |
75 LPSPI_IER_TEIE_MASK | LPSPI_IER_REIE_MASK | LPSPI_IER_DMIE_MASK)
192#define LPSPI_MASTER_PCS_SHIFT (4U)
193#define LPSPI_MASTER_PCS_MASK (0xF0U)
220#define LPSPI_SLAVE_PCS_SHIFT (4U)
221#define LPSPI_SLAVE_PCS_MASK (0xF0U)
415#if defined(__cplusplus)
495 base->CR |= LPSPI_CR_MEN_MASK;
499 base->CR &= ~LPSPI_CR_MEN_MASK;
529 return (1U << ((base->PARAM & LPSPI_PARAM_TXFIFO_MASK) >> LPSPI_PARAM_TXFIFO_SHIFT));
539 return (1U << ((base->PARAM & LPSPI_PARAM_RXFIFO_MASK) >> LPSPI_PARAM_RXFIFO_SHIFT));
549 return ((base->FSR & LPSPI_FSR_TXCOUNT_MASK) >> LPSPI_FSR_TXCOUNT_SHIFT);
559 return ((base->FSR & LPSPI_FSR_RXCOUNT_MASK) >> LPSPI_FSR_RXCOUNT_SHIFT);
577 base->SR = statusFlags;
675 return (uint32_t) & (base->TDR);
690 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);
743static 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);
804 base->TCR = (base->TCR & ~LPSPI_TCR_FRAMESZ_MASK) | LPSPI_TCR_FRAMESZ(frameSize - 1);
831 uint32_t baudRate_Bps,
832 uint32_t srcClock_Hz,
833 uint32_t *tcrPrescaleValue);
888 uint32_t delayTimeInNanoSec,
890 uint32_t srcClock_Hz);
1104#if defined(__cplusplus)
int32_t status_t
Type used for all status and error return values.
struct _lpspi_slave_config lpspi_slave_config_t
LPSPI slave configuration structure.
static uint32_t LPSPI_GetRxFifoSize(LPSPI_Type *base)
Gets the LPSPI Rx FIFO size.
enum _lpspi_host_request_select lpspi_host_request_select_t
LPSPI Host Request select configuration.
static void LPSPI_FlushFifo(LPSPI_Type *base, bool flushTxFifo, bool flushRxFifo)
Flushes the LPSPI FIFOs.
status_t LPSPI_SlaveTransferGetCount(LPSPI_Type *base, lpspi_slave_handle_t *handle, size_t *count)
Gets the slave transfer remaining bytes.
static void LPSPI_SetFrameSize(LPSPI_Type *base, uint32_t frameSize)
Configures the frame size.
void LPSPI_MasterInit(LPSPI_Type *base, const lpspi_master_config_t *masterConfig, uint32_t srcClock_Hz)
Initializes the LPSPI master.
_lpspi_transfer_width
LPSPI transfer width configuration.
void LPSPI_SlaveInit(LPSPI_Type *base, const lpspi_slave_config_t *slaveConfig)
LPSPI slave configuration.
void LPSPI_SetDummyData(LPSPI_Type *base, uint8_t dummyData)
Set up the dummy data.
static void LPSPI_SetMasterSlaveMode(LPSPI_Type *base, lpspi_master_slave_mode_t mode)
Configures the LPSPI for either master or slave.
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...
enum _lpspi_clock_phase lpspi_clock_phase_t
LPSPI clock phase configuration.
static void LPSPI_DisableInterrupts(LPSPI_Type *base, uint32_t mask)
Disables the LPSPI interrupts.
status_t LPSPI_SlaveTransferNonBlocking(LPSPI_Type *base, lpspi_slave_handle_t *handle, lpspi_transfer_t *transfer)
LPSPI slave transfer data using an interrupt method.
enum _lpspi_pcs_polarity_config lpspi_pcs_polarity_config_t
LPSPI Peripheral Chip Select (PCS) Polarity configuration.
static uint32_t LPSPI_GetRxRegisterAddress(LPSPI_Type *base)
Gets the LPSPI Receive Data Register address for a DMA operation.
static void LPSPI_ClearStatusFlags(LPSPI_Type *base, uint32_t statusFlags)
Clears the LPSPI status flag.
static void LPSPI_EnableInterrupts(LPSPI_Type *base, uint32_t mask)
Enables the LPSPI interrupts.
_lpspi_match_config
LPSPI Match configuration options.
enum _lpspi_which_pcs_config lpspi_which_pcs_t
LPSPI Peripheral Chip Select (PCS) configuration (which PCS to configure).
void LPSPI_SlaveGetDefaultConfig(lpspi_slave_config_t *slaveConfig)
Sets the lpspi_slave_config_t structure to default values.
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.
enum _lpspi_master_slave_mode lpspi_master_slave_mode_t
LPSPI master or slave mode configuration.
_lpspi_master_slave_mode
LPSPI master or slave mode configuration.
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.
void LPSPI_Reset(LPSPI_Type *base)
Restores the LPSPI peripheral to reset state. Note that this function sets all registers to reset sta...
static uint32_t LPSPI_GetStatusFlags(LPSPI_Type *base)
Gets the LPSPI status flag state.
_lpspi_pcs_polarity
LPSPI Peripheral Chip Select (PCS) Polarity.
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.
status_t LPSPI_MasterTransferBlocking(LPSPI_Type *base, lpspi_transfer_t *transfer)
LPSPI master transfer data using a polling method.
static void LPSPI_Enable(LPSPI_Type *base, bool enable)
Enables the LPSPI peripheral and sets the MCR MDIS to 0.
_lpspi_transfer_state
LPSPI transfer state, which is used for LPSPI transactional API state machine.
void LPSPI_SlaveTransferCreateHandle(LPSPI_Type *base, lpspi_slave_handle_t *handle, lpspi_slave_transfer_callback_t callback, void *userData)
Initializes the LPSPI slave handle.
_lpspi_pin_config
LPSPI pin (SDO and SDI) configuration.
_lpspi_transfer_config_flag_for_master
Use this enumeration for LPSPI master transfer configFlags.
_lpspi_status
Status for the LPSPI driver.
static void LPSPI_SetFifoWatermarks(LPSPI_Type *base, uint32_t txWater, uint32_t rxWater)
Sets the transmit and receive FIFO watermark values.
enum _lpspi_data_out_config lpspi_data_out_config_t
LPSPI data output configuration.
volatile uint8_t g_lpspiDummyData[]
Global variable for dummy data value setting.
static void LPSPI_EnableDMA(LPSPI_Type *base, uint32_t mask)
Enables the LPSPI DMA request.
status_t LPSPI_MasterTransferNonBlocking(LPSPI_Type *base, lpspi_master_handle_t *handle, lpspi_transfer_t *transfer)
LPSPI master transfer data using an interrupt method.
enum _lpspi_pin_config lpspi_pin_config_t
LPSPI pin (SDO and SDI) configuration.
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...
_lpspi_pcs_polarity_config
LPSPI Peripheral Chip Select (PCS) Polarity configuration.
_lpspi_host_request_select
LPSPI Host Request select configuration.
static uint32_t LPSPI_ReadData(LPSPI_Type *base)
Reads data from the data buffer.
struct _lpspi_master_config lpspi_master_config_t
LPSPI master configuration structure.
static uint32_t LPSPI_GetTxFifoSize(LPSPI_Type *base)
Gets the LPSPI Tx FIFO size.
enum _lpspi_transfer_width lpspi_transfer_width_t
LPSPI transfer width configuration.
static uint32_t LPSPI_GetTxFifoCount(LPSPI_Type *base)
Gets the LPSPI Tx FIFO count.
bool LPSPI_CheckTransferArgument(lpspi_transfer_t *transfer, uint32_t bitsPerFrame, uint32_t bytesPerFrame)
Check the argument for transfer .
void LPSPI_SlaveTransferHandleIRQ(LPSPI_Type *base, lpspi_slave_handle_t *handle)
LPSPI Slave IRQ handler function.
void LPSPI_MasterTransferHandleIRQ(LPSPI_Type *base, lpspi_master_handle_t *handle)
LPSPI Master IRQ handler function.
enum _lpspi_match_config lpspi_match_config_t
LPSPI Match configuration options.
_lpspi_interrupt_enable
LPSPI interrupt source.
_lpspi_shift_direction
LPSPI data shifter direction options.
_lpspi_data_out_config
LPSPI data output configuration.
static void LPSPI_WriteData(LPSPI_Type *base, uint32_t data)
Writes data into the transmit data buffer.
_lpspi_which_pcs_config
LPSPI Peripheral Chip Select (PCS) configuration (which PCS to configure).
static void LPSPI_SetAllPcsPolarity(LPSPI_Type *base, uint32_t mask)
Configures all LPSPI peripheral chip select polarities simultaneously.
enum _lpspi_delay_type lpspi_delay_type_t
LPSPI delay type selection.
static uint32_t LPSPI_GetRxFifoCount(LPSPI_Type *base)
Gets the LPSPI Rx FIFO count.
_lpspi_delay_type
LPSPI delay type selection.
static uint32_t LPSPI_GetTxRegisterAddress(LPSPI_Type *base)
Gets the LPSPI Transmit Data Register address for a DMA operation.
enum _lpspi_clock_polarity lpspi_clock_polarity_t
LPSPI clock polarity configuration.
void LPSPI_SlaveTransferAbort(LPSPI_Type *base, lpspi_slave_handle_t *handle)
LPSPI slave aborts a transfer which uses an interrupt method.
_lpspi_flags
LPSPI status flags in SPIx_SR register.
_lpspi_clock_polarity
LPSPI clock polarity configuration.
static void LPSPI_DisableDMA(LPSPI_Type *base, uint32_t mask)
Disables the LPSPI DMA request.
void LPSPI_MasterTransferCreateHandle(LPSPI_Type *base, lpspi_master_handle_t *handle, lpspi_master_transfer_callback_t callback, void *userData)
Initializes the LPSPI master handle.
_lpspi_clock_phase
LPSPI clock phase configuration.
void LPSPI_Deinit(LPSPI_Type *base)
De-initializes the LPSPI peripheral. Call this API to disable the LPSPI clock.
enum _lpspi_shift_direction lpspi_shift_direction_t
LPSPI data shifter direction options.
static bool LPSPI_IsMaster(LPSPI_Type *base)
Returns whether the LPSPI module is in master mode.
_lpspi_transfer_config_flag_for_slave
Use this enumeration for LPSPI slave transfer configFlags.
void LPSPI_MasterTransferAbort(LPSPI_Type *base, lpspi_master_handle_t *handle)
LPSPI master abort transfer which uses an interrupt method.
void LPSPI_MasterGetDefaultConfig(lpspi_master_config_t *masterConfig)
Sets the lpspi_master_config_t structure to default values.
_lpspi_dma_enable
LPSPI DMA source.
struct _lpspi_transfer lpspi_transfer_t
LPSPI master/slave transfer structure.
status_t LPSPI_MasterTransferGetCount(LPSPI_Type *base, lpspi_master_handle_t *handle, size_t *count)
Gets the master transfer remaining bytes.
@ kLPSI_AnyWordAndM1EqualsM0andM1
@ kLPSI_1stWordEqualsM0and2ndWordEqualsM1
@ kLPSI_1stWordEqualsM0orM1
@ kLPSI_1stWordAndM1EqualsM0andM1
@ kLPSI_AnyWordEqualsM0andNxtWordEqualsM1
@ kLPSI_AnyWordEqualsM0orM1
@ kLPSPI_MasterPcsContinuous
@ kStatus_LPSPI_OutOfRange
@ kLPSPI_HostReqInternalTrigger
@ kLPSPI_ReceiveErrorInterruptEnable
@ kLPSPI_FrameCompleteInterruptEnable
@ kLPSPI_TransmitErrorInterruptEnable
@ kLPSPI_AllInterruptEnable
@ kLPSPI_RxInterruptEnable
@ kLPSPI_TxInterruptEnable
@ kLPSPI_DataMatchInterruptEnable
@ kLPSPI_WordCompleteInterruptEnable
@ kLPSPI_TransferCompleteInterruptEnable
@ kLPSPI_TransmitErrorFlag
@ kLPSPI_TxDataRequestFlag
@ kLPSPI_TransferCompleteFlag
@ kLPSPI_ReceiveErrorFlag
@ kLPSPI_FrameCompleteFlag
@ kLPSPI_WordCompleteFlag
@ kLPSPI_ClockPolarityActiveHigh
@ kLPSPI_ClockPolarityActiveLow
@ kLPSPI_ClockPhaseFirstEdge
@ kLPSPI_ClockPhaseSecondEdge
static void enable(const char *param)
LPSPI master configuration structure.
lpspi_pcs_polarity_config_t pcsActiveHighOrLow
lpspi_shift_direction_t direction
lpspi_data_out_config_t dataOutConfig
uint32_t betweenTransferDelayInNanoSec
uint32_t lastSckToPcsDelayInNanoSec
lpspi_which_pcs_t whichPcs
uint32_t pcsToSckDelayInNanoSec
lpspi_clock_polarity_t cpol
lpspi_pin_config_t pinCfg
LPSPI master transfer handle structure used for transactional API.
volatile uint8_t fifoSize
volatile uint32_t writeRegRemainingTimes
volatile uint8_t bytesEachRead
volatile uint8_t rxWatermark
lpspi_master_transfer_callback_t callback
volatile uint32_t readRegRemainingTimes
volatile size_t txRemainingByteCount
volatile bool writeTcrInIsr
volatile uint8_t bytesEachWrite
volatile size_t rxRemainingByteCount
volatile bool isPcsContinuous
LPSPI slave configuration structure.
lpspi_shift_direction_t direction
lpspi_pcs_polarity_config_t pcsActiveHighOrLow
lpspi_data_out_config_t dataOutConfig
lpspi_clock_polarity_t cpol
lpspi_which_pcs_t whichPcs
lpspi_pin_config_t pinCfg
LPSPI slave transfer handle structure used for transactional API.
volatile size_t txRemainingByteCount
volatile uint8_t rxWatermark
volatile size_t rxRemainingByteCount
volatile uint8_t fifoSize
volatile uint8_t bytesEachRead
volatile uint32_t errorCount
volatile uint32_t readRegRemainingTimes
volatile uint8_t bytesEachWrite
volatile uint32_t writeRegRemainingTimes
lpspi_slave_transfer_callback_t callback
LPSPI master/slave transfer structure.