STM32从入门到精通——粗读芯片手册
本文介绍了STM32F411芯片数据手册的获取和使用方法。首先通过意法半导体官网搜索并下载STM32F411RE的数据手册,然后详细解读手册内容,包括芯片参数(如512KB Flash、128KB RAM)、外设特性、时钟系统、总线架构等。重点讲解了FPU浮点运算单元的工作原理,以及通过DMA和CPU访问外设的不同路径。此外还介绍了内存映射、ADC模型、低功耗模式等关键内容,帮助初学者建立对芯片手
一.如何获取我们的资料
1.找到意法半导体官网
对于我们的STM32来讲,我们可以来到官网。

直接再浏览器搜索意法半导体就好,找到他的官网。

直接搜索STM32,就可以看到我们有很多的种类。

比如说我们找一下我们的STM32F4系列,就可以看到。

拿我们的STM32F411举例。

选择我们的STM32F411RE。

点进来就会发现我们的一个下载数据手册地方。

下面的一些就是原理图,以及各种参数什么的。
2.下载数据手册
直接点击数据手册下载。
3.阅读数据手册

(1)第一页解读
首先第一行我们可以看到

这句话的意思是我们这个数据手册必须是尾号是C或者E的芯片才可以适用。
![]()
这句话的意思ARM架构。
![]()
M4内核。
![]()
32位的MCU加上一个FPU加速
(2)借助AI
如果我们不知道FPU加速那些加速知识的话,可以直接喂给我们的ai

1.FPU是什么?简单比喻
想象一下,你要进行两种计算:
-
计算家里有几口人:1口人 + 1口人 = 2口人。这种计算对象是整数,过程简单。
-
计算一块蛋糕怎么分:把一块重 1.5 磅的蛋糕平均分给 3.2 个人,每人分多少?这种计算对象是小数(在计算机里叫浮点数),过程复杂。
现在,我们把CPU(中央处理器)想象成一位数学教授。
-
在没有FPU之前:这位教授既要算整数,也要算小数。他算整数很快,但算小数(比如 1.5 / 3.2)时就非常吃力,需要用一套复杂的规则(软件库)一步步地算,速度慢,耗时长。
-
有了FPU之后:这位教授身边来了一位专门处理小数计算的“超级助手”。这个助手就是FPU。从此,教授只负责指挥和算整数,所有复杂的小数计算都丢给这位助手。助手是硬件电路,专门为这种计算而生,所以速度极快。
所以,FPU就是一个集成在处理器内部的、专门用于高性能浮点数(小数)计算的硬件电路单元,俗称“硬件加速”。
(3)逐条解读

这句话的意思是计算量有125DMIPS。

这款芯片有512KB的Fliash

128KB的RAM,这几个值一般是最高值
![]()
OTG然后FS是全速的意思。
![]()
有11个时钟,一个ADC。
![]()
13个通信接口。串口,I2C什么的都算上,一共是13个。
![]()
然后看Fearures里面我们主要关注的就是

我们这个内存有多大,够不够我们程序的下载。

1.7V到3.6V的电源提供。比如说超过3.6V就会烧毁我们的芯片,所以一般来讲,我们这个芯片被认为是标准的3.3V的芯片
![]()
晶振输出是4到26MHz。
![]()
内部有一个16MHz的时钟

以及一个32KHz的RTC实时时钟。
![]()
内部的一个时钟有RC的校准但是校准不一定真的准。

当设备关闭时,只跑内核时候有100uA/MHz的一个功耗。

一个12位2.4M的一个A/D转换器,最多有16个通道

16个流式DMA,同样不清楚的直接丢给ai,让ai解释。

11个时钟,然后有2个32位的时钟,他可以支持100MHz的频率,这两个32位的时钟可以更好的产生更长的定时。

调试模式支持SWD或JTAG。

最多就是81个I/O要注意的是I/O是否够用

各种常用通信接口,I2C,SPI。

XC和XE的分类都有什么。

需要关注的是这个章节。这里面说明了所有功能的DMA,中断这些都有所描述。

第四个是如何把芯片的管脚引出,这是给PCB画板子时候用到的。

第五个是哪个设备放到哪个内存地址上的一个映射关系。

第六个是电气参数,现在我们初学一般用不到。

第七个就是一些封装什么的。

这里就是介绍一下XC和XE的区别。第一个是内存的区别,一个是256K一个是512K.然后还要GPIO的区别一共六个档次,从36到81个GPIO。
(4)外设图

他把所有的我们的一个外设,全部描述在这个图上。

左上角是M4-ARM的一个CPU。,这里外挂了一个JTAG或SW,是调试用的。
MPU是内存保护单元,NVIC是中断控制器。ETM就是web trace的一个监控。
![]()
用bus-matrix 7s4m HB的总线矩阵。和外面的外设进行相连接。

