16static void SPI_send8(
SPI_t *, uint16_t);
17static void SPI_send16(
SPI_t *, uint16_t);
19static void SPI_receive8(
SPI_t *,
volatile uint16_t *);
20static void SPI_receive16(
SPI_t *,
volatile uint16_t *);
38 if (interface == NULL)
39 return (
SPI_t){.interface = NULL};
42 SPI_t spi = {.interface = interface};
48 spi.
send = (spi.
config.
DFF == SPI_DFF8) ? SPI_send8 : SPI_send16;
57#ifndef DOXYGEN_PRIVATE
77 interface->
CR1 = *(uint16_t *)config;
81 interface->
CR1 = *(uint16_t *)config;
97 volatile uint16_t response;
114static void SPI_send8(
SPI_t *spi, uint16_t data) {
119static void SPI_send16(
SPI_t *spi, uint16_t data) {
134static void SPI_receive8(
SPI_t *spi,
volatile uint16_t *data) {
149static void SPI_receive16(
SPI_t *spi,
volatile uint16_t *data) {
168 if (config == NULL) {
169 config = &SPI_CONFIG_DEFAULT;
Serial Peripheral Interface.
SPI_DataFormat DFF
SPI data format | (default SPI_DFF8)
void(* send)(struct SPI *, uint16_t)
SPI send method.
uint16_t(* transmit)(struct SPI *, uint16_t)
SPI transmit method.
bool SPE
SPI enable | (default false)
void(* updateConfig)(struct SPI *, SPI_Config *)
SPI configuration update method.
SPI_Config config
Configuration parameters for the SPI peripheral.
void(* receive)(struct SPI *, volatile uint16_t *)
SPI receive method.
SPI_TypeDef * interface
Pointer to SPI interface struct.
SPI_t SPI_init(SPI_TypeDef *interface, SPI_Config *config)
Initialiser for an SPI device interface.
uint16_t SPI_transmit(SPI_t *, uint16_t)
Instance method to communicate a SPI transaction with slave device.
void SPI_updateConfig(SPI_t *spi, SPI_Config *config)
Update SPI peripheral configuration.
SPI CR1 configuration struct.
Struct definition for SPI interface. Provides the interface for API consumers to interact with the SP...