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

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

文章目录

  • 什么是最小系统?
  • 1. 供电方案
  • 2. NRST 引脚
  • 3. 外部时钟源
  • 4. 调试电路
  • 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)决定。
  • 参考电路:

    • 在这里插入图片描述

http://www.xdnf.cn/news/1110025.html

相关文章:

  • 深入详解:决策树在医学影像领域心脏疾病诊断的应用及实现细节
  • Pytest 跳过测试技巧:灵活控制哪些测试该跑、哪些该跳过
  • 图像扭曲增强处理流程
  • 物联网设备数据驱动3D模型的智能分析与预测系统
  • frp内网穿透教程及相关配置
  • 【Redis实战】Widnows本地模拟Redis集群的2种方法
  • Git 相关的常见面试题及参考答案
  • 国产电钢琴电子琴手卷钢琴对比选购指南
  • 2025年亚太杯(中文赛项)数学建模B题【疾病的预测与大数据分析】原创论文讲解(含完整python代码)
  • ESP32使用freertos更新lvgl控件内容
  • 搭建云手机教程
  • 聊下easyexcel导出
  • Java可变参数
  • 从基础加热到智能生态跨越:艾芬达用创新重构行业价值边界!
  • Go mod 依赖管理完全指南:从入门到精通
  • 代码随想录day28贪心算法2
  • 【AI News | 20250711】每日AI进展
  • Spring(四) 关于AOP的源码解析与思考
  • Java SE--抽象类和接口
  • 如何查看服务器当前用户的权限
  • GD32 CAN1和TIMER0同时开启问题
  • 深度学习15(GRU、LSTM+词嵌入+seq2seq+attention)
  • 电子基石:硬件工程师的器件手册 (五) - 三极管:电流放大的基石与开关的利刃
  • 7. JVM类加载器与双亲委派模型
  • 关于两种网络攻击方式XSS和CSRF
  • 二分法寻找无序序列的峰值
  • [Token]Token merging for Vision Generation
  • 学python,PyCharm 和 VSCode哪个更好用?
  • ChatRex RexSeek RexThinker: 结合多模态大语言模型的目标检测模型构建
  • vue3+vit+vue-router路由,侧边栏菜单,面包屑导航设置层级结构