PER Firmware
Loading...
Searching...
No Matches
dma.h
Go to the documentation of this file.
1
12#ifndef _DMA_H_
13#define _DMA_H_
14
16
17typedef struct {
18 uint32_t periph_addr;
19 uint32_t mem_addr;
20 uint16_t tx_size;
21 uint8_t mem_size;
22
25 uint8_t dir;
26 bool mem_inc;
29 uint8_t priority;
30 uint8_t periph_size;
33 uint8_t stream_idx;
34
35 DMA_TypeDef* periph;
36 DMA_Stream_TypeDef* stream; // Example DMA1_Stream0 or DMA2_Stream7
38
39/*
40 * @brief Initialize DMA peripheral to set m2m, p2p, or p2m with set size
41 * and length of txfer
42 *
43 * @param init -> Address of initialization structure
44 * @return true -> Successful init (no clashing params)
45 * @return false -> Init not complete (parameters clash)
46 */
47bool PHAL_initDMA(dma_init_t* init);
48
49/*
50 * @brief Start txfer after sucessful DMA peripheral initialization
51 *
52 * @param init -> Address of initialization structure
53 */
55
56/*
57 * @brief Stop txfer
58 *
59 * @param init -> Address of initialization structure
60 */
62
63/*
64 * @brief Re-enable DMA txfer after error ISR fires
65 *
66 * @param init -> Address of initialization structure
67 */
69
70/*
71 * @brief Set memory address for DMA transfer. In Mem to Mem this acts as the source address
72 *
73 * @param init -> Address of initialization structure
74 */
75void PHAL_DMA_setMemAddress(dma_init_t* init, const uint32_t address);
76
77/*
78 * @brief Set transfer length for DMA transaction
79 *
80 * @param init -> Address of initialization structure
81 */
82void PHAL_DMA_setTxferLength(dma_init_t* init, const uint32_t length);
83
84#endif
void PHAL_DMA_setTxferLength(dma_init_t *init, const uint32_t length)
Definition dma.c:140
void PHAL_DMA_setMemAddress(dma_init_t *init, const uint32_t address)
Definition dma.c:136
bool PHAL_initDMA(dma_init_t *init)
Definition dma.c:14
void PHAL_DMA_reEnable(dma_init_t *init)
Definition dma.c:104
void PHAL_DMA_startTxfer(dma_init_t *init)
Definition dma.c:94
void PHAL_DMA_stopTxfer(dma_init_t *init)
Definition dma.c:99
Definition dma.h:17
bool mem_inc
Definition dma.h:26
bool periph_inc
Definition dma.h:27
uint8_t stream_idx
Definition dma.h:33
uint8_t dir
Definition dma.h:25
uint8_t dma_chan_request
Definition dma.h:32
uint32_t mem_addr
Definition dma.h:19
bool increment
Definition dma.h:23
DMA_TypeDef * periph
Definition dma.h:35
uint16_t tx_size
Definition dma.h:20
uint8_t periph_size
Definition dma.h:30
uint32_t periph_addr
Definition dma.h:18
DMA_Stream_TypeDef * stream
Definition dma.h:36
bool circular
Definition dma.h:24
uint8_t priority
Definition dma.h:29
bool mem_to_mem
Definition dma.h:28
bool tx_isr_en
Definition dma.h:31
uint8_t mem_size
Definition dma.h:21