【STM32实践篇】:最小系统组成

文章目录

  • 什么是最小系统?
  • [1. 供电方案](#1. 供电方案)
  • [2. NRST 引脚](#2. NRST 引脚)
  • [3. 外部时钟源](#3. 外部时钟源)
  • [4. 调试电路](#4. 调试电路)
  • [5. BOOT](#5. BOOT)


什么是最小系统?

  • 一个微处理器是无法独立运行的,需配备供电、时钟信号、复位信号;若其内部无程序存储器,还需外接存储器,才能构成完整工作系统。

  • 单片机最小系统,指的是用最少器件组成的、可使单片机正常工作的系统。具体到STM32单片机,它同样不能仅靠芯片本身工作,必须搭配相应外围电路,这些能让STM32正常工作的最简单基础电路,就统称为STM32最小系统。

1. 供电方案

  • 数字电源 VDD ,电压范围:1.8~3.6 V,给芯片的 I/O引脚内部稳压器(如果启用的话)供电;通过芯片的 VDD 引脚,从外部直接接入电源。

    • 以 STM32F103ZET6 为例,芯片的 11 组 VDD 电源引脚(VDD_1 - VDD_11)全部并联连接至 VDD_MCU 电源节点,而 11 组 VSS 地引脚(VSS_1 - VSS_11)则全部并联后统一接地 GND:
    • 输入电源为 V_3V3(3.3V),通过磁珠FB1隔离高频噪声,采用10μF电容储能并抑制电压波动,11颗并联的0.1μF陶瓷电容滤除高频噪声,最终为 VDD_MCU 提供稳定且低噪声的3.3V供电:
    • 系统电源 V_Sys(5V)经0Ω电阻和并联的100μF电解电容储能、0.1μF陶瓷电容高频滤波后输入AMS1117,由AMS1117稳压输出3.3V,再经 100μF电解电容抑制负载波动和0.1μF陶瓷电容滤除高频噪声,最终生成低噪声的 V_3V3,并通过 LED 指示电源状态:
  • 模拟电源 VDDA VSSA ,电压范围:1.8~3.6 V,给芯片内部的 模拟外设 供电,比如:ADC,DAC, 复位模块,RC电路,PLL锁相环;VDDA 必须连到 VDD,VSSA 必须连到 VSS,因为模拟电路和数字电路要共地,否则会有干扰,导致ADC/DAC等模拟功能不准。

    • 芯片的 VDDA 引脚连接至 VDDA_MCU 电源节点,而 VSSA 引脚接地 GND:
    • 输入电源为 V_3V3(3.3V),通过磁珠FB2隔离高频噪声,采用10μF电容储能并抑制电压波动,1μF电容抑制中频纹波,10nF电容滤除高频噪声,最终为 VDDA_MCU 提供3.3V供电:
  • 备用电源 VBAT,电压范围:1.65~3.6 V,当主电源 VDD 断电时,作为备用电源给这些关键模块供电:RTC实时时钟,32 kHz外部时钟振荡器,备份寄存器; 通过芯片内部的电源开关自动切换,VDD 有电时不用它,断电后自动启用。

    • 芯片的 VBAT 引脚连接至 VBAT 电源节点:
    • 当 VDD_MCU (3.3V) 存在时,电流经 BAT54-C 肖特基二极管内部A通道向RTC供电,同时反向阻断电池电流;当 VDD_MCU 断开,CR2032 电池经 BAT54-C 内部B通道为RTC供电:

2. NRST 引脚

  • NRST是STM32的主动低电平复位引脚,这意味着:NRST引脚为高电平 --- 正常工作状态;当NRST引脚被拉为低电平时,MCU内核和外设会被强制复位。一旦NRST恢复到高电平并满足稳定条件,MCU开始运行程序。
  1. 电气特性:

    • VIL:当NRST引脚上的电压低于或等于这个最大值 0.8V 时,芯片会将其识别为有效的低电平。
    • VIH:当NRST引脚上的电压高于或等于这个最小值 2V 时,芯片会将其识别为有效的高电平。
    • Vhys:NRST内部包含施密特触发器输入电路,具有约 200mV 的迟滞窗口。
    • Rpu:内部永久上拉电阻的阻值范围。通常典型值为 40kΩ,可能在 30kΩ 到 50kΩ 之间。当外部器件需要拉低NRST时,它必须能克服这个上拉电阻将电压拉至有效低电平(<=0.8V)。例如,当 VDD=3.3V, Rpu=40kΩ 时,下拉器件需要能吸入最大约 (3.3V - 0V)/30kΩ ≈ 110uA(以最坏的 Rpu Min=30kΩ计算)的电流。
    • VF:NRST引脚内部带有滤波器,会被过滤掉的低脉冲宽度最大值是 100ns。
    • VNF:在 VDD > 2.7V 条件下,一个宽度大于等于300ns的低脉冲一定不会被内部滤波器忽略,将被视为有效复位信号。
    • TNRST_OUT:当MCU因为内部原因需要复位时,它会通过NRST引脚向外部电路输出一个至少持续20us的低脉冲。
  2. 推荐的NRST引脚保护电路:

    外部复位源:​​ 可以是一个简单的按键+电阻,当按键按下时,NRST通过按键被拉向GND,电压≈0V,低于0.8V,可靠复位。

  3. 参考设计:

    • 当SW1按键按下时,NRST直接接地被拉为低电平,触发MCU复位;释放按键后,VDD_MCU通过R43上拉使NRST恢复高电平,MCU退出复位状态。

3. 外部时钟源

  1. 用晶体 + 外部元件(电容、电阻)搭建稳定的高速外部时钟

    • 8MHz 无源晶体 + 2个负载电容 + 电阻使得晶体精确工作在 8MHz;OSC_IN 和 OSC_OUT作为时钟输入和输出引脚与无源晶体跨接,形成反馈回路(内部振荡信号从 OSC_OUT 输出,经晶体后回到 OSC_IN),内部集成反馈电阻RF给内部振荡电路提供直流偏置,让放大器工作在合适区间,确保振荡能启动并持续;芯片内部振荡模块从 fHSE 输出8MHz 时钟:
    • 参考电路:
  2. 使用 32.768kHz 无源晶体搭建低速外部时钟

    • 为什么用 32.768kHz 晶体做 LSE:分频 15 次后可精准得到 1Hz 信号(32768 ÷ 2¹⁵ = 1Hz),完美匹配 RTC秒计数需求,是行业标准RTC晶体频率。
    • 参考电路:

4. 调试电路

  • 调试接口并非系统运行的必需接口电路,但为便于系统开发、调试及升级等操作,在设计最小系统时可加入这部分电路。STM32系列微处理器内置JTAG与SWD两个接口,借助这两个接口,能够控制芯片运行并获取内部寄存器信息。这两个接口均需使用GPIO(普通I/O口)为调试仿真器提供支持,只需选用其中一个接口,就能将PC上编译完成的程序下载到单片机中进行运行调试。
  1. JTAG

    JTAG是一种与IEEE 1149.1标准兼容的国际测试协议,主要应用于芯片的内部测试。如今多数高端器件都支持这一协议,像DSP、FPGA等器件均在此列。标准的JTAG调试接口包含4根线,分别是模式选择线(TMS)、时钟线(TCK)、数据输入线(TDI)和数据输出线(TDO)。

    参考电路:

  2. SWD

    在高速场景或数据量较大时,通过JTAG下载程序容易失败,而SWD下载的失败概率更低,可靠性更强。若仿真器支持,通常在采用JTAG模式时,可直接切换为SWD模式。SWD模式所需引脚更少,因此占用的PCB空间更小。当芯片体积受限的情况下,推荐采用SWD模式,此时可选用间距2.54mm的小型5芯端子作为仿真接口。

    SWD模式的连接只需2根线:SWDIO作为双向数据口,负责主机与目标设备间的数据传输;SWDCLK作为时钟口,由主机提供驱动信号。

    参考电路:

  • STM32系列处理器支持两种调试模式,其中JTAG模式会占用较多PCB面积,而SWD模式的占用量则小很多。并且在调试速度等性能上,SWD也不逊色于JTAG模式,因此建议在实际应用中优先采用SWD模式进行设计。SWD并非标准端口,可根据实际需求灵活排列引脚。

5. BOOT

  • 在STM32单片机里,程序计数器寄存器的默认值,决定了处理器会从哪个具体地址去获取第一条要执行的指令。不过,处理器启动的时候,对于自身所连接的存储设备------不管是闪存、内存还是硬盘,其实是"一无所知"的。这就需要通过硬件设计,来告诉它存储第一条指令的外设究竟是哪一个。所以,STM32系列处理器第一条执行指令的地址,是由硬件设计来确定的。

  • 通过BOOT[1:0]引脚选择3种不同的启动模式

    • 主 Flash
      • 芯片上电后,若检测到BOOT0引脚为低电平,0x00000000与0x00000004这两个地址会映射至内部FLASH的起始地址0x08000000和0x08000004。此时,内核退出复位状态后,会先读取内部FLASH中0x08000000地址存储的内容,将其写入栈指针MSP作为栈顶地址;再读取0x08000004地址存储的内容,赋给程序指针PC,作为第一条要执行的指令所在地址。完成这两步操作后,内核就能从PC指向的地址开始读取并执行指令了。
    • 系统存储器
      • 当芯片上电后,若采样到BOOT0=1且BOOT1=0的引脚状态组合,内核会从系统存储器的0x1FFFF000与0x1FFFF004地址处读取MSP和PC的值,完成自举过程。系统存储器是一块用户无法访问的特殊空间,ST公司在芯片出厂前,已在其中固化了一段代码。因此,采用系统存储器启动方式时,内核会执行这段固化代码;代码运行时,能够为ISP(在线编程)提供支持。在STM32F4系列芯片上,其典型功能是检测USART1传输的信息,并根据这些信息更新内部FLASH的内容,以此实现产品应用程序的升级------所以,这种启动方式也被称为ISP启动方式。
    • SRAM
      • 与内部Flash的情况类似,当芯片上电后检测到BOOT0与BOOT1引脚均为高电平时,0x00000000与0x00000004地址会映射至内部SRAM的起始地址0x20000000和0x20000004,内核会从SRAM空间读取内容完成自举。实际应用中,0x00000000与0x00000004地址存储的内容由启动文件startup_stm32f407xx.s决定;而在链接阶段,这些内容的绝对地址(即分配到内部Flash还是内部SRAM)则由分散加载文件(sct)决定。
  • 参考电路:


相关推荐
LS_learner9 小时前
树莓派(ARM64 架构)Ubuntu 24.04 (Noble) 系统 `apt update` 报错解决方案
嵌入式硬件
来自晴朗的明天9 小时前
16、电压跟随器(缓冲器)电路
单片机·嵌入式硬件·硬件工程
钰珠AIOT9 小时前
在同一块电路板上同时存在 0805 0603 不同的封装有什么利弊?
嵌入式硬件
代码游侠10 小时前
复习——Linux设备驱动开发笔记
linux·arm开发·驱动开发·笔记·嵌入式硬件·架构
代码游侠20 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
xuxg20051 天前
4G 模组 AT 命令解析框架课程正式发布
stm32·嵌入式·at命令解析框架
CODECOLLECT1 天前
京元 I62D Windows PDA 技术拆解:Windows 10 IoT 兼容 + 硬解码模块,如何降低工业软件迁移成本?
stm32·单片机·嵌入式硬件
BackCatK Chen1 天前
STM32+FreeRTOS:嵌入式开发的黄金搭档,未来十年就靠它了!
stm32·单片机·嵌入式硬件·freertos·低功耗·rtdbs·工业控制
全栈游侠1 天前
STM32F103XX 02-电源与备份寄存器
stm32·单片机·嵌入式硬件