microHAL
An abstraction layer for your future F4xx projects
Loading...
Searching...
No Matches
dma.c File Reference

Function defines the DMA driver. More...

#include "dma.h"

Functions

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.
 
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.
 
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.
 
void dma_configure_stream (const dma_peripheral_t dma, const uint8_t stream, const struct DMAStreamConfig config)
 Set DMA stream to the specified configuration.
 
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.
 
void dma_set_interrupts (const dma_peripheral_t dma, const uint8_t stream, const struct DMAStreamISR config)
 Enabled the specified DMA stream interrupts.
 
void dma_enable (const dma_peripheral_t dma, const uint8_t stream)
 Enables DMA stream transfers.
 
void dma_disable (const dma_peripheral_t dma, const uint8_t stream)
 Disables DMA stream transfers.
 

Detailed Description

Function defines the DMA driver.

This file contains all of the function definitions declared in dma.h.

Author
Vasileios Ch. (BillisC)
Bug
There is a case where DMA1 clears EN SxCR bit when the peripheral address is USART2 DR. There is no workaround at the moment (is it errata?).

Function Documentation

◆ dma_configure_data()

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.

The DMA datasizes are specified in the dma_datasize_t enum. Any other value will be ignored.

Parameters
dmaThe selected DMA
streamThe selected stream (0..7)
countThe total number of data items
msizeThe size of data stored in memory
psizeThe size of data stored in the peripheral
Returns
None

◆ dma_configure_stream()

void dma_configure_stream ( const dma_peripheral_t dma,
const uint8_t stream,
const struct DMAStreamConfig config )

Set DMA stream to the specified configuration.

The DMA stream options are specified in the DMAStreamConfig struct.

Parameters
dmaThe selected DMA
streamThe selected stream (0..7)
configThe stream configuration
Returns
None

◆ dma_disable()

void dma_disable ( const dma_peripheral_t dma,
const uint8_t stream )

Disables DMA stream transfers.

Parameters
dmaThe selected DMA
streamThe selected stream (0..7)
Returns
None

◆ dma_enable()

void dma_enable ( const dma_peripheral_t dma,
const uint8_t stream )

Enables DMA stream transfers.

Parameters
dmaThe selected DMA
streamThe selected stream (0..7)
Returns
None

◆ dma_set_addresses()

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.

Usually only the peripheral and M0 addresses are needed. In that case you shall set M1A to zero.

Parameters
dmaThe selected DMA
streamThe selected stream (0..7)
PAThe peripheral address
M0AThe memory 0 address
M1AThe memory 1 address
Returns
None

◆ dma_set_channel()

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.

The DMA priority levels are specified in the dma_priority_t enum. Any other value will be ignored. Refer to the chip's manual for the channel function matrix.

Parameters
dmaThe selected DMA
streamThe selected stream (0..7)
channelThe selected channel (0..7)
priorityThe stream priority level
Returns
None

◆ dma_set_direction()

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.

The DMA directions are specified in the dma_dir_t enum. Any other value will be ignored. After that set the addresses according to the chip's manual.

Parameters
dmaThe selected DMA
streamThe selected stream (0..7)
directionThe transfer direction
Returns
None

◆ dma_set_interrupts()

void dma_set_interrupts ( const dma_peripheral_t dma,
const uint8_t stream,
const struct DMAStreamISR config )

Enabled the specified DMA stream interrupts.

The available DMA interrupts are located in the DMAStreamISR struct.

Parameters
dmaThe selected DMA
streamThe selected stream (0..7)
configThe interrupt configuration
Returns
None