31 #define TM_SPI_DMA_H 111
95 #include "stm32f4xx.h"
96 #include "stm32f4xx_dma.h"
98 #include "tm_stm32f4_dma.h"
99 #include "tm_stm32f4_spi.h"
109 #ifndef SPI1_DMA_TX_STREAM
110 #define SPI1_DMA_TX_STREAM DMA2_Stream3
111 #define SPI1_DMA_TX_CHANNEL DMA_Channel_3
113 #ifndef SPI1_DMA_RX_STREAM
114 #define SPI1_DMA_RX_STREAM DMA2_Stream2
115 #define SPI1_DMA_RX_CHANNEL DMA_Channel_3
119 #ifndef SPI2_DMA_TX_STREAM
120 #define SPI2_DMA_TX_STREAM DMA1_Stream4
121 #define SPI2_DMA_TX_CHANNEL DMA_Channel_0
123 #ifndef SPI2_DMA_RX_STREAM
124 #define SPI2_DMA_RX_STREAM DMA1_Stream3
125 #define SPI2_DMA_RX_CHANNEL DMA_Channel_0
129 #ifndef SPI3_DMA_TX_STREAM
130 #define SPI3_DMA_TX_STREAM DMA1_Stream5
131 #define SPI3_DMA_TX_CHANNEL DMA_Channel_0
133 #ifndef SPI3_DMA_RX_STREAM
134 #define SPI3_DMA_RX_STREAM DMA1_Stream0
135 #define SPI3_DMA_RX_CHANNEL DMA_Channel_0
139 #ifndef SPI4_DMA_TX_STREAM
140 #define SPI4_DMA_TX_STREAM DMA2_Stream1
141 #define SPI4_DMA_TX_CHANNEL DMA_Channel_4
143 #ifndef SPI4_DMA_RX_STREAM
144 #define SPI4_DMA_RX_STREAM DMA2_Stream0
145 #define SPI4_DMA_RX_CHANNEL DMA_Channel_4
149 #ifndef SPI5_DMA_TX_STREAM
150 #define SPI5_DMA_TX_STREAM DMA2_Stream6
151 #define SPI5_DMA_TX_CHANNEL DMA_Channel_7
153 #ifndef SPI5_DMA_RX_STREAM
154 #define SPI5_DMA_RX_STREAM DMA2_Stream5
155 #define SPI5_DMA_RX_CHANNEL DMA_Channel_7
159 #ifndef SPI6_DMA_TX_STREAM
160 #define SPI6_DMA_TX_STREAM DMA2_Stream5
161 #define SPI6_DMA_TX_CHANNEL DMA_Channel_1
163 #ifndef SPI6_DMA_RX_STREAM
164 #define SPI6_DMA_RX_STREAM DMA2_Stream6
165 #define SPI6_DMA_RX_CHANNEL DMA_Channel_1
232 uint8_t
TM_SPI_DMA_Transmit(SPI_TypeDef* SPIx, uint8_t* TX_Buffer, uint8_t* RX_Buffer, uint16_t count);
245 #define TM_SPI_DMA_Send(SPIx, TX_Buffer, count) (TM_SPI_DMA_Transmit(SPIx, TX_Buffer, NULL, count))
258 #define TM_SPI_DMA_Receive(SPIx, RX_Buffer, count) (TM_SPI_DMA_Transmit(SPIx, NULL, RX_Buffer, count))
DMA_Stream_TypeDef * TM_SPI_DMA_GetStreamRX(SPI_TypeDef *SPIx)
Gets RX DMA stream for specific SPI.
void TM_SPI_DMA_EnableInterrupts(SPI_TypeDef *SPIx)
Enables DMA stream interrupts for specific SPI.
void TM_SPI_DMA_InitWithStreamAndChannel(SPI_TypeDef *SPIx, DMA_Stream_TypeDef *TX_Stream, uint32_t TX_Channel, DMA_Stream_TypeDef *RX_Stream, uint32_t RX_Channel)
Initializes SPI DMA functionality with custom DMA stream and channel options.
void TM_SPI_DMA_Init(SPI_TypeDef *SPIx)
Initializes SPI peripheral DMA.
DMA_Stream_TypeDef * TM_SPI_DMA_GetStreamTX(SPI_TypeDef *SPIx)
Gets TX DMA stream for specific SPI.
uint8_t TM_SPI_DMA_SendHalfWord(SPI_TypeDef *SPIx, uint16_t value, uint16_t count)
Sends one half word value multiple times over SPI with DMA.
uint8_t TM_SPI_DMA_Transmit(SPI_TypeDef *SPIx, uint8_t *TX_Buffer, uint8_t *RX_Buffer, uint16_t count)
Transmits (exchanges) data over SPI with DMA.
void TM_SPI_DMA_DisableInterrupts(SPI_TypeDef *SPIx)
Disables DMA stream interrupts for specific SPI.
void TM_SPI_DMA_Deinit(SPI_TypeDef *SPIx)
Deinitializes SPI DMA functionality.
uint8_t TM_SPI_DMA_Working(SPI_TypeDef *SPIx)
Checks if SPI DMA is still sending/receiving data.
uint8_t TM_SPI_DMA_SendByte(SPI_TypeDef *SPIx, uint8_t value, uint16_t count)
Sends one byte value multiple times over SPI with DMA.