Hardware Abstraction Layer for FreeRTOS
Collaboration diagram for SPI Slave Subsystem:

Data Structures

struct  spi_opt
 
struct  spi_slave_generic
 

Macros

#define SPI_OPT_GPIO_DIS   0xFF
 
#define SPI_OPT_CS_DIS   0x7
 

Functions

struct spi_slave * spiSlave_init (struct spi *spi, struct spi_opt *options)
 
int32_t spiSlave_deinit (struct spi_slave *slave)
 
int32_t spiSlave_transfer (struct spi_slave *slave, uint16_t *sendData, uint16_t *recvData, uint32_t len, TickType_t waittime)
 
int32_t spiSlave_send (struct spi_slave *slave, uint16_t *data, uint32_t len, TickType_t waittime)
 
int32_t spiSlave_recv (struct spi_slave *slave, uint16_t *data, uint32_t len, TickType_t waittime)
 
int32_t spiSlave_transferISR (struct spi_slave *slave, uint16_t *sendData, uint16_t *recvData, uint32_t len)
 
int32_t spiSlave_sendISR (struct spi_slave *slave, uint16_t *data, uint32_t len)
 
int32_t spiSlave_recvISR (struct spi_slave *slave, uint16_t *data, uint32_t len)
 

Detailed Description

#include <spi.h>

This is the SPI Slave Subsystem.

Macro Definition Documentation

◆ SPI_OPT_CS_DIS

#define SPI_OPT_CS_DIS   0x7

Disable CS Control over Controller

◆ SPI_OPT_GPIO_DIS

#define SPI_OPT_GPIO_DIS   0xFF

Disable CS Control over GPIO

Function Documentation

◆ spiSlave_deinit()

int32_t spiSlave_deinit ( struct spi_slave *  slave)

Deinit Slave

Parameters
slaveSlave instance
Returns
-1 on error 0 on ok

◆ spiSlave_init()

struct spi_slave* spiSlave_init ( struct spi *  spi,
struct spi_opt options 
)

Slave init Init one Slave on a SPI Bus

Warning
This Function did not check collision between instances
Parameters
spiSpi Instance
optionsOption to acces the slave
Returns
SPI Slave Instance or Null on error

◆ spiSlave_recv()

int32_t spiSlave_recv ( struct spi_slave *  slave,
uint16_t *  data,
uint32_t  len,
TickType_t  waittime 
)

Recv Data from Slave

Parameters
slaveSlave instance
dataData
lenLength of Data
waittimemax waittime in mutex or isr lock see xSemaphoreTake()
Returns
-1 on error 0 on ok

◆ spiSlave_recvISR()

int32_t spiSlave_recvISR ( struct spi_slave *  slave,
uint16_t *  data,
uint32_t  len 
)

Recv Data from Slave in ISR

Parameters
slaveSlave instance
dataData
lenLength of Data
Returns
-1 on error 0 on ok

◆ spiSlave_send()

int32_t spiSlave_send ( struct spi_slave *  slave,
uint16_t *  data,
uint32_t  len,
TickType_t  waittime 
)

Send Data to Slave

Parameters
slaveSlave instance
dataData
lenLength of Data
waittimemax waittime in mutex or isr lock see xSemaphoreTake()
Returns
-1 on error 0 on ok

◆ spiSlave_sendISR()

int32_t spiSlave_sendISR ( struct spi_slave *  slave,
uint16_t *  data,
uint32_t  len 
)

Send Data to Slave in ISR

Parameters
slaveSlave instance
dataData
lenLength of Data
Returns
-1 on error 0 on ok

◆ spiSlave_transfer()

int32_t spiSlave_transfer ( struct spi_slave *  slave,
uint16_t *  sendData,
uint16_t *  recvData,
uint32_t  len,
TickType_t  waittime 
)

Transfer Data to slave and recv Data from Slave

Warning
sendData and recvData shall have the same length!
Parameters
slaveSlave instance
sendDataData
recvDataData
lenLength of Data
waittimemax waittime in mutex or isr lock see xSemaphoreTake()
Returns
-1 on error 0 on ok

◆ spiSlave_transferISR()

int32_t spiSlave_transferISR ( struct spi_slave *  slave,
uint16_t *  sendData,
uint16_t *  recvData,
uint32_t  len 
)

Transfer Data to slave and recv Data from Slave in ISR

Warning
sendData and recvData shall have the same length!
Parameters
slaveSlave instance
sendDataData
recvDataData
lenLength of Data
Returns
-1 on error 0 on ok
spi.h