2-STM32 芯片架构

1 芯片结构图

1.1 内核和外设

类别 内核 外设
定义 芯片的核心处理单元,负责执行指令和处理数据 在内核之外的组件,用于扩展芯片功能。
示例 Cortex-M4(如在 STM32F429 中使用) GPIO、USART(串口)、I2C、SPI 等
功能 执行程序逻辑、进行算术和逻辑运算、控制程序流程等。 与外部设备进行通信、控制和数据传输,执行输入输出操作等。
设计 由 ARM 公司设计。 由芯片生产厂商(如 ST、TI、Freescale)设计并集成。
生产 由芯片制造商使用 ARM 的设计进行生产。 由芯片制造商负责生产和集成到芯片中。

1.2 FLASH 和SRAM

类别 FLASH SRAM
定义 FLASH(闪存)是一种用于存储程序代码和数据的非易失性存储器。 SRAM(静态随机访问存储器)是一种用于存储数据的内存类型。
特性 – 非易失性:在系统断电或重启时,存储在其中的数据不会丢失。 – 易失性:在系统断电或重启时,存储在其中的数据会丢失。
用途 – 存储用户程序、固件和其他必要的信息。 – 用于存储临时变量、中间计算结果,以及其他在程序执行期间需要频繁读写的数据。
在STM32中的作用 1. 存储程序代码:Flash 主要用于存储微控制器的程序代码。
2. 非易失性存储:能够在断电后保持存储内容。
3. 固件升级:可编程方式更新微控制器的软件。
4. 数据存储:存储其他重要数据。
1. 数据存储:用于存储在程序执行期间生成的数据。
2. 堆栈操作:适合堆栈操作,存储函数调用和返回地址。
3. 运行时堆管理:动态分配内存。
4. 中间结果存储:提高访问速度,减少对 Flash 的写入次数。
总体作用 FLASH 在 STM32 芯片中用于存储程序代码和重要数据,确保在断电情况下数据的持久性。 SRAM 在 STM32 芯片中起到关键作用,提供快速访问速度和可读写特性,适合实时性要求高的应用程序。
个人总结 FLASH 类似于长期储存设备,适合存储重要的代码和数据,确保数据在电源关闭时不丢失。 SRAM 类似于手机中的运行内存,提供快速的读写能力,但掉电后数据会丢失,适合存储临时数据和执行中的变量。

1.3 其他外设

外设名称 用途
GPIO(通用输入/输出) 用于连接和控制外部数字设备,例如 LED、按钮、传感器等。
USART/UART(通用同步/异步收发器) 用于串行通信,例如连接到计算机、传感器、其他微控制器等。
SPI(串行外设接口) 用于高速串行通信,适用于连接存储器、传感器、显示屏等。
I2C(Inter-Integrated Circuit) 用于短距离串行通信,适用于连接多个设备,如传感器、EEPROM 等。
ADC(模数转换器) 用于将模拟信号转换为数字信号,适用于从传感器中读取模拟数据。
PWM(脉冲宽度调制) 用于生成脉冲信号,通常用于控制电机、LED 亮度等。
定时器和计数器 用于生成定时事件,执行精确的时间控制。
看门狗定时器(WDT) 用于监视系统的运行状况,防止系统死锁或崩溃。
CAN(控制器区域网络) 用于在车辆系统等应用中进行高速通信。
USB 控制器 用于支持 USB 通信。

1.4 总线矩阵

F103 系统架构图
F429 总线架构图
驱动单元被动单元
Cortex™-M4F 内核 I 总线内部 Flash ICode 总线
Cortex™-M4F 内核 D 总线内部 Flash DCode 总线
Cortex™-M4F 内核 S 总线FS主要内部 SRAM1 (112 KB)
DMA1 存储器总线辅助内部 SRAM2 (16 KB)
DMA2 存储器总线辅助内部 SRAM3 (64 KB)
DMA2 外设总线AHB1 外设(包括 AHB-APB 总线桥和 APB 外设)
以太网 DMA 总线AHB2 外设
USB OTG HS DMA 总线FSMC
F429 驱动单元和被动单元