首先我们可以看到,这里是和CACHE相连接,然后连接到我们的Flish。

直接连接到128kb的SRAM。

这里挂了一个AHB2,这是100MHz的AHB2。从AHB2连接到USB的OTG上。

左边还要一些DMA。
我们可以这样子想,以总线为结构,CPU可以访问这些内存,flish,USB等这些东西。DMA也挂在这里说明,DMA也可以从这里读取,作搬运。

DMA还有一个通道接到了这边,AHB到APB的桥。通过这个来和设备进行沟通。

这个灰色的就是APB1也是100M的。

可以看到他和GPIO相连接。然后在和AHB桥相连,这样子通过AHB桥可以访问到APB1和APB2。

可以看到左边的APB2是100MHz。

右面的APB1是50Mhz这样子就可以知道,为什么有的定时器不一样了。
这里右面的设备比左面的相对慢一些

最快的是挂在这里的数据,因为通过一次桥,数据就会慢一些。
(5)例子
比如说我要写一个gpio的值,把某一位置高或置低。如果我们用的是CPU的寄存器。直接来访问他那么指令就会从AHB流向AHB1然从ABH1流向GPIO。这个时候GPIO就会输出。
比如说有一个数据段要用DMA搬到GPIO上面来产生一个自动的波形,那么就他从SRAM或者flash里面经过AHB传到DMA里面,DAM读取完成开始写,通过通道直接打到AHB1就可以,少走一个桥,速度更快。然后走到GPIO,也就是说如果你想要改变GPIO的值,通过CPU或者DMA都可以。
(6)继续

其他的也是一个道理,比如说我们SDIO和总线之间有一个FIFO为什么要加一个这个,可以暂时理解为,FIFO是一个缓冲,如果没有这个缓冲,会让同步变为了异步。有了这个缓冲,会让性能有所提高。
(7)总线

再往下就是bus matrix也就是AHB总线的集合。也是比较重要的,因为有时候我们在进行访问的时候可能会有一个总线冲突,大多数初学者用不到,一般我们初学用的芯片性能比较低,一般高性能芯片进行访问时候就会出现一个总线冲突
比如说这个GP DMA1用他来从Flish里面读取一个数据,传到SRAM里面,可能看到,他和flish连接有一个点,从这个点读出来,还要去写回去,如果GP DMA1读取flash时候,GP DMA2也在读取flish,那就意味着他俩会有一个冲突或仲裁。他俩不能同时来读取。如果GP DMA1走的左面的,然后GP DMA2走的右面的,他俩就不会冲突。
其余中断的我们后面慢慢说,因为比较复杂。
(8)其他

接下来就是我们boot模式。
三个分别是用户flish,系统嵌入式,SRAM三种不同的boot模式。

剩下的就是定时器也会不同,有的可以向上/向下记时,有的只能向上。

然后ADC考虑的就是速度和分辨率。其他的可以通过矫正来调整。

接下来就是内存映射表从0X00到0XFF是怎么分的,还有放大
![]()
比如说这个先给了flish说明boot是从flash开始的。

但是看详细说明,说我们这个依赖于boot ping如果在boot ping里面做不同设置的话他会映射到不同的位置。
为什么要这么做呢,因为启动时候要从不同的方式启动。而arm启动的时候默认值只有一个。为了保证不影响arm的情况下,让你可以多个设备启动就来了一个映射,根据boot来映射到合适的位置从而进行启动。预留一部分空间,因为后面可能要添加东西。加上内存flish系统定制的bytes,sram。当然这些加起来也不会超过512K的一个数据量。

中间的512K是给了设备,比如,APB1,APB2的地址划分,在右面表明了这么一个地址等等。


下面就是对内存的一个详细描述

比如说APB2上有一个设备挂在了这个位置上。

这也就解释了为什么,你访问这个地址就能找到GPIO。

这是ADC的一个模型,一般ADC分为VREF+和VREF-是作为参考的,有的引出,有的没有引出,有引出的时候要桌着重处理,没有引出的时候要把参考电压做一个处理。防止不稳定。
剩下的电压和频率是硬件工程师需要考虑的,软件的话,不用过多在意。在做低功耗时候可能会关注一些sleep状态的电流什么的。

比如说POWER模式的唤醒。每一个色条代表一个时间。

以及为什么REF在片外,其他的有的是在内的,这些我们都要思考一下。

这里就是一些总线时钟什么的。
基本就差不多了,了解了解这些我们就可以详细了解芯片手册了,就不会大多数的都看不懂,没有知识储备。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)