一、DMA简介
直接存储器访问(DMA)是一种通过专门的DMA控制器实现的数据传输方式,它使得I/O设备可以直接访问系统内存而无需CPU的介入。这种方式在大量数据传输的情况下非常有用,因为它可以显著提高系统的性能。
使用DMA进行数据传输时,CPU只需要初始化DMA控制器,然后就可以继续执行其他任务,而不必在数据传输过程中不断地处理每个数据传输请求。DMA控制器负责管理数据传输的细节,包括地址的增减、数据的读写等,从而减轻了CPU的负担,提高了整个系统的效率。
这种方式特别适用于需要大量数据传输的场景,比如文件读写、网络数据传输等。通过释放CPU资源,DMA在提高系统吞吐量和响应速度方面发挥着关键的作用。
DMA就是基于以上设想设计的,它的作用就是解决大量数据转移过度消耗CPU资源的问题。有了DMA使CPU更专注于更加实用的操作–计算、控制等。
二、 先楫HPM5361EVK的DMA控制器
DMA 控制器的主要特性有:
● 支持 32 个可配置的通道
● 通道支持 2 级优先级配置
● 相同优先级通道使用 Round-Robin 仲裁
● 支持链式连接多个 DMA 任务
DMA 模块中的 dma_apb_csr 为控制寄存器模块,dma_ahb_ahbmst 模块实现了 ahb master 接口,DMA_ahb_engine模块实现了 DMA 操作引擎状态机,dma_ahb_arbiter 和 dma_ahb_chmux 模块实现多路 DMA 请求的仲裁与选择。
DMA结构框图:
DMA管脚说明:
DMA 控制器支持 32 个通道,每个通道都可独立配置数据传输的参数。用户可以同时使用多个 DMA 通道, DMA 控制器会交替执行不同通道的数据传输任务,而不是等待一个通道传输完成后再响应下一个通道的传输请 求。也就是说 DMA 控制器可能分多次完成单个通道的数据传输,在这个通道全部任务完成后,将状态寄存器内 的相应标志位置位。 某个 DMA 通道的数据传输可能因为数据传输错误而中断,也可以由软件中止。此种情况下,DMA 控制器会停止传输数据,并将状态寄存器内的相应标志位置位。
DMA 控制器支持 3 种地址模式:递增模式,递减模式和不变模式。
● 递增模式是指,在 DMA 每次访问源或者目标地址后,DMA 下次访问此次源或者目标之后的地址
● 递减模式是指,在 DMA 每次访问源或者目标地址后,DMA 下次访问此次源或者目标之前的地址
● 不变模式是指,在 DMA 每次访问源或者目标地址后,DMA 下次访问的源或者目标地址固定不变
在源和目标地址的模式配置相同时,DMA 会保持源与目标区数据的字节顺序不变。但是如果源与目标的地址 配置相反,那么源与目标地址间数据的字节顺序也会相反。其中不变模式字节顺序与递增模式相同。
三、开发版实测(串口DMA)
运行结果:
|