modm API documentation
|
#include <modm/platform/dma/dma_hal.hpp>
Public Typedefs | |
using | IrqHandler = void (*)(void) |
Public Types | |
enum | Channel { Channel1 = 0, Channel2, Channel3, Channel4, Channel5, Channel6, Channel7 } |
enum | CircularMode : uint32_t { Disabled = 0, CircularMode::Enabled = DMA_CCR_CIRC } |
enum | DataTransferDirection : uint32_t { DataTransferDirection::PeripheralToMemory = 0, DataTransferDirection::MemoryToPeripheral = DMA_CCR_DIR, DataTransferDirection::MemoryToMemory = DMA_CCR_MEM2MEM } |
enum | InterruptEnable : uint32_t { TransferComplete = DMA_CCR_TCIE, HalfTransfer = DMA_CCR_HTIE, TransferError = DMA_CCR_TEIE } |
enum | InterruptFlags : uint8_t { Global = 0b0001, TransferComplete = 0b0010, HalfTransferComplete = 0b0100, Error = 0b1000, All = 0b1111 } |
enum | MemoryDataSize : uint32_t { Byte = 0, Bit8 = Byte, HalfWord = DMA_CCR_MSIZE_0, Bit16 = HalfWord, Word = DMA_CCR_MSIZE_1, Bit32 = Word } |
enum | MemoryIncrementMode : uint32_t { Fixed = 0, MemoryIncrementMode::Increment = DMA_CCR_MINC } |
enum | PeripheralDataSize : uint32_t { Byte = 0, Bit8 = Byte, HalfWord = DMA_CCR_PSIZE_0, Bit16 = HalfWord, Word = DMA_CCR_PSIZE_1, Bit32 = Word } |
enum | PeripheralIncrementMode : uint32_t { Fixed = 0, PeripheralIncrementMode::Increment = DMA_CCR_PINC } |
enum | Priority : uint32_t { Low = 0, Medium = DMA_CCR_PL_0, High = DMA_CCR_PL_1, VeryHigh = DMA_CCR_PL_1 | DMA_CCR_PL_0 } |
enum | Request { None = 0, Request1, Request2, Request3, Request4, Request5, Request6, Request7, Request8, Request9, Request10, Request11, Request12, Request13, Request14, Request15, Request16, Request17, Request18, Request19, Request20, Request21, Request22, Request23, Request24, Request25, Request26, Request27, Request28, Request29, Request30, Request31, Request32, Request33, Request34, Request35, Request36, Request37, Request38, Request39, Request40, Request41, Request42, Request43, Request44, Request45, Request46, Request47, Request48, Request49, Request50, Request51, Request52, Request53, Request54, Request55, Request56, Request57, Request58, Request59, Request60, Request61 } |
enum | Signal : uint8_t { NoSignal, Ch1, Ch2, Ch3, Ch4, Generator0, Generator1, Generator2, Generator3, Rx, Trig, Trig_com, Tx, Up } |
Public Member Functions | |
MODM_FLAGS32 (InterruptEnable) | |
MODM_FLAGS32 (InterruptFlags) | |
Static Public Member Functions | |
static void | configure (DataTransferDirection direction, MemoryDataSize memoryDataSize, PeripheralDataSize peripheralDataSize, MemoryIncrementMode memoryIncrement, PeripheralIncrementMode peripheralIncrement, Priority priority=Priority::Medium, CircularMode circularMode=CircularMode::Disabled) |
static void | start () |
static void | stop () |
static DataTransferDirection | getDataTransferDirection () |
static void | setMemoryAddress (uintptr_t address) |
static void | setPeripheralAddress (uintptr_t address) |
static void | setMemoryIncrementMode (bool increment) |
static void | setPeripheralIncrementMode (bool increment) |
static void | setDataLength (std::size_t length) |
static void | enableInterrupt (InterruptEnable_t irq) |
static void | disableInterrupt (InterruptEnable_t irq) |
Static Protected Attributes | |
static constexpr uint32_t | configmask |
static constexpr uint32_t | memoryMask |
static constexpr uint32_t | peripheralMask |
Hardware abstraction layer of a DMA channel
ChannelID | the ID of the channel |
CHANNEL_BASE | base address of the channel registers |
|
inheritedstrong |
|
inheritedstrong |
|
inheritedstrong |
In direct mode (if the FIFO is not used) MSIZE is forced by hardware to the same value as PSIZE
|
inheritedstrong |
Enum Values | Documentation |
---|---|
Increment | incremented according to MemoryDataSize |
|
inheritedstrong |
|
inheritedstrong |
Peripheral signals that can be used in DMA channels
|
inlinestatic |
Configure the DMA channel (HAL)
Stops the DMA channel and writes the new values to its control register.
[in] | direction | Direction of the DMA channel |
[in] | memoryDataSize | Size of data in memory (byte, halfword, word) |
[in] | peripheralDataSize | Size of data in peripheral (byte, halfword, word) |
[in] | memoryIncrement | Defines whether the memory address is incremented after a transfer completed |
[in] | peripheralIncrement | Defines whether the peripheral address is incremented after a transfer completed |
[in] | priority | Priority of the DMA channel |
[in] | circularMode | Transfer data in circular mode? |
|
inlinestatic |
Disable IRQ of this DMA channel (e.g. transfer complete or error)
|
inlinestatic |
Enable IRQ of this DMA channel (e.g. transfer complete or error)
|
static |
Get the direction of the data transfer
|
inlinestatic |
Set length of data to transfer
|
inlinestatic |
Set the memory address of the DMA channel
[in] | address | Source address |
|
inlinestatic |
Enable/disable memory increment
When enabled, the memory address is incremented by the size of the data (e.g. 1 for byte transfers, 4 for word transfers) after the transfer completed.
[in] | increment | Enable/disable |
|
inlinestatic |
Set the peripheral address of the DMA channel
[in] | address | Destination address |
|
inlinestatic |
Enable/disable peripheral increment
When enabled, the peripheral address is incremented by the size of the data (e.g. 1 for byte transfers, 4 for word transfers) after the transfer completed.
[in] | increment | Enable/disable |
|
static |
Start the transfer of the DMA channel
|
static |
Stop a DMA channel transfer
|
inheritedstaticprotectedconstexpr |
|
inheritedstaticprotectedconstexpr |
|
inheritedstaticprotectedconstexpr |