本文是对最近学习过程中的对stm32单片机系统构架的总结,本文分别以使用过的stm32F103,stm32F407与stm32F030这三种型号的单片机进行总结:
一、首先是介绍stm32f103的系统架构:
从图1中可以看出STM32采用的是哈弗结构,即数据总线与指令总线分开的结构。这样的结构可以使数据访问与取指令操作同时进行。
以下分别介绍,各个总线主控总线:
ICode总线将Cortex-M3的内核指令总线与闪存指令接口相连接,实现指令的预取功能。
DCode总线将Cortex-M3的内核数据总线与闪存存储器的数据接口相连接(用于常量加载与调试访问)
System系统总线连接着Cortex-M3内核的系统总线(外设总线)与总线矩阵。总线矩阵协调着内核和DMA间的访问。
DMA总线将DMA的AHB主控接口与总线矩阵相联,总线矩阵协调着CPU的DCode和DMA到SRAM、闪存和外设的访问。
总线矩阵协调内核系统总线和DMA主控总线之间的访问仲裁,仲裁利用轮换算法。AHB外设通过总线矩阵与系统总线相连,允许DMA访问。
从图中可以看出AHB外设总线有又桥接了APB1与APB2在于外设相连接。两个AHB/APB桥在AHB和2个APB总线间提供同步连接。APB1操作速度限于36MHz,APB2操作于全速(最高72MHz)。 所以在配置各个外设之前首先需要打开AHB的始终总开关,在配置其他的外设时钟。
二、介绍stm32f030的系统构架:
Stm32f030同stm32f103的内核不同,stm32f030采用的使Certex-M0,同时stm32f030也从stm32f103的哈弗结构改为了冯诺依曼结构,即指令存储与数据存储合并在一起,内核通过系统总线与闪存接口线连接,System bus 与 DMA bus分别将,内核与DMA控制器连接到了总线矩阵上,F030对别F103从AHB变成了AHB1与AHB2两条总线,AHB1桥接了APB总线与外设相连,而IO口则直接与AHB2相连接,使IO口可以达到最高的运行速度。
三、介绍stm32f407的系统构架:
Stm32f407与stm32f103相同都采用了哈弗结构,但407采用了Cortex-M4的内核。Stm32f407有8条主控总线与7条被控总线,他们通过总线矩阵相连接。
8条主控总线:
S0:I总线为指令总线,访问的对象是包含代码的存储器,包括内部存储(flash/SRAM或通过FSMC的外部存储器)。
S1:D总线为数据总线,此总线用于将 Cortex?-M4F 数据总线和 64 KB CCM 数据 RAM 连接到总线矩阵。内核通过此总线进行立即数加载和调试访问。此总线访问的对象是包含代码或数据的存储器(内部Flash 或通过 FSMC 的外部存储器)。
S2:S总线为系统总线,此总线用于访问位于外设或SRAM 中的数据。也可通过此总线获取指令(效率低于 ICode)。此总线访问的对象是112 KB、64 KB 和 16 KB 的内部 SRAM、包括 APB 外设在内的 AHB1外设、AHB2外设以及通过 FSMC 的外部存储器。
S3、S4:DMA存储器总线,此总线用于将 DMA 存储器总线主接口连接到总线矩阵。DMA 通过此总线来执行存储器数据的传入和传出。此总线访问的对象是数据存储器:内部SRAM(112 KB、64 KB、16 KB)以及通过 FSMC 的外部存储器。
S5:DMA外设总线,此总线用于将DMA外设主总线接口连接到总线矩阵。DMA 通过此总线访问 AHB 外设或执行存储器间的数据传输。此总线访问的对象是 AHB和APB 外设以及数据存储器:内部SRAM 以及通过FSMC 的外部存储器。DMA1与DMA2的外设总线又分别与APB1和APB2直接向连接。
S6:以太网DMA总线,此总线用于将以太网 DMA 主接口连接到总线矩阵。以太网 DMA 通过此总线向存储器存取数据。此总线访问的对象是数据存储器:内部SRAM(112 KB、64 KB 和 16 KB)以及通过FSMC 的外部存储器。
S7:USB OTG HS DMA 总线 ,此总线用于将 USB OTG HS DMA 主接口连接到总线矩阵。USB OTG DMA 通过此总线向存储器加载/存储数据。此总线访问的对象是数据存储器:内部SRAM(112 KB、64 KB 和 16 KB)以及通过 FSMC 的外部存储器。
从图中总线矩阵上的小圆点就可以看出总线矩阵内部的连接方式。