硬件连接
软件实现
软件代码见 examples/dma/dma_m2m
使能 BSP_USING_DMA0_CH0 并配置 DMA 设备配置,见 bsp/board/bl706_iot/peripheral_config.h
首先调用 dma_register 函数注册 DMA 设备的一个通道,当前注册 DMA_CH0
然后通过 find 函数找到设备对应的句柄,保存于 dma_ch0 句柄中
最后使用 device_open 以默认模式来打开 dma_ch0 设备,调用 device_set_callback 注册一个 dma 通道0中断回调函数,调用 device_control 开启dma传输完成中断
调用 dma_reload 函数对 dma 通道0的配置进行补充,DMA0_CH0_CONFIG 中已经补充了一部分配置,这边主要补充源数据地址和目标数据地址以及传输总长度
调用 dma_channel_start 开启 dma 传输
在中断函数中判断数据传输是否正确
编译和烧录
CDK 编译
打开项目中提供的工程文件:dma_m2m.cdkproj
参照 Windows 下使用 CDK (类 MDK Keil)开发指南 的步骤编译下载即可
命令行编译
烧录
详见 BLDevCube 烧录工具指南
实验现象
dma_src_buffer 数组中的数据通过 DMA 通道 0 ,以源 32 位宽、目标 32 位宽传输到 dma_dst_buffer 数组中,数据传输完成并完整,串口打印 dma transfer success。
原作者:BL_MCU_SDK 开发指南
|