18#include "common/phal_F4_F7/phal_F4_F7.h"
111#define SPI1_RXDMA_CONT_CONFIG(rx_addr_, priority_) \
113 .periph_addr = (uint32_t)&(SPI1->DR), \
114 .mem_addr = (uint32_t)(rx_addr_), \
116 .increment = false, \
120 .periph_inc = false, \
121 .mem_to_mem = false, \
122 .priority = (priority_), \
124 .periph_size = 0b00, \
125 .tx_isr_en = false, \
126 .dma_chan_request = 0b0011, \
129 .stream = DMA2_Stream2}
131#define SPI1_TXDMA_CONT_CONFIG(tx_addr_, priority_) \
133 .periph_addr = (uint32_t)&(SPI1->DR), \
134 .mem_addr = (uint32_t)(tx_addr_), \
136 .increment = false, \
140 .periph_inc = false, \
141 .mem_to_mem = false, \
142 .priority = (priority_), \
144 .periph_size = 0b00, \
146 .dma_chan_request = 0b0011, \
149 .stream = DMA2_Stream3}
151#define SPI2_TXDMA_CONT_CONFIG(tx_addr_, priority_) \
153 .periph_addr = (uint32_t)&(SPI2->DR), \
154 .mem_addr = (uint32_t)(tx_addr_), \
156 .increment = false, \
160 .periph_inc = false, \
161 .mem_to_mem = false, \
162 .priority = (priority_), \
164 .periph_size = 0b00, \
166 .dma_chan_request = 0b0000, \
169 .stream = DMA1_Stream4}
171#define SPI2_RXDMA_CONT_CONFIG(rx_addr_, priority_) \
173 .periph_addr = (uint32_t)&(SPI2->DR), \
174 .mem_addr = (uint32_t)(rx_addr_), \
176 .increment = false, \
180 .periph_inc = false, \
181 .mem_to_mem = false, \
182 .priority = (priority_), \
184 .periph_size = 0b00, \
185 .tx_isr_en = false, \
186 .dma_chan_request = 0b0000, \
189 .stream = DMA1_Stream3}
Common defs for the entire firmware repository. Dont let this get too out of control please.
GPIO Driver for STM32F4/F7 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:440
bool PHAL_SPI_busy(SPI_InitConfig_t *cfg)
Check for current SPI transaction to complete.
Definition spi.c:215
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:87
bool PHAL_SPI_init(SPI_InitConfig_t *handle)
Initilize SPI peripheral with the configuired structure.
Definition spi.c:22
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:153
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:421
Configuration entry for SPI initilization.
Definition spi.h:26
volatile bool _busy
SPI Peripheral currently in a transaction.
Definition spi.h:36
volatile bool _direct_mode_error
DMA error while attempting to operate in direct mode.
Definition spi.h:38
uint8_t data_len
Number of bits per transaction.
Definition spi.h:28
SPI_TypeDef * periph
SPI Peripheral.
Definition spi.h:41
dma_init_t * tx_dma_cfg
DMA initilization for TX transfer.
Definition spi.h:34
volatile bool _fifo_overrun
DMA FIFO has been overrun - this should never occur, as it should never be enabled.
Definition spi.h:39
uint32_t data_rate
Target baudrate in b/s (might be different depending on peripheral clock divison)
Definition spi.h:27
bool nss_sw
Save Select controlled by Software.
Definition spi.h:29
dma_init_t * rx_dma_cfg
DMA initilization for RX transfer.
Definition spi.h:33
uint32_t nss_gpio_pin
GPIO Pin of SPI CS Pin.
Definition spi.h:31
volatile bool _error
SPI Peripheral current transaction error.
Definition spi.h:37
GPIO_TypeDef * nss_gpio_port
GPIO Port of SPI CS Pin.
Definition spi.h:30