1.4.1 驱动单元

1.4.1.1 I 总线

此总线用于将 Cortex™-M4F 内核的指令总线连接到总线矩阵。内核通过此总线获取指令。
此总线访问的对象是包含代码的存储器(内部 Flash/SRAM 或通过 FSMC 的外部存储器)。

  • Cortex-M4F 内核的指令总线:指的是ARM Cortex-M4F处理器中用于传输指令的总线。指令总线负责将程序指令从存储器传递到处理器,以供执行。
  • 总线矩阵:总线矩阵是硬件结构,允许多个设备共享总线资源。通过将指令总线连接到总线矩阵,Cortex-M4F内核可以访问各种存储器和外设
  • 内部 Flash:Cortex-M4F微控制器通常包含内部Flash存储器,用于存储固件或程序代码。这是处理器执行的主要指令来源。
  • SRAM:静态随机存取存储器,也可能用于存储代码,尤其是在某种情况下需要快速访问。
  • 通过 FSMC 的外部存储器:FSMC(外部存储器控制器)可以连接外部存储器,如SRAM、NAND Flash等。这条指令总线也可以访问这些外部存储器,以便获取指令。
1.4.1.2 D 总线

此总线用于将 Cortex™-M4F 数据总线和 64 KB CCM 数据 RAM 连接到总线矩阵。内核通过此总线进行立即数加载和调试访问。此总线访问的对象是包含代码或数据的存储器(内部Flash 或通过 FSMC 的外部存储器)。

  • Cortex-M4F 数据总线:指的是ARM Cortex-M4F处理器中的数据总线,用于传输数据。
  • 64 KB CCM 数据 RAM:CCM(Core Coupled Memory)是与Cortex-M4F内核紧密耦合的内存,具有较低的延迟,通常用于快速访问数据。
  • 立即数:在指令中直接给出的常量
  • 内部 Flash:Cortex-M4F微控制器通常包含内部Flash存储器,用于存储固件或程序代码。
  • 通过 FSMC 的外部存储器:FSMC(外部存储器控制器)可以连接外部存储器,如SRAM、NAND Flash等。这条总线也可以访问这些外部存储器。
  • 通过 FSMC 的外部存储器:FSMC(外部存储器控制器)可以连接外部存储器,如SRAM、NAND Flash等。这条总线也可以访问这些外部存储器。
1.4.1.3 S 总线

此总线用于将 Cortex™-M4F 内核的系统总线连接到总线矩阵。此总线用于访问位于外设或 SRAM 中的数据。也可通过此总线获取指令(效率低于 ICode)。此总线访问的对象是112 KB、64 KB 和 16 KB 的内部 SRAM、包括 APB 外设在内的 AHB1 外设、AHB2 外设以及通过 FSMC 的外部存储器。

  • Cortex-M4F 内核的系统总线:指的是Cortex-M4F处理器中用于与外部设备和存储器进行数据通信的总线。系统总线负责连接处理器核心与各种外设和内存。
  • 效率低于 ICode:ICode 是专门用于传输指令的总线,通常设计优化以提高指令获取的速度。相比之下,系统总线的指令获取效率较低,可能是因为它同时用于数据传输。
  • 内部 SRAM:指的是微控制器内部的静态随机存取存储器,分别为112 KB、64 KB和16 KB,提供快速存储和访问数据的能力。
  • AHB1 和 AHB2 外设:这是两个不同的总线架构,分别连接不同的外设。AHB总线用于高速外设,APB(外设总线)用于低速外设。
1.4.1.4 DMA 存储器总线

此总线用于将 DMA 存储器总线主接口连接到总线矩阵。DMA 通过此总线来执行存储器数据的传入和传出。此总线访问的对象是数据存储器:内部 SRAM(112 KB、64 KB、16 KB)以及通过 FSMC 的外部存储器。

  • DMA 存储器总线主接口:这是指DMA控制器的主接口,用于直接访问存储器。DMA允许外设和内存之间进行数据传输,而无需CPU的干预。
  • 数据存储器:指的是用于存储数据的内存区域。
  • 内部 SRAM:微控制器内部的静态随机存取存储器,具体容量为112 KB、64 KB和16 KB。这些内部SRAM提供快速存取数据的能力。
  • 通过 FSMC 的外部存储器:FSMC(外部存储器控制器)可以连接外部存储器,如SRAM、NAND Flash等。通过这条总线,DMA能够访问这些外部存储器,以进行数据传输。
