一直没有好好的捣鼓过DMA,在调BLE项目的时候,遇到了DMA串口传输的问题,伤心流涕甚长时间!!!
DMA 网上的解释一大堆,简单总结一下:
DMA 处理过程全部是由硬件来实现的,速度很快!
DMA 在专门的DMA控制下,实现高速外设与主存储期之间自动成批量的数据交换。
通常有两种交换方式:1 独占总线方式 2 周期挪用方式
DMA 传送过程
DMA 预处理
DMA 数据传送
DMA 结束处理 将总线控制权交换给CPU
DMA 内部寄存器
地址寄存器 : 存放DMA传输是储存单元地址
字节寄存器 : 存放DMA 传输字节数
控制寄存器 : 存放CPU 设定的DMA传输方式
状态寄存器 : 存放DMAC当前的状态
DMA 外设地址 : 基地址 + 偏移地址
两种方法设定地址:
#define USART1_DR_Base 0x40013804<

本文探讨了在STM32中使用DMA进行串口传输的过程,强调了DMA的高速特性和两种数据交换方式。介绍了DMA的预处理、数据传送和结束处理阶段,以及相关寄存器的作用。通过示例展示了如何配置DMA通道进行串口接收和发送,并提到了不同中断触发方式。文章最后提供了简单的DMA串口收发函数,但指出未涉及FIFO精确收发的进一步处理。

293

被折叠的 条评论
为什么被折叠?



