37_Static_assert((
sizeof(
struct DMAStreamRegs)) == (
sizeof(uint32_t) * 6U),
38 "DMA Sx register struct size mismatch. Is it aligned?");
51_Static_assert((
sizeof(
struct DMARegs)) ==
52 (
sizeof(uint32_t) * (4U + (6U * 8U))),
53 "DMA register struct size mismatch. Is it aligned?");
55#define DMA(x) (struct DMARegs *)(DMA1_BASE + (x * 0x400UL))
61 volatile _Bool Circular : 1;
62 volatile _Bool DoubleBuffer : 1;
63 volatile _Bool PerIncrement : 1;
64 volatile _Bool MemIncrement : 1;
65 volatile _Bool PerFlowCtrl : 1;
68_Static_assert((
sizeof(
struct DMAStreamConfig)) == (
sizeof(uint8_t) * 1U),
69 "DMA Stream config struct size mismatch. Is it aligned?");
75 volatile _Bool HTI : 1;
76 volatile _Bool TCI : 1;
77 volatile _Bool TEI : 1;
78 volatile _Bool FEI : 1;
79 volatile _Bool DMEI : 1;
82_Static_assert((
sizeof(
struct DMAStreamISR)) == (
sizeof(uint8_t) * 1U),
83 "DMA Stream Interrupt struct size mismatch. Is it aligned?");
98 DMA_DIR_PER2MEM = 0x00,
99 DMA_DIR_MEM2PER = 0x01,
100 DMA_DIR_MEM2MEM = 0x02
107 DMA_DATASIZE_BYTE = 0x00,
108 DMA_DATASIZE_HWRD = 0x01,
109 DMA_DATASIZE_WORD = 0x02
116 DMA_PRIORITY_LOW = 0x00,
117 DMA_PRIORITY_MED = 0x01,
118 DMA_PRIORITY_HIG = 0x02,
119 DMA_PRIORITY_VHI = 0x03
136 const uint32_t PA,
const uint32_t M0A,
Defines used commonly in most files.
enum dma_datasize dma_datasize_t
Available DMA data sizes.
dma_dir
Available DMA directions.
Definition dma.h:97
void dma_set_direction(const dma_peripheral_t dma, const uint8_t stream, const dma_dir_t direction)
Set DMA transfers to the desired direction.
Definition dma.c:81
void dma_configure_stream(const dma_peripheral_t dma, const uint8_t stream, const struct DMAStreamConfig config)
Set DMA stream to the specified configuration.
Definition dma.c:105
enum dma_peripheral dma_peripheral_t
Available DMA peripherals.
void dma_configure_data(const dma_peripheral_t dma, const uint8_t stream, const uint16_t count, const dma_datasize_t msize, const dma_datasize_t psize)
Set DMA transfers to specified configuration.
Definition dma.c:43
void dma_set_channel(const dma_peripheral_t dma, const uint8_t stream, const uint8_t channel, const dma_priority_t priority)
Set the DMA stream channel and priority.
Definition dma.c:126
dma_datasize
Available DMA data sizes.
Definition dma.h:106
enum dma_priority dma_priority_t
Available DMA priorities.
void dma_disable(const dma_peripheral_t dma, const uint8_t stream)
Disables DMA stream transfers.
Definition dma.c:196
enum dma_dir dma_dir_t
Available DMA directions.
dma_priority
Available DMA priorities.
Definition dma.h:115
void dma_enable(const dma_peripheral_t dma, const uint8_t stream)
Enables DMA stream transfers.
Definition dma.c:185
void dma_set_interrupts(const dma_peripheral_t dma, const uint8_t stream, const struct DMAStreamISR config)
Enabled the specified DMA stream interrupts.
Definition dma.c:158
dma_peripheral
Available DMA peripherals.
Definition dma.h:89
void dma_set_addresses(const dma_peripheral_t dma, const uint8_t stream, const uint32_t PA, const uint32_t M0A, const uint32_t M1A)
Set the DMA source and destination addresses.
Definition dma.c:28
CMSIS device header stubs.
Contains DMA registers.
Definition dma.h:43
Contains DMA stream options.
Definition dma.h:60
Contains DMA stream interrupt configuration.
Definition dma.h:74
Contains DMA stream registers.
Definition dma.h:28