36_Static_assert((
sizeof(
struct SPIRegs)) == (
sizeof(uint32_t) * 9U),
37 "SPI Register struct size mismatch. Is it aligned?");
39#define SPI(ADDR) (struct SPIRegs *)(ADDR);
44struct __attribute__((packed))
SPIISR {
50_Static_assert((
sizeof(
struct SPIISR)) == (
sizeof(uint8_t) * 1U),
51 "SPI ISR struct size mismatch. Is it aligned?");
66_Static_assert((
sizeof(
struct SPIConfig)) == (
sizeof(uint8_t) * 3U),
67 "SPI Config struct size mismatch. Is it aligned?");
99 SPI_COMM_FULLDUPLEX = 0x0,
100 SPI_COMM_HALFDUPLEX_RX,
101 SPI_COMM_HALFDUPLEX_TX,
119 SPI_PRESC_DIV2 = 0x0,
173 _Bool polarity, _Bool phase);
Defines used commonly in most files.
spi_peripheral
Available SPI peripherals.
Definition spi.h:73
enum spi_nss_mode spi_nss_mode_t
Available SPI NSS pin modes.
void spi_stop(const spi_peripheral_t spi)
Stops the SPI peripheral communication.
Definition spi.c:251
void spi_configure_communication(const spi_peripheral_t spi, const spi_communication_t com, const spi_nss_mode_t nss)
Configures the SPI communication / wiring.
Definition spi.c:68
uint16_t spi_rx_data(const spi_peripheral_t spi)
Reads the received SPI data.
Definition spi.c:209
void spi_configure_options(const spi_peripheral_t spi, const struct SPIConfig config)
Set SPI options from specified config.
Definition spi.c:167
uint16_t spi_trx_data(const spi_peripheral_t spi, const uint16_t data)
Transmit data, receive answer.
Definition spi.c:221
enum spi_communication spi_communication_t
Available SPI communication modes.
void spi_set_dma(const spi_peripheral_t spi, const _Bool forTX, const _Bool forRX)
Enables DMA for SPI RX and/or TX.
Definition spi.c:151
enum spi_peripheral spi_peripheral_t
Available SPI peripherals.
void spi_set_ssi_state(const spi_peripheral_t spi, const _Bool state)
Sets the internal SS to the desired state.
Definition spi.c:136
void spi_configure_clk(const spi_peripheral_t spi, const spi_prescaler_t div, _Bool polarity, _Bool phase)
Configures the SPI prescale divider.
Definition spi.c:106
void spi_start(const spi_peripheral_t spi, const _Bool master)
Initiates the SPI peripheral with specified options.
Definition spi.c:237
spi_communication
Available SPI communication modes.
Definition spi.h:98
enum spi_prescaler spi_prescaler_t
Available SPI clock dividers.
spi_prescaler
Available SPI clock dividers.
Definition spi.h:118
void spi_tx_data(const spi_peripheral_t spi, const uint16_t data)
Transmits specified SPI data.
Definition spi.c:197
spi_nss_mode
Available SPI NSS pin modes.
Definition spi.h:109
void spi_set_interrupts(const spi_peripheral_t spi, const struct SPIISR config)
Enables specified SPI interrupts.
Definition spi.c:50
CMSIS device header stubs.
Contains additional SPI configuration.
Definition spi.h:56
uint16_t CRCPoly
Definition spi.h:63
_Bool UseCRC
Definition spi.h:62
_Bool Use16Bits
Definition spi.h:58
_Bool LSBFirst
Definition spi.h:59
_Bool TIMode
Definition spi.h:60
Contains SPI interrupt configuration.
Definition spi.h:44
_Bool ERR
Definition spi.h:45
_Bool TXE
Definition spi.h:47
_Bool RXNE
Definition spi.h:46
Contains SPI/I2S registers.
Definition spi.h:24