当前位置: 首页 > news >正文

深入解析:STM32初学---总线:AHB、AHP / EEPROM、SPI FLASH、EMMC

1. 总线

1.1 总线概念

总线 = 芯片内部各个模块之间“传输数据的公共通道”

CPU 通过总线:

1.2 多种总线

为什么 STM32 要有“多种总线”?
如果 所有模块都挤在一条总线上:

  • 速度慢
  • 冲突多
  • 功耗高

所以 STM32 把不同“速度 / 功能”的模块放在不同等级的总线上。

这就是你在数据手册里看到的:AHB / APB1 / APB2 …

1.3 STM32 常见的几种总线

(1)AHB(Advanced High-performance Bus)

特点:高速、主干总线

一般连接:

  • CPU(Cortex-M)
  • Flash
  • SRAM
  • DMA
  • 总线桥(APB Bridge)

(2)APB(Advanced Peripheral Bus)

特点:低速、简单、省功耗

分成两条(以 STM32F1/F4 为例):

总线典型外设
APB1USART2/3、I2C、SPI2、TIM2~7
APB2GPIO、USART1、SPI1、TIM1

结构可以表示为:

CPU
|
AHB  ← 高速主干
┌────┼────┐
Flash  SRAM  DMA
|
APB Bridge
┌──────┬──────┐
APB1      APB2
(低速外设)  (高速外设)

1.4 写代码时“总线很重要”

例如:外设挂在哪条总线 → 决定时钟怎么开
你一定会写过:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

为什么是 APB2

因为 GPIOA APB2 总线上

如果你写错成 APB1
1、编译不报错
2、程序不工作

1.5 总线频率 ≠ CPU 频率

例如:

CPU:72 MHz
APB1:36 MHz(通常被限制为 ≤36MHz)
APB2:72 MHz

这会影响:
1、定时器计数频率
2、串口波特率
3、I2C 时序

1.6 总线矩阵

总线矩阵 = 芯片内部的“智能交通枢纽”
负责:谁可以同时访问谁、走哪条路、不互相堵车

结构上,总线矩阵 = 多个“主设备(Master)”可以 并行访问多个“从设备(Slave)”。

1.6.1 Master 与 Slave

Master(发起访问的一方)

  • CPU(Cortex-M)
  • DMA
  • USB / Ethernet(高级芯片)

Slave(被访问的一方)

  • Flash
  • SRAM
  • 外设寄存器
  • APB Bridge

当两个 Master 访问同一个 Slave

CPU  ─┐
├── SRAM
DMA  ─┘

这时:

  • 总线矩阵会 仲裁(Arbitration)
  • 一方等,一方先走

现象:

  • DMA 传输变慢
  • CPU 延迟增大

1.6.2 总线矩阵 vs AHB / APB 的关系

概念是什么
AHB / APB“道路等级”
总线矩阵“交通调度系统”

1.7 APB Bridge

APB Bridge是总线之间的“中转站”。

1.7.1 APB Bridge在系统中的位置

CPU / DMAAHB   ← 高速
│
┌───▼─────────┐
│  APB Bridge │  ← 关键角色
└───▲─────────┘
│
APB1 / APB2  ← 低速
│
GPIO / TIM / USART

1.7.2 APB Bridge的作用

①协议转换

APB Bridge 把 AHB 的访问“翻译”为 APB 能懂的访问;

②时钟域隔离

AHB:高频(如 72MHz)
APB1:低频(如 36MHz)

Bridge 会:

等 APB 空闲
再慢慢完成一次访问

此时就会感觉:“访问外设比访问 SRAM 慢”

③地址解码 + 分发

CPU 只发地址:eg:0x4001 100C

APB Bridge 会判断:

  • 属于 APB1?还是 APB2?
  • 转给 GPIO 还是 TIM?

Bridge 永远存在、自动工作,不用“配置”它。

2、EEPROM、SPI FLASH、EMMC

EEPROM / SPI Flash / eMMC 本质上都属于**“非易失性存储器”。

2.1 EEPROM

2.1.1 概念

EEPROM用来存“小量、经常改、很重要”的数据;

典型用途:

特点:

2.1.2 分类

在 STM32 里,有芯片内部 EEPROM,外部 EEPROM(最常见)。
✔ 情况 1:芯片内部 EEPROM(部分 STM32 有,如 STM32L 系列)

  • 像 RAM 一样访问
  • 容量很小(几 KB)

