ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

嵌入式:认识STM32命名方法和引脚定义,认识仿真器

嵌入式:认识STM32命名方法和引脚定义,认识仿真器 一、STM32F103ZET6 命名方法这里我们以 STM32F103ZET6 为例来解释下 STM32 的命名方法。理解各个部分含义1. STM32ST 为 “意法半导体” 公司缩写M 则为 “微电子” Microelectronics 的缩写。STM32 表示为意法半导体设计生产的 32 位 MCU。意法半导体也有 8 位的 MCU 产品STM8 系列。只不过 STM8 的影响力比 STM32 要小很多了。2. F103F1 归属于 “主流”(Mainstream) 产品线并且使用 Cortex-M3 的 CPU 内核。03 属于 STM32F1 子系列中具体的产品线。 Cortex-M 系列都是 ARM 公司研发的微控制器 CPU 内核。这个系列下有 M0, M3, M4, M7, M33 等可以简单的认为数字越大性能越高。 类似于 Intel CPU 有 i3, i5, i7, i9 这样的划分。3. ZZ这个 MCU 有 144 个 pin也叫做针脚 / 引脚。 针脚就是 MCU 侧方凸起的金属针。MCU 通过这些金属针和其他电子元件连接用于传输信号。 一条边上是 36 个4 条边共计 144 个。 当然还有其他字符也能表示其他 pin 数目字母标识pin 数目T36C48R64V100Z144立创商城https://www.szlcsc.com/4. EE表示内部 Flash 容量为 512 KB表格字母标识Flash 容量416 KB632 KB864 KBB128 KBC256 KBD384 KBE512 KBF768 KBG1024 KB为什么会有内部 Flash初期切入的开发领域是裸机开发领域这种裸机开发领域比较大的特点是形成的二进制程序直接烧写到 MCU 内部的 FLASH 中然后才有 ARM CPU (Cortex-M3) 执行代码的过程。这个过程就是典型的裸机开发所以你也就理解为什么 MCU 内部会有 FLASH不同的 MCUFLASH 大小会有差异因为不同的 FLASH 容量代表能烧写的不同程序的体积本质是对应不同规模的产品。FLASH 种类越多就可以在成本可控的范围内低成本满足产品需求从而让终端产品更具有价格竞争力。5. TT封装类型采用 LQFP 封装。当然也有其他类型的封装如下 (部分)字母标识封装类型英文全称中文含义TLQFPLow-profile Quad Flat Package低轮廓四边扁平封装HBGABall Grid Array球栅阵列封装UVFQFPNVery Thin Fine-pitch Quad Flat No-lead Package超薄细间距四边扁平无引脚封装⚠️ 理解 “封装”电子元件要想工作需要焊接到电路板上。这就需要电路板提供对应的 “焊盘”。 此处的 “封装” 就描述了 “焊盘” 的形状电子元件的形状也就需要和焊盘形状匹配上。LQFP封装BGA封装VFQFPN封装6.66工作温度范围6 表示工作温度范围 -40 度到 85 度如果是 7 表示工作温度范围 -40 度到 105 度表格数字标识工作温度范围6-40℃ ~ 85℃7-40℃ ~ 105℃这个工作温度指的是 MCU 的工作温度。 为什么型号中往往把温度作为一个核心指标体现在名字上可靠性如果你的设备需要在夏天暴晒的户外可能达到 70~80℃或者靠近发热元件大功率 LED、电机驱动就必须选择 7105℃甚至更高级别。性能降级当温度超过 85℃时普通 6 型号的芯片可能最高主频需要降低比如从 72MHz 降到 60MHzADC 的精度会下降内部 LDO 或 Flash 擦写可靠性可能受影响所以特殊领域往往会具有极端温度场景比如石油钻头勘探领域所以MCU 需要标识清楚自己的工作温度范围方便技术人员快速选型。可以在数据手册中查看到二、认识 STM32F103ZET6 引脚1. 引脚布局引脚布局属于硬件那么就一定能在《数据手册》中找到引脚相关内容。在数据手册中翻到 Pinouts and pin description引脚定义章节即可看到引脚布局。⚠️ 关于数据手册电子元件设备种类非常繁多内部的各种参数和性能指标也千差万别。因此厂商就会提供一份数据手册对电子元件进行详细的介绍。我们未来的学习 / 开发过程中也会经常接触到各种数据手册。 手册上包含多种封装的说明这里只关注 STM32F103ZET6 的 LQFP 封装 144 引脚的情况。每个引脚都有一个对应的名字描述这个引脚的功能。后续我们编写代码的时候相当一部分逻辑就是在针对这些引脚通过设置输入 / 输出的电信号对某种设备进行控制。在认识引脚之前需要先把这个图和真实的 STM32 MCU 联系起来。注意在 STM32F103ZET6 实物图上有一个实心的圆点。通过这个圆点来明确引脚从哪里开始编号。 从圆点最近的引脚开始编号编号从 1 开始逆时针递增。下面我们先挑选部分引脚做一个初步的介绍 MCU 对外会存在很多的引脚但是从分类上分为特殊功能引脚普通引脚特殊功能引脚功能由 MCU 芯片硬件永久固定不能通过软件更改。必须按照数据手册规定的用途正确连接如电源、复位引脚。普通引脚MCU 的 “可编程接口”。其功能完全由你的软件决定。你可以动态地将其配置为输入读取按键、输出控制 LED、或复用为 UART、I2C、SPI、PWM、ADC 等特定外设功能。 所以我们后续编程其实主要设置的都是与普通引脚相关的设定。2. 特殊功能引脚 (常见部分)这类功能引脚我们知道存在和基本意义就可以不用太过于担心记不住的问题。2.1 VDD 与 VSSVDD接正极供电通俗理解 Voltage Drain指芯片内部逻辑电路通常指 MOSFET 晶体管的漏极的工作电压在 STM32F103 系列上通常连接的 3.3V。VSS接地Voltage Source指芯片内部逻辑电路的公共地源极电压就是芯片的负极或 0V 参考地在 STM32F103 系列上连接到电路的 GND地线。VDD 接到电源正极上VSS 接到电源负极上。2.2 NRST 复位引脚“复位Reset” 指的是让单片机强制回归初始状态相当于 “重启”。在PC计算机中流传着绝技叫做 “重启下试试”通常能解决 90% 的问题。 复位Reset就是让单片机MCU强行回到一个确定的初始状态就像电脑强制重启一样。NRST 的全称通常是Negative Reset 前面的 N 代表 Negative 或 Not强调该引脚在低电平0V时触发复位。如果写成 RST 或 RESET通常可能是高电平有效带 N 的则明确是低电平有效。 绝大多数单片机如 STM32 等的复位引脚是低电平有效即引脚为低电平0V也就是接地时处于复位状态。引脚为高电平3.3V时正常运行。细节未来我们把程序烧写到 MCU 内部就需要按下这个复位按键来完成启动新程序的效果2.3 VBAT备用电池VBAT(Voltage Battery)为 MCU 内部 RTC实时时钟和备份寄存器供电。当主电源 VDD 丢失时VBAT 自动供电。这是为了系统在掉电后能快速恢复时间上下文 / 数据而不是保证 MCU 整体持续运行。类比电脑主板的纽扣电池主板上的电池维持 BIOS 时钟和设置。电脑本身不能运行但下次开机时间不会丢失。2.4 BOOT0启动模式选择关于启动模式描述了单片机复位后从谁提供的软件指令开始执行。BOOT 引脚组合决定了单片机重启后从哪个位置加载程序。细节BOOT1 也存在但是直接被接地 (一般做板子都焊死了)也就是永远是低电平 0。BOOT0 状态作用通俗理解接 GND运行已烧录的程序正常开机执行你烧录的程序。99% 场景下都是这个。接 3.3V进入 Bootloader等待串口下载进入刷机模式执行意法提供的 Bootloader。当未来无法烧录的时候可以使用它强制烧写Bootloader 是 ST 公司固化在芯片系统存储器里的不可修改程序作用是用串口等接口烧录 / 恢复固件当未来我们使用仿真器无法烧录的时候可以使用它强制烧写恢复执行状态。 在未来我们开发的时候默认使用的是 BOOT0 接 GND 的方式。NRST 复位引脚 VS BOOT0启动模式选择NRST 复位引脚不改变启动源只是从头开始运行指定的软件。BOOT0 启动模式选择不触发重启只决定重启后运行谁的问题。使用 windows 来类比NRST 决定是否重启BOOT0 决定开机从哪个盘启BOOT0 类比类比一下像咱们日常使用的 PC正常启动模式是直接进入 Windows。但是如果想重置系统可以选择 一键重置 这样的功能电脑会重启并进入到重置功能界面。也可以类比你 windows 开机的时候按 F2、F10 什么的就可以选择进入 BIOS 还是 windows 系统本身一样2.5 其他OSC_IN / OSC_OUT外部高精度时钟输入 / 输出引脚VREF 系列高精度 ADC/DAC 的参考电压NCNo Connect未进行任何连接的引脚3.普通引脚首先通过字母对普通引脚进行分组再使用数字对每个组的引脚进行编号。分组引脚范围引脚数量说明PAPA0-PA1516 个完整引脚组PBPB0-PB1516 个完整引脚组PCPC0-PC1516 个完整引脚组PDPD0-PD1516 个完整引脚组PEPE0-PE1516 个完整引脚组PFPF0-PF1516 个完整引脚组PGPG0-PG1516 个完整引脚组A-G 一共 7 组每组 0~15 共 16 个引脚7×16 112 个普通引脚注意这些引脚在 MCU 上的排列不一定是连续的“完整引脚组” 指的是该组字母如 PA、PB拥有从 0 到 15 的全部 16 个编号引脚⚠️ 在后续的编程中我们主要就是控制这些引脚来 输入 / 输出 电信号。盘一盘所有的针脚112 个普通引脚 32 个特殊功能引脚 144 个引脚和 LQFP144 封装总数对应三、认识仿真器开发 STM32 程序来说需要把编写好的代码编译并烧录到 STM32 开发板中。这个时候就需要使用到仿真器了。1. ST-Link上图是 ST 官方生产的 ST-Linkhttps://www.st.com.cn/zh/development-tools/st-link-v2.html ST-太贵了没必要而且是闭源的不选择它。2 DAPLink上图是国产的 DAP 仿真器这个在淘宝上都能看到PowerWriter PWLINK2创芯工坊STM32替代stlink仿真调试DAP下载器-淘宝网DAP 仿真器是开源的 它的官方名称叫 DAPLink旧称 CMSIS-DAP是由 Arm 公司官方主导并维护的开源项目。DAP 全称是 Debug Access Port调试访问端口是一个物理仿真器“开源” 在 DAP 仿真器上体现在这两个层面开源层面说明软件 / 固件开源DAPLink 的全部固件源码在 GitHub 上公开采用开源许可证如 Apache-2.0任何人都可以查看、修改和分发硬件开源官方提供了参考电路设计许多开发者基于此设计并开源了自己的 DAP 仿真硬件官方开源仓库Arm Mbed DAPLink GitHub 仓库https://github.com/ARMmbed/DAPLinkgithub 访问有问题可以看DAPLink: DAPLink官方镜像细节如何理解仿真器开源DAPLink 自己本身就是一个单片机系统。正因为开源所以有很多人可以自己做自己的 DAPLinkhttps://oshwhub.com/XiaoMao/DAPLink_STM32F103C8T6这里做 MCU 软件开发直接使用现成的就可以了。解释DAPLink 自己本身就是一个单片机系统。四、简单理解仿真器仿真器是一种硬件调试工具。通过仿真器连接开发板和 PC从而通过 PC 上的开发工具对 MCU 进行烧录调试烧录本质就是把编译生成的可执行程序通过仿真器写入到 STM32 片上 Flash 中。市面常见的仿真器ST-Link: ST 官方出品的 STM32 STM8 的仿真器。J-Link: 由 SEGGER 公司生产是业界标准的专业调试器DAP: 开源社区设计的仿真器U-Link: 由 ARM/Keil 公司生产主要用于配合 Keil MDK 开发环境的仿真器这些仿真器功能和使用方式大同小异推荐使用 DAP。⚠️ 之所以使用 DAP是因为 DAP 完全开源免费。 ST-Link 或者 J-Link 在企业开发中更常见但是正版设备需要动辄上千元的授权费用并不适合初学者使用。 而且 DAP 的用法和 ST-Link 非常相似我们现在熟悉了 DAP未来在企业中如果使用 ST-Link也几乎不需要学习成本。❓问题之前我们学习特殊引脚的时候看过 BOOT0 可以让我们进入刷机模式烧写程序那么为什么还要用仿真器来进行烧写呢因为仿真器最核心的价值在于在线调试断点单步监控变量等等
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进