源和目标地址必须按数据传输宽度对齐
支持循环的缓冲器管理
可编程的数据传输数目:最大为65536
每一个通道都有一组寄存器
DMA_CPARx、DMA_CMARx是没有差别的,它们都可以存放外设的地址、内存的地址。只是名字取的不一样而已。
DMA的工作特点:
DMA进行数据传输的必要条件:
1.剩余传输数据量大于0
2.DMA传输通道使能
3.通道上DMA数据传输有事件请求
- 外设到xx方向的传输:
- 假设是ADC到存储器的数据传输,显然是ADC的DMA传输的源地址是ADC的数据寄存器,并不是说只要DMA通道传输使能后,就立即进行数据传输。只有当一次ADC转化完成,ADC的DMA通道的传输时件才有效,DMA才会从ADC的数据寄存器读出数据,写入目的地址。当DMA在读取ADC的数据寄存器时,同时使ADC的DMA通道传输事件无效。显然,必须等到下一次ADC转换完成后,才能启动再一次的数据传输。
- 存储器对xx的访问:
- 因为数据是直接准备好的,不像ADC还需要等待数据到位。所以,不需要对应通道的事件。只要使能DMA数据传输就移植传输,直到达到设定的传输量。
当外设以DMA方式进行正在数据传输时,不可能再响应cpu的软件控制命令。
DMA传输对于高效能 嵌入式系统 算法和网络是很重要的
在实现DMA传输时,是由DMA控制器直接掌管总线,因此,存在这一个总线控制权的转移问题。
DMA的传输涉及到的几个基本的术语:
event:事件,触发控制器启动或停止DMA传输的操作
Transaction:事务,单子传输(最多可以到4个字节),由读和写组成
Cell transfer:元传输,单次共DCHXCSIZE个字节的数据传输,元传输由单个或多个事务组成。
Block tansfer:块传输,块传输总的字节数由DCHXSSIZ或DCHXDSIZ决定。块传输由单个或多个元传输组成。
事件是触发DMA控制器产生动作的方式,分为,START EVENT->启动传输,ABORT EVENT->取消传输,STOP EVENT->停止传输。
一般而言,DMA控制器包括一条地址总线,一条数据总线,和控制寄存器。
每个DMA控制器都有一组FIFO,起到DMA子系统和外设或存储器之间的缓冲器的作用。传输的源端和目标端都有一组FIFO存在。当资源紧张而不能完胜数据传输的话,则FIFO可以提供数据的暂存区,从而提高性能。