✔ 情况 2:外部 EEPROM(最常见)

  • 芯片:AT24C02 / 24C04
  • 接口:I2C
  • 容量:256B ~ 几十 KB

使用时:STM32 ──I2C── EEPROM

✔ 情况 3:用 Flash 模拟 EEPROM(很多 STM32F1 都是这样)

  • 用 Flash 的一小块
  • 软件实现“擦写管理”

2.1.3 EEPROM的特性

特性说明
写入方式可以按字节
写入速度很慢
擦写寿命10 万~100 万次

3、SPI Flash

3.1 概念

用来存“较大量数据,不经常改”。

典型用途:

常见芯片:W25Q16 / W25Q64 / W25Q128

容量:2MB / 8MB / 16MB / 128MB(常见)

3.2 SPI Flash特性

特性说明
最小写单位Page(256B)
最小擦除Sector(4KB)
写前必须擦
擦写寿命~10 万次

注意:
1、不能像 EEPROM 那样随便改一个字节
2、 必须“擦一整块再写”

4、eMMC

4.1 概念

用来存“超大量数据 + 文件系统 + 操作系统”,是一个一个“自带管理芯片的 Flash 硬盘”。

典型用途:

使用复杂度

一般 STM32 + 裸机 / RTOS 很少直接用 eMMC。

4.2 EEPROM、SPI FLASH、EMMC对比

项目EEPROMSPI FlasheMMC
容量很小中等很大
接口I2CSPI / QSPISDIO
是否可字节写
是否常改
是否跑系统

总结:

  • EEPROM:小、慢、常改,存参数
  • SPI Flash:大、块擦、少改,存数据
  • eMMC:超大、复杂,跑系统
http://www.jsqmd.com/news/357130/

相关文章:

  • Mac软件汉化完全指南:Axure RP 11界面本地化实操
  • 基于SimCLR的自监督 YOLO:YOLOv5/8也能在低标注场景目标检测性能飙升 - 实践
  • 【WC 2026】 游记
  • 3步突破软件本地化障碍:从效率损耗到用户体验升级
  • Midscene.js调试工具终极指南:Playground与Chrome扩展完全手册
  • Java序列化从入门到精通:核心原理、实战应用与进阶优化
  • 智能驱动下的隐写术探查新范式:自动化工具体系与技术演进
  • 5大突破!抖音视频批量采集工具让内容获取效率提升300%的实战指南
  • YimMenu革新性全景指南:重新定义GTA5游戏增强工具体验
  • n8n自动化平台爆6个高危漏洞,4个RCE可致服务器完全接管,全网紧急升级预警
  • 5个技巧让游戏自动化效率工具为你解放双手
  • 视频资源获取工具高效解决方案:从入门到精通的全方位指南
  • 基于PHP、asp.net、java、Springboot、SSM、vue3的会议室管理系统的设计与实现
  • 【含文档+PPT+源码】基于微信小程序的房屋租赁系统
  • 基于PHP、asp.net、java、Springboot、SSM、vue3的公司工作任务管理系统的设计与实现
  • 智能释放系统加速工具:让电脑焕发新生的性能优化指南
  • 基于PHP、asp.net、java、Springboot、SSM、vue3的企业人事管理系统的设计与实现
  • 如何利用开源无人机地面站Mission Planner实现专业级飞行控制?
  • 抖音内容批量获取工具:技术实现与效能优化指南
  • 电脑越用越慢?这款轻量工具让内存释放提升40%
  • 3步构建教育资源诊疗系统:从混乱管理到智能架构的转型方案
  • 当代码面临道德选择:VR如何为AI伦理决策注入“人性压力”
  • 智能预约系统2024版:开源自动预约工具的技术实现与部署指南
  • springboot计量器具管理平台开题报告
  • 完整教程:Vue2 和 Vue3 生命周期的理解与对比
  • 5步完美解决Arduino ESP32开发环境配置故障:从诊断到优化的完全指南
  • springboot过程材料零食购物网站 开题报告
  • 数字内容访问工具深度评测:技术原理与工具选择全指南
  • 3个颠覆性技巧:用Apollo Save Tool实现PS4存档自由的核心方法
  • springboot教学质量开题报告