【前言】
串口接收/发送有三种模式:中断、轮询、DMA,轮询方式并不推荐,也不经常使用,在之前的博客中已经介绍了中断模式,在此次博客中主要介绍DMA的基本原理以及通过DMA发送数据
目录
一、DMA基本原理
1.DMA概念
直接存储器访问 (DMA)
:用于在外设与存储器之间以及存储器与存储器之间进行高速数据传输。DMA传输过程的初始化和启动由CPU完成,传输过程由DMA控制器来执行,无需CPU参与,从而节省CPU资源,提高利用率
2.DMA数据传输的四个要素
① 传输源 :DMA数据传输的来源
② 传输目标:DMA数据传输的目的
③ 传输数量:DMA传输数据的数量
④ 触发信号:启动一次DMA数据传输的动作
3.DMA数据传输方式
🎐普通模式
传输结束
后(即要传输数据的数量达到零),将不再产生
DMA操作。若开始新的DMA传输,需在关闭DMA通道情况下,重新启动
DMA传输。
🎐循环模式
可用于处理环形缓冲区和连续数据流(例如ADC扫描模式)。当激活循环模式后,每轮传输结束时,要传输的数据数量将自动用设置的初始值进行加载, 并继续响应
DMA请求。
4.两类DMA传输结构
🎐寄存器模式
在基于寄存器的DMA内部,处理器直接对DMA控制寄存器进行编程,来启动传输。
基于寄存器
的DMA由两种子模式组成:自动缓冲(Autobuffer)模式
和停止模式
。
在自动缓冲DMA中,当一个传输块传输完毕,控制寄存器就自动重新载入其最初的设定值,同一个DMA进程重新启动,开销为零。自动缓冲DMA特别适合于对性能敏感的、存在持续数据流的应用。DMA控制器可以在独立于处理器其他活动的情况下读入数据流,然后在每次传输结束时,向内核发出中断。
停止模式的工作方式与自动缓冲DMA类似,区别在于各寄存器在DMA结束后不会重新载入,因 此整个DMA传输只发生一次。停止模式对于基于某种事件的一次性传输来说十分有用。例如,非定期地将数据块从一个位置转移到另一个位置。
🎐描述符模式