说明:
这个知识点非常重要,放在前面说明
使用DMA的FIFO和突发,务必要慎重又慎重,一般的外设直接关闭即可。因为DMA使用时要注意的事项太多太多。
下面是简单的主要内容整理:
1、FIFO禁止模式,即官方手册里面所说的直接模式,务必要保证外设数据宽度和内存数据宽度是一样的,而且这个模式不支持突发,即使配置了,也是无效的。另外这个模式不可用于存储器到存储器的数据传输。
2、FIFO使能模式,这种模式是配置突发模式一起搞的,使用时一定要谨慎再谨慎,各种注意事项。(使能FIFO,不使用突发模式也是可以的,这点要注意)。
3、FIFO的主要目的就是为了解决源和目的数据宽度不同而搞的,仅仅16字节大小,所以缓冲的目的并不大,另外就是配合下突发模式。
4、独立的源和目标传输宽度(字节、半字、字):源和目标的数据宽度不相等时, DMA 自动封装/解封必要的传输数据来优化带宽。这个特性仅在 FIFO 模式下可用。这个特性非常重要,在H7和F4的SDIO操作时可以用。无需像F1系列那样强行数据缓冲的4字节对齐要求。
==============================================================================
##### DMA1和DM2特性 #####
==============================================================================
1、由于总线矩阵的存在,各个主控的道路四通八达,从而可以让DMA和CPU同时开工,但是注意一点,如果他们同时访问的同一个外设,会有一点性能影响的。
2、DMA1和DMA2都有个8个Stream,也就是输入,而每个Stream有115个触发源可供选择,详情可以看此贴:http://www.armbbs.cn/forum.php?mod=viewthread&tid=88811
3、DMA1和DMA2都支持硬件FIFO和双缓冲配置。
4、DMA的优先级可通过软件配置,支持very high, high, medium, low四个等级,如果配置的优先级相同,则由Stream的序号决定,Stream0最高,Stream7最低。
5、DMA的传输数据项目数可以有DMA流控制决定,也就是大家配置可传输的项目数,范围1-65525(单位可以是字节,半字和字)。也可以有外设流控制决定,比如SDIO。
6、源地址和目的地址的数据宽度可以不同,但是必须要开启DMA的FIFO功能。
7、DMA主要有两种模式,一个是Normal正常模式,传输一次后就停止传输;另一种是Circular循环模式,会一直循环的传输下去,即使有DMA中断,传输也是一直在进行的。
8、支持 4 个、 8 个和 16 个节拍的增量突发传输。突发增量的大小可由软件配置,通常等于外设 FIFO 大小的一半。
1、外设到存储器的DMA传输
1.png (58.82 KB, 下载次数: 0)
下载附件
2018-8-4 16:26 上传 |