从零开始的STM32生活————拜访芯片家族

Main-仙夕

从零开始的STM32生活————拜访芯片家族

芯片家族里都有谁?

我们首先要先来看看,我们使用的芯片,它的内部有什么呢?是如何来实现功能的呢?

简要来说,一个封装好的芯片由:

  1. 内核:即CPU

  2. 外设:GPIO,USART,I2C等等

这两部分可以理解成一个人,内核就是大脑,外设就是身体的其他部分。

那你可能会问:大脑通过神经通路传递指令,那我们的内核外设呢?它们是怎么工作的?

🤯这里我需要带大家具体探索一下芯片家族成员:

  1. I-Code总线

  2. 驱动单元:D-Code总线,System总线,DMA总线(内核家庭)

  3. 被动单元:Flash,SRAM,FSMC,AHB和APB(外设家庭)


I-Code总线

虽然它也叫“总线”,但大家记住,它可不是内核家族的成员!

I-Code总线生下来就带着芯片家族的使命,那就是读取指令

什么是读取指令呢?

我们的程序通过编译器后是很多条“指令”,这些“指令”存放在我们之前提到过的Flash里。我们的ICode总线需要把指令读取出来给内核

I-Code:我不生产指令,我只是指令的搬运工。


驱动单元家庭

D-code总线

D-code的“D”指的是“Data”,很显然啊,它是用来取数据的。我们在写代码时的数据,一般分为:

  1. 常量:用“const”修饰,代表不可改变的数,存放在Flash

  2. 变量:存放在SRAM

但是除了D-Code总线能访问数据,它的家人DMA总线也可以,所以我们使用总线矩阵来仲裁用哪个总线(后文会详细介绍)

System总线

它是专门负责访问外设寄存器的总线,我们读写寄存器都要通过它。

DMA总线

DMA总线是家里的“大哥”,它既可以访问外设寄存器,又可以访问SRAM,甚至是内部的Flash

那内核家庭肯定不允许这个“大哥”只手遮天。所以“总线矩阵”被创造了出来。

😺总线矩阵

总线矩阵是一个交叉开关(Crossbar)结构,允许多个主设备同时访问不同的从设备(只要路径不冲突)。它的核心作用是:

  • 并行访问:例如CPU通过D-Code总线读取Flash时,DMA可以同时通过另一条总线访问SRAM。

  • 优先级仲裁:当多个主设备竞争同一从设备时(如CPU和DMA同时访问SRAM),总线矩阵根据预设规则决定谁先访问。

典型优先级:I-Code(CPU取指令) > D-Code(CPU取数据) > System总线(CPU访问SRAM/外设) > DMA

注:指令是我们“大脑”需要的指令,当然要优先读取,DMA只是作为辅助工具,从此堕落神坛。(垄断终被制裁!人民万岁!)


被动单元家庭

Flash

Flash是我们内部的闪存存储器,内核会通过I-Code总线读取里面的指令

SRAM

也就是RAM,我们的栈堆和变量等等存储在里面,内核通过D-Code访问它。

类比理解 SRAM 和 Flash

存储类型类比特点
Flash电脑的 硬盘长期存储程序代码、常量(掉电不丢失,但速度慢)
SRAM电脑的 内存条临时存储变量(速度快,掉电丢失)

SRAM 和 Flash 的区别

特性SRAMFlash
速度⚡ 超快(CPU 直接读写)🐢 较慢(需要等待)
掉电后数据丢失数据保留
用途变量、堆栈、动态数据程序代码、常量数据
大小较小(几KB~几百KB)较大(几十KB~几MB)

编程时,有些软件会显示SRAM里的占用情况,例如Keil。

FSMC

FSMC即“灵活的静态储存器控制器”,是我们芯片家族的“翻译官”。

FSMC(Flexible Static Memory Controller)

  • “Static”(静态):只能接 静态存储器(如 SRAM、NOR Flash),不能接 动态存储器(如 SDRAM)。

  • “Flexible”(灵活):支持多种存储设备,且可以配置不同的访问时序。

在实际中,我们的芯片家族往往要接待许多歪果仁(如SRAM,NORFlash),我们的内核语言无法交流啊。这时候需要它来翻译,让内核可以像控制内部寄存器一样控制它们。

这个功能我们称之为:“内部映射”,即把外接芯片 映射到它的内存地址空间

  • 外接 SRAM 被映射到 0x60000000~0x6007FFFF(512KB)。

  • 你读写这个地址范围时,FSMC 自动操作外接芯片。

AHB和APB

STM32 的总线系统像一座城市的交通网络,不同道路承担不同任务:

  • AHB:高速公路(高速数据流,连接核心部件)。

  • APB:普通公路(低速但灵活,连接外设

对比 AHB 和 APB

特性AHBAPB
速度高速(= CPU 主频)低速(≤ AHB 的 1/2)
协议复杂度高(支持突发、流水线)低(单次传输)
连接设备CPU、DMA、内存USART、GPIO、TIMER 等外设
功耗
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值