STM32
总线介绍
STM32F10 系列基于 ARM Cortex-M3 内核,其总线架构采用多层 AHB(Advanced High-performance Bus)总线矩阵,支持多主设备和从设备的并行访问。以下是其主要的总线类型及相关的关键特性:
1. 内核总线(Cortex-M3 内部总线)
- I-Code 总线
用于从 Flash 存储器中读取指令(代码),连接到 Flash 接口(FLITF)。 - D-Code 总线
用于从 Flash 中加载数据(如常量表),同样连接到 FLITF。 - System 总线
用于访问内存(SRAM)和外设寄存器(通过 AHB 到 APB 桥)。
2. AHB(Advanced High-performance Bus)
- AHB1(主 AHB 总线)
- 连接 Cortex-M3 内核、DMA 控制器、FLITF(Flash 接口)等高速主设备。
- 外设:SRAM、中断控制器(NVIC)、DMA1/DMA2(部分型号支持)。
- AHB2(可选)
部分型号可能通过 AHB 扩展外设(如 USB 或 SDIO)。
3. APB(Advanced Peripheral Bus)
APB 分为 APB1 和 APB2,用于连接低速外设,通过 AHB 到 APB 桥接器与 AHB 总线通信:
-
APB1(低速外设)
- 最大时钟频率:36 MHz(在系统时钟为 72 MHz 时)。
- 外设举例:
- 定时器(TIM2-TIM4, TIM6-TIM7)
- 串口(USART2, USART3)
- I2C1/I2C2
- SPI2
- CAN 控制器
- RTC
- 看门狗(IWDG, WWDG)
- 部分 GPIO(复用功能需配置)
-
APB2(高速外设)
- 最大时钟频率:72 MHz(与系统时钟同步)。
- 外设举例:
- 高级定时器(TIM1, TIM8)
- ADC1/ADC2(部分型号支持 ADC3)
- 串口(USART1)
- SPI1
- GPIO(所有端口的输入/输出)
- EXTI(外部中断控制器)
- AFIO(复用功能重映射)
4. FSMC(Flexible Static Memory Controller)总线
- 适用型号:仅部分大容量型号(如 STM32F103xC/D/E)支持。
- 用途:连接外部存储器(如 SRAM、NOR Flash、LCD 控制器等)。
- 总线宽度:支持 8/16 位数据宽度,地址空间可配置。
5. DMA 总线
- DMA1/DMA2 控制器
- 允许外设与内存之间直接传输数据,无需 CPU 介入。
- 通道连接到不同外设(如 ADC、SPI、USART 等)。
总线矩阵与仲裁机制
STM32F10 采用多层总线矩阵,支持多主设备(如 CPU、DMA)同时访问不同从设备(如 SRAM、Flash、外设),通过仲裁机制避免冲突。例如:
- CPU 通过 I-Code 总线读取指令时,DMA 可通过另一条总线访问 SRAM。
- 不同 DMA 通道可并行操作不同外设。
总结:总线类型与用途
| 总线类型 | 用途 | 关键外设 |
|---|---|---|
| I-Code/D-Code | 内核指令和数据访问 Flash | Flash 存储器 |
| AHB | 高速主设备通信 | SRAM、DMA、内核 |
| APB1/APB2 | 低速外设控制 | 定时器、串口、SPI、I2C、ADC |
| FSMC | 外部存储器扩展 | SRAM、NOR Flash、LCD |
| DMA 通道 | 外设与内存直接数据传输 | ADC、USART、SPI 等 |
注意事项
- 时钟配置:APB1 和 APB2 的时钟需根据系统主频分频配置(通过 RCC 寄存器)。
- 外设复用:部分外设需通过 AFIO 配置复用功能。
- DMA 优先级:当多个 DMA 请求冲突时,优先级由硬件或软件配置决定。
如果需要具体型号的总线细节,建议参考对应型号的《参考手册》(如 STM32F10x Reference Manual)中的 **"System Architecture"** 章节。

浙公网安备 33010602011771号