14static void SPI_send8(
SPI *, uint16_t);
15static void SPI_send16(
SPI *, uint16_t);
17static void SPI_receive8(
SPI *,
volatile uint16_t *);
18static void SPI_receive16(
SPI *,
volatile uint16_t *);
38 spi->
send = (df == MODE8) ? SPI_send8 : SPI_send16;
39 spi->
receive = (df == MODE8) ? SPI_receive8 : SPI_receive16;
53 volatile uint16_t response;
69static void SPI_send8(
SPI *spi, uint16_t data) {
70 while (!(spi->
interface->SR & SPI_SR_TXE));
74static void SPI_send16(
SPI *spi, uint16_t data) {
75 while (!(spi->
interface->SR & SPI_SR_TXE));
88static void SPI_receive8(
SPI *spi,
volatile uint16_t *data) {
89 while (!(spi->
interface->SR & SPI_SR_RXNE));
93static void SPI_receive16(
SPI *spi,
volatile uint16_t *data) {
94 while (!(spi->
interface->SR & SPI_SR_RXNE));
uint16_t SPI_transmit(SPI *, uint16_t)
Instance method to communicate a SPI transaction with slave device.
void SPI_init(SPI *spi, DeviceType device, SPI_TypeDef *interface, DataFormat df, GPIO_TypeDef *port, unsigned long cs)
Initialiser for an SPI device interface.
DataFormat
Data format enum Describes the format of dataframes sent on the SPI data bus.
DeviceType
Device type enum Describes the type of peripheral implementing an SPI interface.
Struct definition for SPI interface. Provides the interface for API consumers to interact with the SP...
void(* send)(struct SPI *, uint16_t)
SPI send method.
DeviceType device
Enum specifier for device type.
uint16_t(* transmit)(struct SPI *, uint16_t)
SPI transmit method.
GPIO_TypeDef * port
Pointer to GPIO port struct.
unsigned long cs
Device chip select address.
void(* receive)(struct SPI *, volatile uint16_t *)
SPI receive method.
SPI_TypeDef * interface
Pointer to SPI interface struct.