STM32内部框图

Tutorial: 电子电路 Category: 嵌入式 Published: 2026-08-29 08:09:36 Views: 0 Likes: 0 Comments: 0

092.1.3STM32内部框图

一、STM32单片机手册获取

  • 数据手册(Datasheet):用于查芯片型号、容量、封装、引脚、绝对最大额定值、电气特性和外设数量。Keil 器件选择页里的 Data Sheet 可以作为入口,但实际开发时还应核对 ST 提供的文档版本与芯片完整料号。
  • 参考手册(Reference manual):用于查系统架构、存储器映射、寄存器位、外设工作原理和配置流程。同一参考手册通常覆盖一个系列,而不是只覆盖某一个封装。
  • 本课程器件:STM32F103ZET6 属于 STM32F103 高密度产品,Cortex-M3 内核,最高 72 MHz;ZE 表示 512 KiB Flash,T 表示 LQFP 封装,6 表示工业级温度范围。

不要把数据手册和参考手册混为一谈:查“PB11 是否 5 V 容忍”看数据手册的引脚表;查“GPIO 的 CRH、IDR、ODR 怎样工作”看参考手册。

二、STM32单片机系统架构

2.1 系统构架

内部框图可以先按“发起访问的一方—传输通道—被访问的一方”理解:

flowchart LR
    CPU[Cortex-M3] -->|ICode:取指| FLASH
    CPU -->|DCode| BM[总线矩阵 Bus Matrix]
    CPU -->|System| BM
    DMA1[DMA1] --> BM
    DMA2[DMA2] --> BM

    BM --> FLASH[Flash 接口\n存放程序和常量]
    BM --> SRAM[SRAM\n存放变量、栈和堆]
    BM --> FSMC[FSMC\n连接外部存储器]
    BM --> AHB[AHB 高速总线]
    AHB --> B1[AHB→APB1 桥]
    AHB --> B2[AHB→APB2 桥]
    B1 --> APB1[APB1 低速外设]
    B2 --> APB2[APB2 高速外设]

图中各部分的含义如下:

  • Cortex-M3 是执行指令的内核。ICode 总线直接连接 Flash 指令接口完成取指;DCode 总线访问代码区数据,System 总线访问 SRAM、外设等系统资源。参与总线矩阵仲裁的是 DCode、System、DMA1 和 DMA2 四个主控接口。
  • DMA1/DMA2 能在外设和存储器之间搬运数据,不必让 CPU 每次都读一次、再写一次。它们也能发起总线访问,所以和 CPU 一样属于主设备。
  • 总线矩阵 像一个多路交通枢纽,负责把主设备的地址请求送到目标从设备,并在多个请求同时出现时仲裁。框图上的线表示可达关系,不等于所有模块永远同时工作。
  • AHB 面向内核、存储器、DMA 等高速模块;APB 面向控制寄存器较多、带宽需求较低的片上外设。桥接器负责在两种总线协议之间转换。
  • RCC 给内核、总线和外设分配时钟并控制复位。外设即使画在框图里,若其时钟门未打开,通常也不能正常访问。

CPU 读取 GPIO 的典型链路是:

Cortex-M3 System 总线
        │ 地址:GPIOx_IDR
        ▼
     总线矩阵 → AHB → AHB/APB2 桥 → APB2 → GPIOx → 输入数据寄存器

DMA 搬运串口接收数据时则可以形成 USART → DMA → SRAM 的路径,CPU 只需在一批数据完成后处理结果。

2.2 存储器映像

“存储器映像”是把 Flash、SRAM、外设寄存器等资源统一放进一个 32 位地址空间。CPU 执行的仍是普通读写指令,地址落在哪个区域,总线矩阵就把请求送到哪个模块。

地址区域(常用范围)主要内容典型用途
0x0000_0000启动区别名根据 BOOT 配置映射到 Flash、系统存储器或 SRAM
0x0800_0000片上 Flash程序代码、只读常量、中断向量表
0x2000_0000片上 SRAM全局变量、局部变量、栈、堆、DMA 缓冲区
0x4000_0000片上外设RCC、GPIO、USART、TIM、ADC 等寄存器
0x6000_0000FSMC 外部存储器区域外部 SRAM、NOR、NAND、LCD 等

以 GPIOB 为例,程序中的 GPIOB->ODR 最终会被编译成对某个固定地址的访问。结构体成员 ODR 只是让寄存器地址和含义更易读;真正发生的动作仍是总线对寄存器的读写。

Flash 与 SRAM 的分工也要说得更精确:程序通常存放在 Flash,但运行时不只是“代码在 Flash、数据在 SRAM”。只读常量也可在 Flash 中,已初始化的可写变量在启动阶段会从 Flash 的初值区复制到 SRAM,未初始化变量所在的 .bss 会被清零。

三、单片机芯片内部外设

“片上外设”是相对 Cortex-M3 内核而言的功能模块,包括 GPIO、ADC、DAC、定时器、USART、SPI、I²C、CAN、USB、DMA、看门狗等。Flash 和 SRAM 更准确地说属于片上存储器,不宜与 GPIO、USART 一概称作外设。

常见总线归属如下:

总线STM32F103 常见模块特点
AHBDMA、CRC、FSMC、SDIO、Flash 接口数据吞吐量较高
APB1TIM2~TIM7、USART2/3、I²C、SPI2/3、CAN、USB、DAC、PWR、BKPPCLK1 最高 36 MHz
APB2AFIO、GPIOA~GPIOG、ADC1/2/3、TIM1/8、SPI1、USART1PCLK2 最高 72 MHz

片上外设与板上器件也要区分:GPIO、USART 是芯片内部模块;LED、按键、蜂鸣器、光敏模块是开发板或外接器件,二者通过芯片引脚连接。

课程画面还对比了互联型产品。STM32F105/107 的系统框图会出现 Ethernet MAC、USB OTG FS 等互联功能;STM32F103ZET6 具有 USB 全速设备接口和 CAN,但没有片上以太网 MAC。选型时应以具体型号的数据手册为准,不能仅凭“STM32F1”这一大类推断外设。