17#ifndef FSL_COMPONENT_ID
18#define FSL_COMPONENT_ID "platform.drivers.lpspi"
76static void LPSPI_SeparateReadData(uint8_t *rxData, uint32_t readData, uint32_t bytesEachRead,
bool isByteSwap);
124#if !(defined(FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL) && FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL)
128#if defined(LPSPI_PERIPH_CLOCKS)
189 assert(masterConfig);
191 uint32_t tcrPrescaleValue = 0;
193#if !(defined(FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL) && FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL)
199#if defined(LPSPI_PERIPH_CLOCKS)
212 base->CFGR1 = (base->CFGR1 & ~(LPSPI_CFGR1_OUTCFG_MASK | LPSPI_CFGR1_PINCFG_MASK | LPSPI_CFGR1_NOSTALL_MASK)) |
213 LPSPI_CFGR1_OUTCFG(masterConfig->
dataOutConfig) | LPSPI_CFGR1_PINCFG(masterConfig->
pinCfg) |
214 LPSPI_CFGR1_NOSTALL(0);
223 base->TCR = LPSPI_TCR_CPOL(masterConfig->
cpol) | LPSPI_TCR_CPHA(masterConfig->
cpha) |
225 LPSPI_TCR_PRESCALE(tcrPrescaleValue) | LPSPI_TCR_PCS(masterConfig->
whichPcs);
251 assert(masterConfig);
254 memset(masterConfig, 0,
sizeof(*masterConfig));
283#if !(defined(FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL) && FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL)
289#if defined(LPSPI_PERIPH_CLOCKS)
299 base->CFGR1 = (base->CFGR1 & ~(LPSPI_CFGR1_OUTCFG_MASK | LPSPI_CFGR1_PINCFG_MASK)) |
304 base->TCR = LPSPI_TCR_CPOL(slaveConfig->
cpol) | LPSPI_TCR_CPHA(slaveConfig->
cpha) |
331 memset(slaveConfig, 0,
sizeof(*slaveConfig));
354 base->CR |= LPSPI_CR_RST_MASK;
357 base->CR |= LPSPI_CR_RRF_MASK | LPSPI_CR_RTF_MASK;
372#if !(defined(FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL) && FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL)
378#if defined(LPSPI_PERIPH_CLOCKS)
389 uint32_t cfgr1Value = 0;
391 cfgr1Value = base->CFGR1 & ~(1U << (LPSPI_CFGR1_PCSPOL_SHIFT + pcs));
394 base->CFGR1 = cfgr1Value | ((uint32_t)activeLowOrHigh << (LPSPI_CFGR1_PCSPOL_SHIFT + pcs));
421 uint32_t baudRate_Bps,
422 uint32_t srcClock_Hz,
423 uint32_t *tcrPrescaleValue)
425 assert(tcrPrescaleValue);
435 uint32_t prescaler, bestPrescaler;
436 uint32_t scaler, bestScaler;
437 uint32_t realBaudrate, bestBaudrate;
438 uint32_t diff, min_diff;
439 uint32_t desiredBaudrate = baudRate_Bps;
444 min_diff = 0xFFFFFFFFU;
456 for (prescaler = 0; (prescaler < 8) && min_diff; prescaler++)
458 for (scaler = 0; (scaler < 256) && min_diff; scaler++)
465 if (desiredBaudrate >= realBaudrate)
467 diff = desiredBaudrate - realBaudrate;
472 bestPrescaler = prescaler;
474 bestBaudrate = realBaudrate;
485 base->CCR = (base->CCR & ~LPSPI_CCR_SCKDIV_MASK) | LPSPI_CCR_SCKDIV(bestScaler);
488 *tcrPrescaleValue = bestPrescaler;
522 base->CCR = (base->CCR & (~LPSPI_CCR_PCSSCK_MASK)) | LPSPI_CCR_PCSSCK(scaler);
526 base->CCR = (base->CCR & (~LPSPI_CCR_SCKPCS_MASK)) | LPSPI_CCR_SCKPCS(scaler);
530 base->CCR = (base->CCR & (~LPSPI_CCR_DBT_MASK)) | LPSPI_CCR_DBT(scaler);
568 uint32_t delayTimeInNanoSec,
570 uint32_t srcClock_Hz)
572 uint64_t realDelay, bestDelay;
573 uint32_t scaler, bestScaler;
574 uint32_t diff, min_diff;
575 uint64_t initialDelayNanoSec;
576 uint32_t clockDividedPrescaler;
579 uint32_t additionalScaler = 0;
583 clockDividedPrescaler =
584 srcClock_Hz /
s_baudratePrescaler[(base->TCR & LPSPI_TCR_PRESCALE_MASK) >> LPSPI_TCR_PRESCALE_SHIFT];
587 min_diff = 0xFFFFFFFFU;
601 initialDelayNanoSec = 1000000000U;
602 initialDelayNanoSec *= 2U;
603 initialDelayNanoSec /= clockDividedPrescaler;
606 bestDelay = 1000000000U;
608 bestDelay /= clockDividedPrescaler;
610 additionalScaler = 1U;
618 initialDelayNanoSec = 1000000000U;
619 initialDelayNanoSec /= clockDividedPrescaler;
622 bestDelay = 1000000000U;
624 bestDelay /= clockDividedPrescaler;
626 additionalScaler = 0;
633 if (initialDelayNanoSec >= delayTimeInNanoSec)
636 return initialDelayNanoSec;
640 for (scaler = 0; (scaler < 256U) && min_diff; scaler++)
646 realDelay = 1000000000U;
647 realDelay *= (scaler + 1 + additionalScaler);
648 realDelay /= clockDividedPrescaler;
653 if (realDelay >= delayTimeInNanoSec)
655 diff = realDelay - delayTimeInNanoSec;
661 bestDelay = realDelay;
694 memset(handle, 0,
sizeof(*handle));
734 if (bytesPerFrame <= 4)
736 if ((transfer->
dataSize % bytesPerFrame) != 0)
743 if ((bytesPerFrame % 4U) != 0)
745 if (transfer->
dataSize != bytesPerFrame)
752 if ((transfer->
dataSize % bytesPerFrame) != 0)
783 uint32_t bitsPerFrame = ((base->TCR & LPSPI_TCR_FRAMESZ_MASK) >> LPSPI_TCR_FRAMESZ_SHIFT) + 1;
784 uint32_t bytesPerFrame = (bitsPerFrame + 7) / 8;
799 uint8_t *txData = transfer->
txData;
800 uint8_t *rxData = transfer->
rxData;
801 uint32_t txRemainingByteCount = transfer->
dataSize;
802 uint32_t rxRemainingByteCount = transfer->
dataSize;
804 uint8_t bytesEachWrite;
805 uint8_t bytesEachRead;
807 uint32_t readData = 0;
808 uint32_t wordToSend =
809 ((uint32_t)dummyData) | ((uint32_t)dummyData << 8) | ((uint32_t)dummyData << 16) | ((uint32_t)dummyData << 24);
814 uint32_t whichPcs = (transfer->
configFlags & LPSPI_MASTER_PCS_MASK) >> LPSPI_MASTER_PCS_SHIFT;
817 bool isRxMask =
false;
829 base->CFGR1 &= (~LPSPI_CFGR1_NOSTALL_MASK);
832 temp &= LPSPI_CFGR1_PINCFG_MASK;
837 base->CFGR1 |= LPSPI_CFGR1_OUTCFG_MASK;
840 if ((txData) && (rxData))
848 (base->TCR & ~(LPSPI_TCR_CONT_MASK | LPSPI_TCR_CONTC_MASK | LPSPI_TCR_RXMSK_MASK | LPSPI_TCR_PCS_MASK)) |
849 LPSPI_TCR_CONT(isPcsContinuous) | LPSPI_TCR_CONTC(0) | LPSPI_TCR_RXMSK(isRxMask) | LPSPI_TCR_PCS(whichPcs);
851 if (bytesPerFrame <= 4)
853 bytesEachWrite = bytesPerFrame;
854 bytesEachRead = bytesPerFrame;
863 while (txRemainingByteCount > 0)
865 if (txRemainingByteCount < bytesEachWrite)
867 bytesEachWrite = txRemainingByteCount;
878 txData += bytesEachWrite;
882 txRemainingByteCount -= bytesEachWrite;
890 if (rxRemainingByteCount < bytesEachRead)
892 bytesEachRead = rxRemainingByteCount;
896 rxData += bytesEachRead;
898 rxRemainingByteCount -= bytesEachRead;
909 base->TCR = (base->TCR & ~(LPSPI_TCR_CONTC_MASK));
914 while (rxRemainingByteCount > 0)
920 if (rxRemainingByteCount < bytesEachRead)
922 bytesEachRead = rxRemainingByteCount;
926 rxData += bytesEachRead;
928 rxRemainingByteCount -= bytesEachRead;
966 uint32_t bitsPerFrame = ((base->TCR & LPSPI_TCR_FRAMESZ_MASK) >> LPSPI_TCR_FRAMESZ_SHIFT) + 1;
967 uint32_t bytesPerFrame = (bitsPerFrame + 7) / 8;
984 bool isRxMask =
false;
988 uint32_t whichPcs = (transfer->
configFlags & LPSPI_MASTER_PCS_MASK) >> LPSPI_MASTER_PCS_SHIFT;
1002 ((uint32_t)dummyData) | ((uint32_t)dummyData << 8) | ((uint32_t)dummyData << 16) | ((uint32_t)dummyData << 24);
1026 base->CFGR1 &= (~LPSPI_CFGR1_NOSTALL_MASK);
1029 temp &= LPSPI_CFGR1_PINCFG_MASK;
1034 base->CFGR1 |= LPSPI_CFGR1_OUTCFG_MASK;
1052 if (handle->
rxData == NULL)
1059 (base->TCR & ~(LPSPI_TCR_CONT_MASK | LPSPI_TCR_CONTC_MASK | LPSPI_TCR_RXMSK_MASK | LPSPI_TCR_PCS_MASK)) |
1060 LPSPI_TCR_CONT(handle->
isPcsContinuous) | LPSPI_TCR_CONTC(0) | LPSPI_TCR_RXMSK(isRxMask) |
1061 LPSPI_TCR_PCS(whichPcs);
1064 if (bytesPerFrame <= 4)
1097 base->FCR = (base->FCR & (~LPSPI_FCR_RXWATER_MASK)) | LPSPI_FCR_RXWATER(handle->
readRegRemainingTimes - 1);
1114 uint32_t wordToSend = 0;
1122 (handle->
rxData == NULL)))
1156 base->TCR = (base->TCR & ~(LPSPI_TCR_CONTC_MASK));
1211 size_t remainingByte;
1263 if (handle->
rxData != NULL)
1309 (base->FCR & (~LPSPI_FCR_RXWATER_MASK)) |
1324 base->TCR = (base->TCR & ~(LPSPI_TCR_CONTC_MASK));
1333 if (handle->
rxData == NULL)
1374 memset(handle, 0,
sizeof(*handle));
1408 uint32_t bitsPerFrame = ((base->TCR & LPSPI_TCR_FRAMESZ_MASK) >> LPSPI_TCR_FRAMESZ_SHIFT) + 1;
1409 uint32_t bytesPerFrame = (bitsPerFrame + 7) / 8;
1424 bool isRxMask =
false;
1425 bool isTxMask =
false;
1427 uint32_t whichPcs = (transfer->
configFlags & LPSPI_SLAVE_PCS_MASK) >> LPSPI_SLAVE_PCS_SHIFT;
1444 uint8_t txWatermark;
1459 temp &= LPSPI_CFGR1_PINCFG_MASK;
1465 base->CFGR1 |= LPSPI_CFGR1_OUTCFG_MASK;
1481 if (handle->
rxData == NULL)
1490 if (handle->
txData == NULL)
1496 base->TCR = (base->TCR &
1497 ~(LPSPI_TCR_CONT_MASK | LPSPI_TCR_CONTC_MASK | LPSPI_TCR_RXMSK_MASK | LPSPI_TCR_TXMSK_MASK |
1498 LPSPI_TCR_PCS_MASK)) |
1499 LPSPI_TCR_CONT(0) | LPSPI_TCR_CONTC(0) | LPSPI_TCR_RXMSK(isRxMask) | LPSPI_TCR_TXMSK(isTxMask) |
1500 LPSPI_TCR_PCS(whichPcs);
1503 if (bytesPerFrame <= 4)
1540 base->FCR = (base->FCR & (~LPSPI_FCR_RXWATER_MASK)) | LPSPI_FCR_RXWATER(handle->
readRegRemainingTimes - 1);
1568 uint32_t wordToSend = 0;
1645 size_t remainingByte;
1696 uint32_t wordToSend;
1698 if (handle->
rxData != NULL)
1751 (base->FCR & (~LPSPI_FCR_RXWATER_MASK)) |
1767 if (handle->
rxData == NULL)
1816 uint32_t wordToSend = 0;
1818 switch (bytesEachWrite)
1821 wordToSend = *txData;
1828 wordToSend = *txData;
1830 wordToSend |= (unsigned)(*txData) << 8U;
1835 wordToSend = (unsigned)(*txData) << 8U;
1837 wordToSend |= *txData;
1846 wordToSend = *txData;
1848 wordToSend |= (unsigned)(*txData) << 8U;
1850 wordToSend |= (unsigned)(*txData) << 16U;
1855 wordToSend = (unsigned)(*txData) << 16U;
1857 wordToSend |= (unsigned)(*txData) << 8U;
1859 wordToSend |= *txData;
1867 wordToSend = *txData;
1869 wordToSend |= (unsigned)(*txData) << 8U;
1871 wordToSend |= (unsigned)(*txData) << 16U;
1873 wordToSend |= (unsigned)(*txData) << 24U;
1878 wordToSend = (unsigned)(*txData) << 24U;
1880 wordToSend |= (unsigned)(*txData) << 16U;
1882 wordToSend |= (unsigned)(*txData) << 8U;
1884 wordToSend |= *txData;
1900 switch (bytesEachRead)
1912 *rxData = readData >> 8;
1917 *rxData = readData >> 8;
1929 *rxData = readData >> 8;
1931 *rxData = readData >> 16;
1936 *rxData = readData >> 16;
1938 *rxData = readData >> 8;
1950 *rxData = readData >> 8;
1952 *rxData = readData >> 16;
1954 *rxData = readData >> 24;
1959 *rxData = readData >> 24;
1961 *rxData = readData >> 16;
1963 *rxData = readData >> 8;
1988#if defined __CORTEX_M && (__CORTEX_M == 4U)
2041#if defined(DMA__LPSPI0)
2049#if defined(DMA__LPSPI1)
2056#if defined(DMA__LPSPI2)
2064#if defined(DMA__LPSPI3)
2072#if defined(ADMA__LPSPI0)
2080#if defined(ADMA__LPSPI1)
2087#if defined(ADMA__LPSPI2)
2095#if defined(ADMA__LPSPI3)
static BenchController instance
static void * s_lpspiHandle[ARRAY_SIZE(s_lpspiBases)]
Pointers to lpspi handles for each instance.
uint32_t LPSPI_GetInstance(LPSPI_Type *base)
Get instance number for LPSPI module.
void(* lpspi_slave_isr_t)(LPSPI_Type *base, lpspi_slave_handle_t *handle)
Typedef for slave interrupt handler.
static const clock_ip_name_t s_LpspiPeriphClocks[]
static void LPSPI_SlaveTransferFillUpTxFifo(LPSPI_Type *base, lpspi_slave_handle_t *handle)
Slave fill up the TX FIFO with data. This is not a public API.
void DMA_SPI2_INT_DriverIRQHandler(void)
void ADMA_SPI1_INT_DriverIRQHandler(void)
static LPSPI_Type *const s_lpspiBases[]
Pointers to lpspi bases for each instance.
static void LPSPI_MasterTransferComplete(LPSPI_Type *base, lpspi_master_handle_t *handle)
Master finish up a transfer. It would call back if there is callback function and set the state to id...
void ADMA_SPI3_INT_DriverIRQHandler(void)
void ADMA_SPI2_INT_DriverIRQHandler(void)
void LPSPI4_DriverIRQHandler(void)
void LPSPI2_DriverIRQHandler(void)
void LPSPI5_DriverIRQHandler(void)
static lpspi_slave_isr_t s_lpspiSlaveIsr
Pointer to slave IRQ handler for each instance.
_lpspi_default_watermarks
Default watermark values.
@ kLpspiDefaultTxWatermark
@ kLpspiDefaultRxWatermark
void LPSPI1_DriverIRQHandler(void)
void LPSPI3_DriverIRQHandler(void)
static const IRQn_Type s_lpspiIRQ[]
Pointers to lpspi IRQ number for each instance.
static void LPSPI_SeparateReadData(uint8_t *rxData, uint32_t readData, uint32_t bytesEachRead, bool isByteSwap)
Separate the read data for 1 byte to 4 bytes. This is not a public API.
void DMA_SPI3_INT_DriverIRQHandler(void)
void DMA_SPI1_INT_DriverIRQHandler(void)
static lpspi_master_isr_t s_lpspiMasterIsr
Pointer to master IRQ handler for each instance.
static void LPSPI_CommonIRQHandler(LPSPI_Type *base, void *param)
LPSPI common interrupt handler.
void(* lpspi_master_isr_t)(LPSPI_Type *base, lpspi_master_handle_t *handle)
Typedef for master interrupt handler.
void DMA_SPI0_INT_DriverIRQHandler(void)
static void LPSPI_SlaveTransferComplete(LPSPI_Type *base, lpspi_slave_handle_t *handle)
Slave finish up a transfer. It would call back if there is callback function and set the state to idl...
void ADMA_SPI0_INT_DriverIRQHandler(void)
static uint32_t LPSPI_CombineWriteData(uint8_t *txData, uint32_t bytesEachWrite, bool isByteSwap)
Combine the write data for 1 byte to 4 bytes. This is not a public API.
static const clock_ip_name_t s_lpspiClocks[]
Pointers to lpspi clocks for each instance.
static void LPSPI_SetOnePcsPolarity(LPSPI_Type *base, lpspi_which_pcs_t pcs, lpspi_pcs_polarity_config_t activeLowOrHigh)
Configures the LPSPI peripheral chip select polarity.
static const uint8_t s_baudratePrescaler[]
void LPSPI0_DriverIRQHandler(void)
static void LPSPI_MasterTransferFillUpTxFifo(LPSPI_Type *base, lpspi_master_handle_t *handle)
Master fill up the TX FIFO with data. This is not a public API.
enum _clock_ip_name clock_ip_name_t
Peripheral clock name difinition used for clock gate, clock source and clock divider setting....
static void CLOCK_DisableClock(clock_ip_name_t name)
Disable the clock for specific IP.
static void CLOCK_EnableClock(clock_ip_name_t name)
Enable the clock for specific IP.
int32_t status_t
Type used for all status and error return values.
@ kStatus_NoTransferInProgress
@ kStatus_InvalidArgument
static uint32_t LPSPI_GetRxFifoSize(LPSPI_Type *base)
Gets the LPSPI Rx FIFO size.
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.
void LPSPI_MasterInit(LPSPI_Type *base, const lpspi_master_config_t *masterConfig, uint32_t srcClock_Hz)
Initializes the LPSPI master.
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...
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 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.
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.
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.
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.
void LPSPI_SlaveTransferCreateHandle(LPSPI_Type *base, lpspi_slave_handle_t *handle, lpspi_slave_transfer_callback_t callback, void *userData)
Initializes the LPSPI slave handle.
static void LPSPI_SetFifoWatermarks(LPSPI_Type *base, uint32_t txWater, uint32_t rxWater)
Sets the transmit and receive FIFO watermark values.
volatile uint8_t g_lpspiDummyData[ARRAY_SIZE(s_lpspiBases)]
Global variable for dummy data value setting.
status_t LPSPI_MasterTransferNonBlocking(LPSPI_Type *base, lpspi_master_handle_t *handle, lpspi_transfer_t *transfer)
LPSPI master transfer data using an interrupt method.
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...
static uint32_t LPSPI_ReadData(LPSPI_Type *base)
Reads data from the data buffer.
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.
static void LPSPI_WriteData(LPSPI_Type *base, uint32_t data)
Writes data into the transmit data buffer.
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.
void LPSPI_SlaveTransferAbort(LPSPI_Type *base, lpspi_slave_handle_t *handle)
LPSPI slave aborts a transfer which uses an interrupt method.
void LPSPI_MasterTransferCreateHandle(LPSPI_Type *base, lpspi_master_handle_t *handle, lpspi_master_transfer_callback_t callback, void *userData)
Initializes the LPSPI master handle.
void LPSPI_Deinit(LPSPI_Type *base)
De-initializes the LPSPI peripheral. Call this API to disable the LPSPI clock.
static bool LPSPI_IsMaster(LPSPI_Type *base)
Returns whether the LPSPI module is in master mode.
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.
status_t LPSPI_MasterTransferGetCount(LPSPI_Type *base, lpspi_master_handle_t *handle, size_t *count)
Gets the master transfer remaining bytes.
@ kLPSPI_MasterPcsContinuous
@ kLPSPI_ReceiveErrorInterruptEnable
@ kLPSPI_FrameCompleteInterruptEnable
@ kLPSPI_TransmitErrorInterruptEnable
@ kLPSPI_AllInterruptEnable
@ kLPSPI_RxInterruptEnable
@ kLPSPI_TxInterruptEnable
@ kLPSPI_TransferCompleteInterruptEnable
@ kLPSPI_TransmitErrorFlag
@ kLPSPI_TransferCompleteFlag
@ kLPSPI_ReceiveErrorFlag
@ kLPSPI_FrameCompleteFlag
@ kLPSPI_ClockPolarityActiveHigh
@ kLPSPI_ClockPhaseFirstEdge
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.
static tstrWifiInitParam param