STM32教程-03-STM32总线矩阵和系统框图

STM32总线矩阵和系统框图

一、STM32F4xxx系统架构

从这张图中,可以看出ARM公司提供了内核和调试系统,而其他的I2C SPI UART 等外设由其他芯片公司设计开发,例如STM32的设计生产者ST公司。

二、总线矩阵

1、什么I总线-指令总线?

功能:下载到 STM32 Flash 中的是程序的二进制镜像(包含指令机器码),Cortex-M 内核的 I-Code(指令)总线是专用于从 Flash(或特殊配置的 SRAM 指令区)读取指令机器码并传递给内核执行的硬件通道,是指令执行的核心数据通路。

特点:1、单向传输,仅从存储器到内核的读操作,不支持从内核写到存储器

2、Flash与i-code总线直接对接,确保指令读取的高速性,不经过总线矩阵,没有总线竞争与延迟

2、什么是D总线-数据总线?

功能:从存储器(Flash的常量或者RAM的变量)中读取内核专属的数据

特点:1、单向传输,仅从存储器到内核的读操作,不支持从内核写到存储器

2、与Flash的DCODE总线,CCMRAM直接对接,不经过总线矩阵,没有总线竞争与延迟

3、仅服务内核,DMA 等其他主设备无法访问其路径。

3、什么是S总线-系统总线?

功能:实现内核与外设的双向交互,相比上面2个总线,s总线是可读可写的

特点:1、双向传输(支持 "内核→外设 / 存储" 写操作、"外设 / 存储→内核" 读操作);

2、通过总线矩阵的 S2 端口接入,需参与总线仲裁(可能存在延迟);

3、是内核与外部设备交互的 "通用通道"。

4、i-d-s总线是怎么配合使用的?

1、stm32上电开机,内核开始读取存储器中的二进制代码,i总线开始调用存储器中的指令。

2、I 总线:从 Flash 读取GPIO_Init()和USART_ReceiveData()的指令代码

3、D 总线:从 Flash 读取GPIO_InitTypeDef结构体中的默认配置常量,学过C语言可知,常量在只读存储区中

3、S 总线:向 GPIO 寄存器写入配置值(完成 GPIO 初始化);

从 USART 接收寄存器读取数据,并写入普通 SRAM;

4、D 总线:从普通 SRAM 中读取该数据(若数据需内核进一步处理)。

STM32F4系列的总线架构比51单片机要强大的多,STM32F4系列总线架构的知识在这里只作为初步了解即可。

2、总线矩阵分析

看上图说明在STM32F4XXX的总线系统架构图中,图中交叉的矩形为总线矩阵S,在总线矩阵的上方为主设备端口,右侧方为从设备端口。

1、什么是总线矩阵?

总线矩阵是一个让多设备可以同时访问多个从设备,避免总线阻塞,提升带宽利用率。

一句话理解总线矩阵:STM32 里不是所有外设抢一条路,而是有多条高速公路同时工作。

2、什么主设备?

主设备是ARM Cortex-M4(内核)、DMA1、DMA2、以太网MAC、USB OTG HS,他们具备"主动发起访问请求的能力 ",可以通过总线矩阵的从端口(S0-S7)接入总线矩阵。

例如:Cortex-M4 内核通过 I/D/S 总线发起指令 / 数据 / 外设访问;DMA1 通过DMA_PI端口发起数据传输请求。

3、什么是从设备

图右侧的Flash、SRAM1/2/3、AHB2外设、AHB1外设、FSMC都是从设备------ 它们只能 "被动响应主设备的访问请求 ",通过总线矩阵的主端口(M0-M7) 接入总线矩阵。

例如:Flash 等待内核通过 I/D 总线读取指令 / 数据;AHB1 外设(如 GPIO)等待内核通过 S 总线配置寄存器。

4、主从设备的判断标准?

判断主从设备的关键不是位置(上方或者右侧)而是是否具备主动发起访问请求的能力。

主设备:能主动发送"读写请求。

从设备:只能被动接受并响应请求。

5、举例子:内核是怎么控制AHB1外设GPIO的

内核->S总线(系统总线)->总线矩阵S2->总线矩阵M5端口->AHB1外设->GPIOX

三、系统框图

这幅图我们切开来看,先看上半部分的内核部分:

从图中可以看出在总线矩阵的左边,一一对应着主设备也就是可以发起访问的设备,总线矩阵的右侧挂载着从设备

三条高速总线矩阵 AHB1-3也挂载在总线矩阵上。

但是总线矩阵上没有AHB3啊?其实AHB3就是总线矩阵上的M6端口。

从图中可以看出,这个是APB桥,AHB-to-APB Bridge

图中这2个方框中有:AHB/APB1 或者 AHB/APB2,在ARM体系中,一侧是AHB接口,另一侧是APB接口,而桥的本质是协议转换器。.

注意GPIO直接挂载在AHB总线上,而不是APB1总线。

2、当 Cortex-M 内核访问"普通外设寄存器"时,典型路径是:

Cortex-M 内核

System Bus(S-Bus)

AHB 总线矩阵(Bus Matrix)

AHB1 总线

APB 桥

APB1 或 APB2

具体外设(GPIO / TIM / USART / I2C ...)

相关推荐
平生不喜凡桃李14 小时前
Leetcode-240 :搜索二维矩阵
leetcode·矩阵·深度优先
Zeku14 小时前
20260103 - Linux总线设备驱动模型学习笔记
stm32·freertos·linux驱动开发·linux应用开发
曾浩轩14 小时前
跟着江协科技学STM32之4-2OLED显示屏
c语言·stm32·单片机·嵌入式硬件·学习
QK_001 天前
STM32--ADC
stm32·单片机·嵌入式硬件
郑同学的笔记1 天前
【Eigen教程02】深入Eigen矩阵引擎:模板参数、内存布局与基础操作指南
c++·线性代数·矩阵·eigen
一路往蓝-Anbo1 天前
STM32单线串口通讯实战(五):RTOS架构 —— 线程安全与零拷贝设计
c语言·开发语言·stm32·单片机·嵌入式硬件·观察者模式·链表
向阳逐梦1 天前
电路结构分析之半桥驱动、自举电路
单片机·嵌入式硬件
不染尘.1 天前
操作系统发展史和常见习题汇总
arm开发·嵌入式硬件·draw.io
清风6666661 天前
基于单片机的智能感应式汽车雨刮器控制系统设计
单片机·嵌入式硬件·汽车·毕业设计·课程设计·期末大作业