48 #include "mxc_assert.h" 92 typedef struct _mxc_spi_pins_t mxc_spi_pins_t;
94 struct _mxc_spi_pins_t {
188 unsigned ssPolarity,
unsigned int hz, mxc_spi_pins_t pins);
int MXC_SPI_SlaveTransactionAsync(mxc_spi_req_t *req)
Setup an interrupt-driven SPI transaction.
int MXC_SPI_SlaveTransactionDMA(mxc_spi_req_t *req)
Setup a DMA driven SPI transaction.
void MXC_SPI_EnableInt(mxc_spi_regs_t *spi, unsigned int intEn)
Enables specific interrupts.
Definition: spi_regs.h:88
4 Data lines, half duplex
Definition: spi.h:89
void MXC_SPI_DisableInt(mxc_spi_regs_t *spi, unsigned int intDis)
Disables specific interrupts.
int MXC_SPI_GetSlave(mxc_spi_regs_t *spi)
Gets the slave select (SS) line used for transmissions.
uint8_t * txData
Definition: spi.h:133
int MXC_SPI_ReadyForSleep(mxc_spi_regs_t *spi)
Checks if the given SPI bus can be placed in sleep mode.
bool ss2
Slave select pin 2.
Definition: spi.h:103
void MXC_SPI_AbortAsync(mxc_spi_regs_t *spi)
Abort any asynchronous requests in progress.
spi_complete_t completeCB
Pointer to function called when transaction is complete.
Definition: spi.h:150
int MXC_SPI_GetDataSize(mxc_spi_regs_t *spi)
Gets the number of bits per character.
bool clock
Clock pin.
Definition: spi.h:100
uint32_t txCnt
Number of bytes actually transmitted from txData.
Definition: spi.h:143
int MXC_SPI_Init(mxc_spi_regs_t *spi, int masterMode, int quadModeUsed, int numSlaves, unsigned ssPolarity, unsigned int hz, mxc_spi_pins_t pins)
Initialize and enable SPI peripheral.
bool sdio3
SDIO3 pin.
Definition: spi.h:107
void(* spi_complete_t)(void *req, int result)
The callback routine used to indicate the transaction has terminated.
Definition: spi.h:118
int MXC_SPI_SetSlave(mxc_spi_regs_t *spi, int ssIdx)
Sets the slave select (SS) line used for transmissions.
void MXC_SPI_ClearFlags(mxc_spi_regs_t *spi)
Clears the interrupt flags that are currently set.
int MXC_SPI_SetDefaultTXData(mxc_spi_regs_t *spi, unsigned int defaultTXData)
Sets the TX data to transmit as a 'dummy' byte.
1 Data line, half duplex
Definition: spi.h:86
int MXC_SPI_SetDataSize(mxc_spi_regs_t *spi, int dataSize)
Sets the number of bits per character.
void MXC_SPI_AsyncHandler(mxc_spi_regs_t *spi)
The processing function for asynchronous transactions.
bool sdio2
SDIO2 pin.
Definition: spi.h:106
mxc_spi_regs_t * spi
Point to SPI registers.
Definition: spi.h:130
int MXC_SPI_SetWidth(mxc_spi_regs_t *spi, mxc_spi_width_t spiWidth)
Sets the SPI width used for transmissions.
2 Data lines, half duplex
Definition: spi.h:88
int MXC_SPI_MasterTransactionDMA(mxc_spi_req_t *req)
Setup a DMA driven SPI transaction.
int MXC_SPI_Shutdown(mxc_spi_regs_t *spi)
Disable and shutdown SPI peripheral.
bool mosi
mosi pin
Definition: spi.h:105
int MXC_SPI_SetFrequency(mxc_spi_regs_t *spi, unsigned int hz)
Set the frequency of the SPI interface.
unsigned int MXC_SPI_GetRXFIFOAvailable(mxc_spi_regs_t *spi)
Get the number of bytes currently available in the receive FIFO.
mxc_spi_width_t MXC_SPI_GetWidth(mxc_spi_regs_t *spi)
Gets the SPI width used for transmissions.
void MXC_SPI_ClearRXFIFO(mxc_spi_regs_t *spi)
Removes and discards all bytes currently in the receive FIFO.
int MXC_SPI_SetRXThreshold(mxc_spi_regs_t *spi, unsigned int numBytes)
Set the receive threshold level.
unsigned int MXC_SPI_GetRXThreshold(mxc_spi_regs_t *spi)
Get the current receive threshold level.
bool ss1
Slave select pin 1.
Definition: spi.h:102
int MXC_SPI_StartTransmission(mxc_spi_regs_t *spi)
Starts a SPI Transmission.
int MXC_SPI_MasterTransactionAsync(mxc_spi_req_t *req)
Setup an interrupt-driven SPI transaction.
int ssDeassert
1 - Deassert SS at end of transaction, 0 - leave SS asserted
Definition: spi.h:132
unsigned int MXC_SPI_ReadRXFIFO(mxc_spi_regs_t *spi, unsigned char *bytes, unsigned int len)
Unloads bytes from the receive FIFO.
unsigned int MXC_SPI_GetTXThreshold(mxc_spi_regs_t *spi)
Get the current transmit threshold level.
unsigned int MXC_SPI_GetTXFIFOAvailable(mxc_spi_regs_t *spi)
Get the amount of free space available in the transmit FIFO.
unsigned int MXC_SPI_GetFlags(mxc_spi_regs_t *spi)
Gets the interrupt flags that are currently set.
MISO/MOSI, full duplex.
Definition: spi.h:87
int MXC_SPI_SlaveTransaction(mxc_spi_req_t *req)
Performs a blocking SPI transaction.
unsigned int MXC_SPI_WriteTXFIFO(mxc_spi_regs_t *spi, unsigned char *bytes, unsigned int len)
Loads bytes into the transmit FIFO.
void MXC_SPI_ClearTXFIFO(mxc_spi_regs_t *spi)
Removes and discards all bytes currently in the transmit FIFO.
uint32_t rxCnt
Number of bytes stored in rxData.
Definition: spi.h:144
unsigned int MXC_SPI_GetFrequency(mxc_spi_regs_t *spi)
Get the frequency of the SPI interface.
uint32_t rxLen
Number of bytes to be stored in rxData.
Definition: spi.h:142
int MXC_SPI_MasterTransaction(mxc_spi_req_t *req)
Performs a blocking SPI transaction.
int MXC_SPI_GetActive(mxc_spi_regs_t *spi)
Checks the SPI Peripheral for an ongoing transmission.
The information required to perform a complete SPI transaction.
Definition: spi.h:125
int ssIdx
Slave select line to use (Master only, ignored in slave mode)
Definition: spi.h:131
int MXC_SPI_AbortTransmission(mxc_spi_regs_t *spi)
Aborts an ongoing SPI Transmission.
int MXC_SPI_SetTXThreshold(mxc_spi_regs_t *spi, unsigned int numBytes)
Set the transmit threshold level.
bool miso
miso pin
Definition: spi.h:104
bool ss0
Slave select pin 0.
Definition: spi.h:101
mxc_spi_width_t
The list of SPI Widths supported.
Definition: spi.h:85