110#define SPI1_RXDMA_CONT_CONFIG(rx_addr_, priority_) \
112 .periph_addr = (uint32_t)&(SPI1->DR), \
113 .mem_addr = (uint32_t)(rx_addr_), \
115 .increment = false, \
119 .periph_inc = false, \
120 .mem_to_mem = false, \
121 .priority = (priority_), \
123 .periph_size = 0b00, \
124 .tx_isr_en = false, \
125 .dma_chan_request = 0b0011, \
128 .stream = DMA2_Stream2}
130#define SPI1_TXDMA_CONT_CONFIG(tx_addr_, priority_) \
132 .periph_addr = (uint32_t)&(SPI1->DR), \
133 .mem_addr = (uint32_t)(tx_addr_), \
135 .increment = false, \
139 .periph_inc = false, \
140 .mem_to_mem = false, \
141 .priority = (priority_), \
143 .periph_size = 0b00, \
145 .dma_chan_request = 0b0011, \
148 .stream = DMA2_Stream3}
150#define SPI2_TXDMA_CONT_CONFIG(tx_addr_, priority_) \
152 .periph_addr = (uint32_t)&(SPI2->DR), \
153 .mem_addr = (uint32_t)(tx_addr_), \
155 .increment = false, \
159 .periph_inc = false, \
160 .mem_to_mem = false, \
161 .priority = (priority_), \
163 .periph_size = 0b00, \
165 .dma_chan_request = 0b0000, \
168 .stream = DMA1_Stream4}
170#define SPI2_RXDMA_CONT_CONFIG(rx_addr_, priority_) \
172 .periph_addr = (uint32_t)&(SPI2->DR), \
173 .mem_addr = (uint32_t)(rx_addr_), \
175 .increment = false, \
179 .periph_inc = false, \
180 .mem_to_mem = false, \
181 .priority = (priority_), \
183 .periph_size = 0b00, \
184 .tx_isr_en = false, \
185 .dma_chan_request = 0b0000, \
188 .stream = DMA1_Stream3}
GPIO Driver for STM32F4 Devices.
RCC Configuration Driver for STM32F4 Devices.
uint8_t PHAL_SPI_writeByte(SPI_InitConfig_t *spi, uint8_t address, uint8_t writeDat)
Blocking function to write a single byte to a SPI device. Useful for Initilization functions that jus...
Definition spi.c:429
bool PHAL_SPI_busy(SPI_InitConfig_t *cfg)
Check for current SPI transaction to complete.
Definition spi.c:204
bool PHAL_SPI_transfer_noDMA(SPI_InitConfig_t *spi, const uint8_t *out_data, uint32_t txlen, uint32_t rxlen, uint8_t *in_data)
SPI handle.
Definition spi.c:80
bool PHAL_SPI_init(SPI_InitConfig_t *handle)
Initilize SPI peripheral with the configuired structure.
Definition spi.c:25
bool PHAL_SPI_transfer(SPI_InitConfig_t *spi, const uint8_t *out_data, const uint32_t data_len, const uint8_t *in_data)
Transfer data_len bytes from out_data to SPI device and place MISO data in in_data This function just...
Definition spi.c:142
uint8_t PHAL_SPI_readByte(SPI_InitConfig_t *spi, uint8_t address, bool skipDummy)
Blocking function to read a single byte from a SPI device. Useful for Initilization functions that ju...
Definition spi.c:410
void PHAL_SPI_ForceReset(SPI_InitConfig_t *spi)
Definition spi.c:213
Configuration entry for SPI initilization.
Definition spi.h:25
volatile bool _busy
SPI Peripheral currently in a transaction.
Definition spi.h:35
volatile bool _direct_mode_error
DMA error while attempting to operate in direct mode.
Definition spi.h:37
dma_init_t * rx_dma_cfg
DMA initilization for RX transfer.
Definition spi.h:32
uint8_t data_len
Number of bits per transaction.
Definition spi.h:27
SPI_TypeDef * periph
SPI Peripheral.
Definition spi.h:40
dma_init_t * tx_dma_cfg
DMA initilization for TX transfer.
Definition spi.h:33
volatile bool _fifo_overrun
DMA FIFO has been overrun - this should never occur, as it should never be enabled.
Definition spi.h:38
uint32_t data_rate
Target baudrate in b/s (might be different depending on peripheral clock divison)
Definition spi.h:26
bool nss_sw
Save Select controlled by Software.
Definition spi.h:28
uint32_t nss_gpio_pin
GPIO Pin of SPI CS Pin.
Definition spi.h:30
volatile bool _error
SPI Peripheral current transaction error.
Definition spi.h:36
GPIO_TypeDef * nss_gpio_port
GPIO Port of SPI CS Pin.
Definition spi.h:29