DMA
This is my study note of DMA.
DMA基础介绍
DMA全程Direct Memory Access,即直接存储器访问。核心是提供一条数据通路让数据由A拷贝B不经过CPU处理。
传输方向
- 外设到内存
- 内存到外设
- 内存到内存
传输参数
- 数据的源地址
- 数据传输位置的目标地址
- 传递数据多少的数据传输量
- 进行多少次传输的传输模式
优先级
- 很高
- 高
- 中
- 低
DMA传输
- DMA传输时外设对DMA控制器发出请求
- DMA控制器收到请求,触发DNA工作
- DMA控制器从AHB外设获取数据,存储到DMA通道中
- DMA控制器的DMA与总线矩阵协调,使AHB把外设获取到的数据存储到SRAM中,全过程不需要内核参与,不需要CPU的参与
(每次传输执行一次DMA_CNDTRx寄存器的递减操作,该寄存器包含未完成的操作数目)
传输方式
- DMA_Mode_Normal,正常模式
- DMA_Mode_Circular,循环传输模式
(存储器到存储器模式不能与循环模式同时使用)
指针递增
1 | 根据PINC和MINC位的状态,外设和存储器指针在每次传输后可以自动向后递增或保持常量。当设置为增量模式的时候,下一次传输的地址将是前一个地址加上增量值。 |
DMA中断
- 传输过半
- 传输完成
- 传输错误
DMA配置参数
- 通道地址(源地址、目的地址)
- 优先级
- 数据传输方向
- 存储器、外设数据宽度
- 存储器、外设地址是否增量
- 循环模式/正常模式
- 数据传输量
相关寄存器
- DMA_ISR DMA中断状态寄存器
- DMA_IFCR 中断标志清除寄存器
- DMA_CCRX 通道x配置寄存器
- DMA_CNDTRx 通道x传输数量寄存器
- DMA_CPARx 通道x外设地址寄存器
- DMA_CMARx 通道x存储器地址寄存器
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 风声向寂!
评论
ValineDisqus