1.4.1.5 DMA 外设总线

此总线用于将 DMA 外设主总线接口连接到总线矩阵。DMA 通过此总线访问 AHB 外设或执行存储器间的数据传输。此总线访问的对象是 AHB 和 APB 外设以及数据存储器:内部SRAM 以及通过 FSMC 的外部存储器。

  • AHB外设:指的是通过AHB总线连接的外设,如GPIO、USART、SPI等。这些外设可以通过DMA进行数据传输,以提高效率和减少CPU负担。
  • 内部SRAM:微控制器内部的静态随机存取存储器,提供快速的数据存取。
  • 通过FSMC的外部存储器:FSMC(外部存储器控制器)可以连接外部存储器,如SRAM、NAND Flash等。通过DMA,外部存储器中的数据也可以被访问和传输。
1.4.1.6 以太网DMA 总线

此总线用于将以太网 DMA 主接口连接到总线矩阵。以太网 DMA 通过此总线向存储器存取数据。此总线访问的对象是数据存储器:内部 SRAM(112 KB、64 KB 和 16 KB)以及通过FSMC 的外部存储器。

  • 以太网 DMA 主接口:这是指以太网控制器的DMA主接口,用于直接访问存储器。以太网DMA允许以太网控制器与内存之间进行数据传输,而无需CPU的干预。
  • 内部SRAM:微控制器内部的静态随机存取存储器,提供快速的数据存取。
  • 通过FSMC的外部存储器:FSMC(外部存储器控制器)可以连接外部存储器,如SRAM、NAND Flash等。通过DMA,外部存储器中的数据也可以被访问和传输。
1.4.1.7 USB OTG HS DMA 总线

此总线用于将 USB OTG HS DMA 主接口连接到总线矩阵。USB OTG DMA 通过此总线向存储器加载/存储数据。此总线访问的对象是数据存储器:内部 SRAM(112 KB、64 KB 和 16 KB)以及通过 FSMC 的外部存储器。

  • USB OTG HS DMA 主接口:这是指用于USB OTG HS控制器的DMA接口。DMA允许USB控制器在不依赖CPU的情况下直接与内存进行数据传输。
  • 加载数据:从USB设备接收数据并存储到内存中。
  • 存储数据:从内存中读取数据并发送到USB设备。
  • 内部SRAM:微控制器内部的静态随机存取存储器,提供快速的数据存取。
  • 通过FSMC的外部存储器:FSMC(外部存储器控制器)可以连接外部存储器,如SRAM、NAND Flash等。通过DMA,外部存储器中的数据也可以被访问和传输。

1.4.2 被动单元

1.4.2.1 Flash

内部的闪存存储器即 FLASH,我们编写好的程序就放在这个地方。内核通过 ICode 总线来取里面的指令。我们程序中生成的一些重要数据也可以保存在芯片内部的flash中,但要注意,读写空间,不要把 程序运行的代码给篡改了。

1.4.2.2 SRAM

内部的SRAM,即我们通常说的RAM,程序的变量,堆栈等的开销都是基于内部的SRAM。内核通过 DCode 总线来访问它。

1.4.2.3 FSMC

FSMC的英文全称是Flexiblestaticmemorycontroller,叫灵活的静态的存储器控制器,通过FSMC,我们可以扩展内存,如外部的SRAM,NAND-FLASH和NORFLASH。但有一点我们要注意的是,FSMC只能扩展静态的内存,即名称里面的S:static,不能是动态的内存,比如SDRAM就不能扩展。

1.4.2.4 AHB 到 APB 的桥

 从 AHB 总线延伸出来的两条 APB2 和 APB1 总线,上面挂载着STM32各种各样的特色外设。我们经常说的 GPIO、串口、I2C、SPI 这些外设就挂载在这两条总线上。

发表评论