33 #include "fsl_common.h" 44 #define FSL_SPI_DRIVER_VERSION (MAKE_VERSION(2, 0, 0)) 47 #define SPI_DUMMYDATA (0xFFU) 58 typedef enum _spi_clock_polarity
65 typedef enum _spi_clock_phase
74 typedef enum _spi_shift_direction
81 typedef enum _spi_ss_output_mode
89 typedef enum _spi_pin_mode
99 typedef enum _spi_data_bitcount_mode
111 #if defined(FSL_FEATURE_SPI_HAS_FIFO) && FSL_FEATURE_SPI_HAS_FIFO 124 #if defined(FSL_FEATURE_SPI_HAS_FIFO) && FSL_FEATURE_SPI_HAS_FIFO 136 #if defined(FSL_FEATURE_SPI_HAS_FIFO) && FSL_FEATURE_SPI_HAS_FIFO 138 typedef enum _spi_w1c_interrupt
147 typedef enum _spi_txfifo_watermark
154 typedef enum _spi_rxfifo_watermark
161 #if defined(FSL_FEATURE_SPI_HAS_DMA_SUPPORT) && FSL_FEATURE_SPI_HAS_DMA_SUPPORT 172 typedef struct _spi_master_config
179 #if defined(FSL_FEATURE_SPI_16BIT_TRANSFERS) && FSL_FEATURE_SPI_16BIT_TRANSFERS 182 #if defined(FSL_FEATURE_SPI_HAS_FIFO) && FSL_FEATURE_SPI_HAS_FIFO 193 typedef struct _spi_slave_config
200 #if defined(FSL_FEATURE_SPI_16BIT_TRANSFERS) && FSL_FEATURE_SPI_16BIT_TRANSFERS 203 #if defined(FSL_FEATURE_SPI_HAS_FIFO) && FSL_FEATURE_SPI_HAS_FIFO 211 typedef struct _spi_transfer
245 #if defined(__cplusplus) 350 base->C1 |= SPI_C1_SPE_MASK;
354 base->C1 &= ~SPI_C1_SPE_MASK;
373 #if defined(FSL_FEATURE_SPI_HAS_FIFO) && FSL_FEATURE_SPI_HAS_FIFO 431 #if defined(FSL_FEATURE_SPI_HAS_DMA_SUPPORT) && FSL_FEATURE_SPI_HAS_DMA_SUPPORT 439 static inline void SPI_EnableDMA(SPI_Type *base, uint32_t mask,
bool enable)
462 #if defined(FSL_FEATURE_SPI_16BIT_TRANSFERS) && FSL_FEATURE_SPI_16BIT_TRANSFERS 463 return (uint32_t)(&(base->DL));
465 return (uint32_t)(&(base->D));
497 #if defined(FSL_FEATURE_SPI_16BIT_TRANSFERS) && FSL_FEATURE_SPI_16BIT_TRANSFERS 498 base->ML = matchData & 0xFFU;
499 base->MH = (matchData >> 8U) & 0xFFU;
505 #if defined(FSL_FEATURE_SPI_HAS_FIFO) && FSL_FEATURE_SPI_HAS_FIFO 561 spi_master_handle_t *handle,
696 #if defined(__cplusplus) bool enableSlave
Definition: fsl_spi.h:195
_spi_interrupt_enable
SPI interrupt sources.
Definition: fsl_spi.h:106
bool enableMaster
Definition: fsl_spi.h:174
void SPI_WriteBlocking(SPI_Type *base, uint8_t *buffer, size_t size)
Sends a buffer of data bytes in blocking way.
Definition: fsl_spi.c:536
static status_t SPI_SlaveTransferGetCount(SPI_Type *base, spi_slave_handle_t *handle, size_t *count)
Get the bytes of SPI Interrupt transferred.
Definition: fsl_spi.h:667
uint16_t SPI_ReadData(SPI_Type *base)
Get a data from SPI data register.
Definition: fsl_spi.c:584
spi_txfifo_watermark_t txWatermark
Definition: fsl_spi.h:184
_spi_flags
SPI status flags.
Definition: fsl_spi.h:118
Definition: fsl_spi.h:129
void SPI_WriteData(SPI_Type *base, uint16_t data)
Write a data into SPI data register.
Definition: fsl_spi.c:574
spi_txfifo_watermark_t
SPI TX FIFO watermark settings.
Definition: fsl_spi.h:147
spi_clock_phase_t
SPI clock phase configuration.
Definition: fsl_spi.h:65
void SPI_MasterTransferCreateHandle(SPI_Type *base, spi_master_handle_t *handle, spi_master_callback_t callback, void *userData)
Initialize the SPI master handle.
Definition: fsl_spi.c:658
Definition: fsl_spi.h:150
spi_master_handle_t spi_slave_handle_t
Slave handle is the same with master handle.
Definition: fsl_spi.h:222
_spi_dma_enable_t
SPI dma source.
Definition: fsl_spi.h:163
Definition: fsl_spi.h:113
void SPI_Deinit(SPI_Type *base)
De-initialize SPI.
Definition: fsl_spi.c:381
Definition: fsl_spi.h:125
status_t SPI_MasterTransferNonBlocking(SPI_Type *base, spi_master_handle_t *handle, spi_transfer_t *xfer)
Performs a non-blocking SPI interrupt transfer.
Definition: fsl_spi.c:707
Definition: fsl_spi.h:149
Definition: fsl_spi.h:143
Definition: fsl_spi.h:121
SPI transfer structure.
Definition: fsl_spi.h:211
uint8_t *volatile rxData
Definition: fsl_spi.h:234
Definition: fsl_spi.h:102
Definition: fsl_spi.h:167
uint8_t bytePerFrame
Definition: fsl_spi.h:239
Definition: fsl_spi.h:101
void SPI_DisableInterrupts(SPI_Type *base, uint32_t mask)
Disable interrupt for SPI.
Definition: fsl_spi.c:445
spi_clock_phase_t phase
Definition: fsl_spi.h:177
uint8_t watermark
Definition: fsl_spi.h:240
uint8_t * txData
Definition: fsl_spi.h:213
void SPI_MasterInit(SPI_Type *base, const spi_master_config_t *config, uint32_t srcClock_Hz)
Initialize SPI with master configuration.
Definition: fsl_spi.c:287
spi_w1c_interrupt_t
SPI FIFO write-1-to-clear interrupt flags.
Definition: fsl_spi.h:138
static void SPI_SlaveTransferHandleIRQ(SPI_Type *base, spi_slave_handle_t *handle)
Interrupt handler for SPI slave.
Definition: fsl_spi.h:689
Definition: fsl_spi.h:126
Definition: fsl_spi.h:131
spi_master_callback_t callback
Definition: fsl_spi.h:241
Definition: fsl_spi.h:127
Definition: fsl_common.h:79
bool enableFifoInterruptClear
Definition: fsl_spi.h:183
SPI slave user configure structure.
Definition: fsl_spi.h:193
Definition: fsl_spi.h:110
uint32_t flags
Definition: fsl_spi.h:216
spi_clock_polarity_t
SPI clock polarity configuration.
Definition: fsl_spi.h:58
Definition: fsl_spi.h:157
static void SPI_ClearInterrupt(SPI_Type *base, uint32_t mask)
Clear the interrupt if enable INCTLR.
Definition: fsl_spi.h:385
void SPI_SlaveGetDefaultConfig(spi_slave_config_t *config)
Set the SPI slave configuration structure to default values.
Definition: fsl_spi.c:328
Definition: fsl_spi.h:142
SPI transfer handle structure.
Definition: fsl_spi.h:231
volatile size_t txRemainingBytes
Definition: fsl_spi.h:235
spi_clock_polarity_t polarity
Definition: fsl_spi.h:176
volatile uint32_t state
Definition: fsl_spi.h:237
spi_ss_output_mode_t outputMode
Definition: fsl_spi.h:187
Definition: fsl_spi.h:166
bool enableStopInWaitMode
Definition: fsl_spi.h:175
static status_t SPI_SlaveTransferNonBlocking(SPI_Type *base, spi_slave_handle_t *handle, spi_transfer_t *xfer)
Performs a non-blocking SPI slave interrupt transfer.
Definition: fsl_spi.h:653
void(* spi_slave_callback_t)(SPI_Type *base, spi_slave_handle_t *handle, status_t status, void *userData)
SPI master callback for finished transmit.
Definition: fsl_spi.h:228
void(* spi_master_callback_t)(SPI_Type *base, spi_master_handle_t *handle, status_t status, void *userData)
SPI master callback for finished transmit.
Definition: fsl_spi.h:225
Definition: fsl_spi.h:132
spi_rxfifo_watermark_t rxWatermark
Definition: fsl_spi.h:185
spi_shift_direction_t
SPI data shifter direction options.
Definition: fsl_spi.h:74
spi_ss_output_mode_t
SPI slave select output mode options.
Definition: fsl_spi.h:81
static void SPI_EnableDMA(SPI_Type *base, uint32_t mask, bool enable)
Enable dma source for SPI.
Definition: fsl_spi.h:439
void SPI_EnableInterrupts(SPI_Type *base, uint32_t mask)
Enable interrupt for SPI.
Definition: fsl_spi.c:406
Definition: fsl_spi.h:156
static void SPI_SlaveTransferAbort(SPI_Type *base, spi_slave_handle_t *handle)
Abort a SPI slave transfer using interrupt.
Definition: fsl_spi.h:678
Definition: fsl_spi.h:128
Definition: fsl_spi.h:120
Definition: fsl_spi.h:122
volatile size_t rxRemainingBytes
Definition: fsl_spi.h:236
static void SPI_SetMatchData(SPI_Type *base, uint32_t matchData)
Set match data for SPI.
Definition: fsl_spi.h:495
status_t SPI_MasterTransferBlocking(SPI_Type *base, spi_transfer_t *xfer)
Transfer a block of data in polling way.
Definition: fsl_spi.c:596
uint32_t SPI_GetStatusFlags(SPI_Type *base)
Get the status flag.
Definition: fsl_spi.c:390
void SPI_MasterGetDefaultConfig(spi_master_config_t *config)
Set the SPI master configuration structure to default values.
Definition: fsl_spi.c:265
Definition: fsl_spi.h:112
static void SPI_Enable(I2C_Type *base, bool enable)
Enable or disables the SPI.
Definition: fsl_spi.h:346
uint8_t *volatile txData
Definition: fsl_spi.h:233
spi_shift_direction_t direction
Definition: fsl_spi.h:178
size_t dataSize
Definition: fsl_spi.h:215
Definition: fsl_spi.h:109
uint32_t baudRate_Bps
Definition: fsl_spi.h:189
Definition: fsl_spi.h:130
status_t SPI_MasterTransferGetCount(SPI_Type *base, spi_master_handle_t *handle, size_t *count)
Get the bytes of SPI Interrupt transferred.
Definition: fsl_spi.c:758
static uint32_t SPI_GetDataRegisterAddress(SPI_Type *base)
Get SPI tx/rx data register address.
Definition: fsl_spi.h:460
void SPI_SlaveInit(SPI_Type *base, const spi_slave_config_t *config)
Initialize SPI with slave configuration.
Definition: fsl_spi.c:346
SPI master user configure structure.
Definition: fsl_spi.h:172
spi_data_bitcount_mode_t
SPI data length mode options.
Definition: fsl_spi.h:99
spi_data_bitcount_mode_t dataMode
Definition: fsl_spi.h:180
_spi_status
Return status for the SPI driver.
Definition: fsl_spi.h:50
void SPI_EnableFIFO(SPI_Type *base, bool enable)
Enable or Disable FIFO if there is FIFO.
Definition: fsl_spi.c:558
static void SPI_SlaveTransferCreateHandle(SPI_Type *base, spi_slave_handle_t *handle, spi_slave_callback_t callback, void *userData)
Initialize the SPI slave handle.
Definition: fsl_spi.h:628
spi_pin_mode_t
SPI pin mode options.
Definition: fsl_spi.h:89
spi_pin_mode_t pinMode
Definition: fsl_spi.h:188
uint8_t * rxData
Definition: fsl_spi.h:214
void SPI_MasterTransferHandleIRQ(SPI_Type *base, spi_master_handle_t *handle)
Interrupt handler for SPI.
Definition: fsl_spi.c:810
void * userData
Definition: fsl_spi.h:242
int32_t status_t
Type used for all status and error return values.
Definition: fsl_common.h:121
Definition: fsl_spi.h:108
size_t transferSize
Definition: fsl_spi.h:238
Definition: fsl_spi.h:141
Definition: fsl_spi.h:123
spi_rxfifo_watermark_t
SPI RX FIFO watermark settings.
Definition: fsl_spi.h:154
void SPI_MasterSetBaudRate(SPI_Type *base, uint32_t baudRate_Bps, uint32_t srcClock_Hz)
Set Baud rate for SPI transfer, this only used in master.
Definition: fsl_spi.c:483
Definition: fsl_spi.h:140
Definition: fsl_spi.h:165
void SPI_MasterTransferAbort(SPI_Type *base, spi_master_handle_t *handle)
Abort a SPI transfer using interrupt.
Definition: fsl_spi.c:784