STM32总线架构笔记

前文

本文参考多篇文章进行学习总结,仅用于个人的学习,旨在为他人提供参考和学习,也为了记录自己的学习知识进行总结,并且望有错误之处,请各位技术大佬指出修正,互相进步。如有侵权之处,请马上联系我删除。

学习参考的来源:
原文:https://blog.csdn.net/ivy_reny/article/details/56274412 作者:ivy_reny 来源:CSDN
原文:http://www.elecfans.com/emb/danpianji/20180613694692.html 作者:未知 来源:电子发烧友

1.AMBA

AMBA是一种SOC(System of Chip)总线标准,有AMBA1.0 / 2.0 /3.0标准。
利用AMBA定义的一款总线架构:
AHB (Advanced High-performance Bus) 高级高性能总线
ASB (Advanced System Bus) 高级系统总线
APB (Advanced Peripheral Bus) 高级外围总线
AXI (Advanced eXtensible Interface) 高级可拓展接口

其中 AHB速度高,可连接芯片,或者搭载快速高效率的模块如内存,DMA。
APB频率较低,可由AHB经BUS-BRIDGE桥接而来,常用于搭载较低速度需求的外围设备,被称为外围总线。
AXI:属于AMBA3.0标准的产物,其中STM32F7中就采用了AXI总线,相对于AHB不仅频率高,数据宽度范围广和大,且数据和地址通道分离。

2.总线的作用

芯片的读取模块、内存操作、模块间的通信等,是通过总线来完成的。
其中:
地址总线:可用来传输地址值
数据总线:可用来传输数据值
STM32总线架构笔记_第1张图片
如图设备A和设备B通信,A发送数据到总线上,B可以通过总线读取A数据。
可以看出A设备和B设备属于同一条总线,可以对数据和地址直接解读。
那么如果多个设备都属于同条总线,如何区分不同设备数据是否接收?
不知是否可以认为是通过数据和地址的结合来识别是哪个设备间的通信。

STM32总线架构笔记_第2张图片
如图是AB在同一条总线上,CD是另一条总线上,那么如果A/B要和C/D通信呢?地址和数据是否可以直接解读?
不可以,需要一个总线桥接充当翻译。

STM32总线架构笔记_第3张图片
如图m3中的总线架构。
M3内核中FLASH和SRAM(Optional)部分由指令总线/数据总线 经 总线矩阵连接到内核,而AHB与内核间的联系属于系统总线,AHB总线上有SRAM,外部内存控制器等其他设备,最后可看出经AHB—APB桥接到APB总线,而APB上搭了其他的外设如IO、UART。。。。

3. M7总线架构

STM32总线架构笔记_第4张图片
M7总线架构可分为多个域:D0/D1/D2域。
其中
STM32总线架构笔记_第5张图片
ASIBs:从接口,用来连接主设备
AMIBs:主接口,用来连接从设备
主设备如CPU/DMA/LTDC,可进行启动总线操作,即实际的读写操作;而该响应该操作的就是从设备,也就是主设备可访问从设备。
以D1域为例可看出:
从设备为AHB3/FLASHA等,主设备为LTDC,DMA2D等。

访问权限: 主设备可访问从设备
如:
D1域的DMA2D 可经过 64矩阵 访问 FLASHA;
D2域的USB1 可经过 AHB矩阵访问 SRAM1;
D1域的DMA2D 可经过 D1-TO-D2 AHB BUS访问D2域的主设备;
D2域的DMA2 可经过 D1-TO-D2 AHB BUS访问D1域的主设备;
(具体方法要看矩阵里面的点表示连接,且记住主设备访问从设备)

3.1 矩阵

矩阵的作用是按照访问关系将主从设备间连接起来。
因此,多个从设备可以类似于并行地访问主设备,例如当多个从设备访问一个主设备时,那么如何工作?
一个时刻只能有一个从设备访问主设备,因此当多个从设备访问同一个主设备时需要有优先级的参与。
矩阵内部有仲裁器,可根据优先级对每个从设备进行优先级判断来操作。

你可能感兴趣的:(其他)