SAM4E Direct Memory Access Controller driver example.
Copyright (c) 2012-2018 Microchip Technology Inc. and its subsidiaries.
Macros | |
#define | DMA_BUF_SIZE 32 |
[dmac_define_channel] More... | |
#define | DMA_CH 0 |
[dmac_define_channel] More... | |
Functions | |
static void | configure_console (void) |
Configure the console UART. More... | |
void | DMAC_Handler (void) |
DMAC interrupt handler. More... | |
int | main (void) |
Application entry point. More... | |
static void | test_multi_buf_xfer (void) |
Test DMA multiple buffer transfer with interrupt mode. More... | |
static void | test_single_buf_xfer (void) |
Test DMA single buffer transfer with polling mode. More... | |
Variables | |
uint32_t | g_dma_buf [6][DMA_BUF_SIZE] |
DMA buffer. More... | |
volatile uint32_t | g_xfer_done = 0 |
[dmac_define_buffer] More... | |
#define DMA_BUF_SIZE 32 |
[dmac_define_channel]
[dmac_define_buffer] DMA buffer size.
Referenced by test_multi_buf_xfer(), and test_single_buf_xfer().
#define DMA_CH 0 |
[dmac_define_channel]
DMA channel used in this example.
Referenced by DMAC_Handler(), test_multi_buf_xfer(), and test_single_buf_xfer().
|
static |
Configure the console UART.
References uart_rs232_options::baudrate, stdio_serial_init(), and sysclk_enable_peripheral_clock().
Referenced by main().
void DMAC_Handler | ( | void | ) |
DMAC interrupt handler.
References DMA_CH, dmac_get_status(), and g_xfer_done.
int main | ( | void | ) |
Application entry point.
References board_init(), BOARD_NAME, configure_console(), sysclk_init(), test_multi_buf_xfer(), and test_single_buf_xfer().
|
static |
Test DMA multiple buffer transfer with interrupt mode.
References DMA_BUF_SIZE, DMA_CH, dmac_channel_enable(), dmac_channel_multi_buf_transfer_init(), dmac_channel_set_configuration(), dmac_enable(), dmac_enable_interrupt(), dmac_init(), DMAC_PRIORITY_ROUND_ROBIN, dmac_set_priority_mode(), g_dma_buf, g_xfer_done, pmc_enable_periph_clk(), dma_transfer_descriptor_t::ul_ctrlA, dma_transfer_descriptor_t::ul_ctrlB, dma_transfer_descriptor_t::ul_descriptor_addr, dma_transfer_descriptor_t::ul_destination_addr, and dma_transfer_descriptor_t::ul_source_addr.
Referenced by main().
|
static |
Test DMA single buffer transfer with polling mode.
[dmac_define_vars]
[dmac_define_vars]
[dmac_define_prepare_buffer]
Initialize DMA buffer
[dmac_define_prepare_buffer]
[dmac_init_clock]
[dmac_init_clock]
[dmac_init_module]
[dmac_init_module]
[dmac_set_priority]
[dmac_set_priority]
[dmac_enable_module]
[dmac_enable_module]
[dmac_configure_channel]
Set for channel configuration register
Enable stop on done
Set AHB Protection
FIFO Configuration
[dmac_configure_channel]
[dmac_configure_for_single_transfer_1]
Initialize single buffer transfer: buffer 0 -> buffer 1
[dmac_configure_for_single_transfer_1]
[dmac_configure_for_single_transfer_2]
[dmac_configure_for_single_transfer_2]
[dmac_configure_for_single_transfer_3]
[dmac_configure_for_single_transfer_3]
[dmac_configure_for_single_transfer_4]
[dmac_configure_for_single_transfer_4]
[dmac_start_transfer]
[dmac_start_transfer] [dmac_wait_for_done]
[dmac_wait_for_done]
References DMA_BUF_SIZE, DMA_CH, dmac_channel_enable(), dmac_channel_is_transfer_done(), dmac_channel_set_configuration(), dmac_channel_single_buf_transfer_init(), dmac_enable(), dmac_init(), DMAC_PRIORITY_ROUND_ROBIN, dmac_set_priority_mode(), g_dma_buf, pmc_enable_periph_clk(), dma_transfer_descriptor_t::ul_ctrlA, dma_transfer_descriptor_t::ul_ctrlB, dma_transfer_descriptor_t::ul_descriptor_addr, dma_transfer_descriptor_t::ul_destination_addr, and dma_transfer_descriptor_t::ul_source_addr.
Referenced by main().
uint32_t g_dma_buf[6][DMA_BUF_SIZE] |
DMA buffer.
Referenced by run_multi_buf_xfer_test(), run_single_buf_xfer_test(), test_multi_buf_xfer(), and test_single_buf_xfer().
volatile uint32_t g_xfer_done = 0 |
[dmac_define_buffer]
Referenced by DMAC_Handler(), run_multi_buf_xfer_test(), and test_multi_buf_xfer().