I am 鼎!
上一篇解释了DMA的优势DMA架构解析1
现在分析DMA的硬件架构:
分析思路:先整体,后局部,在细分。
A:先从系统架构层面看:
![00aa23357bb2e1a5fd0630480dc96fab.png](https://i-blog.csdnimg.cn/blog_migrate/822acd8f339c92b3492d6f5ecd2ec885.jpeg)
总线矩阵
上图是系统的总线矩阵,红色圈里面的内容是和DMA相关的部分。下图是局部放大图
![c0f9ba2603300c4dee4dffee593662fc.png](https://i-blog.csdnimg.cn/blog_migrate/dd402e4019699f5010fc1ac051dac594.jpeg)
内容解释:
S3、 S4: DMA 存储器总线
此总线用于将 DMA 存储器总线主接口连接到总线矩阵。 DMA 通过此总线来执行存储器数据的传入和传出。此总线访问的对象是数据存储器:内部 SRAM(112 KB、 64 KB、 16 KB)以及通过 FSMC 的外部存储器。
S5: DMA 外设总线
此总线用于将 DMA 外设主总线接口连接到总线矩阵。 DMA 通过此总线访问 AHB 外设或执行存储器间的数据传输。此总线访问的对象是 AHB 和 APB 外设以及数据存储器:内部SRAM 以及通过 FSMC 的外部存储器
总线矩阵用于主控总线之间的访问仲裁管理。仲裁采用循环调度算法。
DMA它可以执行下列事务:
● 外设到存储器的传输。
● 存储器到外设的传输。
● 存储器到存储器的传输。
要想实现这三种事务,那必须同时有访问到外设,存储器的权限,很明显,总线矩阵才有这个权限!
官方:DMA控制器是采用AHB主总线, 它可以控制AHB总线矩阵来启动AHB事务。
总结:以上的内容是不是看的眼花缭乱,言而总之,就是告诉你DMA为什么能,其实只要记得一点结论:DMA可以访问外设和存储器就OK了!
下面进一步,DMA怎么访问外设和储存器
![2f957bf1a46664b74f0be887c91daf41.png](https://i-blog.csdnimg.cn/blog_migrate/ea0f40c7b920f74a9978032298022537.jpeg)
DMA详图
在上面这张图,我们可以详细看到DMA是怎么通过总线矩阵连接外设和存储器的,我们可以这么总结:
- STM32F407一共有两个DMA控制器,DMA1和DMA2。
- DMA2的存储器端口和外设端口都是连接到AHB总线矩阵,可以使用AHB总线矩阵功能。DMA2存储器和外设端口可以访问相关的内存地址, 包括有内部Flash、 内部SRAM、 AHB1外设、 AHB2外设、 APB2外设和外部存储器空间。
- DMA1的 存储 区 端口相比DMA2的要减少AHB2外设的访问权, 同时DMA1外设端口是没有连接至总线矩阵的, 只有连接到APB1外设, 所以DMA1不能实现存储器到存储器传输。
那么,这一部分可以一言以代之:DMA2可以完成存储器-存储器,存储器到外设,外设-存储器的数据传输,而DMA1只能进行进行存储器-外设,外设-存储器的传输,DMA2功能比DMA1强大,记住这些就OK了!
下一节,我们继续分析DMA控制器内部的架构!