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

MCU 随机重启?别只怪电源纹波,看看掉电复位(BOR)阈值

摘要:系统电压 3.3V,掉到 3.0V 时 MCU 频繁重启,但 datasheet 写着最低工作电压是 2.7V?不是电源带不动,而是BOR(掉电复位)阈值​ 配置过低或电源跌落斜率太陡。本文解析 MCU 复位的真实边界条件。


一、问题描述(现象)

**电池供电设备,电量显示还有 60%;

电机一启动或大电流负载一开启,MCU 立刻重启;

万用表测电压只有 3.0V,并未低于 MCU 的最低工作电压。**

很多工程师的排查方向是:

  1. 电源纹波太大?

  2. 去耦电容不够?

  3. 看门狗超时?


二、原理分析

1. 物理模型

MCU 内部有一个电压监控器(Brown-out Reset)。

VDD ──► [BOR Comparator] ──► Reset Logic ^ | BOR Threshold (e.g. 2.8V)

2. 核心参数

  • BOR Threshold(掉电复位阈值):MCU 内部固定的或可编程的电压阈值。

  • Vdrop(跌落深度):负载瞬态引起的电压跌落。

  • dV/dt(跌落斜率):电压下降的速度。

3. 反直觉真相

“最低工作电压 2.7V” ≠ “复位电压 2.7V”。

  • 大多数 MCU 的BOR 阈值高于最低工作电压

  • 例如:

    • STM32:BOR Level 0 = 2.0V(可配置)

    • ESP32:POR = 2.3V ~ 2.8V(典型值)

  • 结果:电压掉到 3.0V,虽然 MCU 还能跑,但 BOR 已经触发复位。


三、工程级解决方案

方案 1:正确配置 BOR 级别(软件解法)

如果你的 MCU 支持可编程 BOR(如 STM32):

// 设置 BOR 阈值为最低(如 2.0V) __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);

注意

降低 BOR 阈值会降低噪声容限,必须在电源纹波极小​ 的情况下使用。

方案 2:增加大容量储能电容(硬件解法)

应对大电流负载瞬态。

Vbat -> [LDO] -> [10uF MLCC] -> [100uF 电解] -> MCU

经验公式:

C ≥ I_load × Δt / ΔV
  • I_load:电机启动峰值电流(如 500mA)

  • Δt:持续时间(如 10ms)

  • ΔV:允许跌落(如 0.3V)

C ≥ 16.6 mF(通常需要钽电容或超级电容)

方案 3:电源斜率控制

在软件中逐步开启大功率负载。

// 错误:直接全速启动电机 Motor_SetSpeed(100); // 正确:缓启动 for (int i = 0; i <= 100; i++) { Motor_SetSpeed(i); delay_ms(10); }

四、选型避坑建议

  1. 不要迷信“低压运行”

    • 虽然 MCU 能在 2.7V 跑,但 Flash 擦写、ADC 精度会严重恶化。

  2. BOR 滞回(Hysteresis)

    • BOR 有滞回电压(如 100mV)。

    • 电压必须回升到 (Threshold + Hysteresis) 以上,复位才会解除。

  3. 复位标志

    • 每次重启后,务必读取复位标志(RCC_CSR / RSTC)。

    • 区分是 POR(上电)、BOR(掉电)还是软件复位。


五、总结 Checklist

  • [ ] 是否查阅了 MCU datasheet 中 BOR/POR 的具体阈值?

  • [ ] BOR 阈值是否高于系统的最低工作电压?

  • [ ] 大电流负载启动时,VDD 跌落是否超过 BOR 阈值?

  • [ ] 是否在重启后读取了复位源标志?


六、写在最后(关注我,少走弯路)

我是 gqqsherry,一个拒绝调包、专注底层逻辑的嵌入式工程师。

MCU 的复位逻辑是“最后的防线”,配置错了,系统就会变成“薛定谔的设备”。

关注我的专栏《嵌入式底层避坑指南》,下一篇我们将深入解析《低功耗模式唤醒后程序跑飞?别只怪时钟,看看 Vcore 与 Flash 等待》

👉下一篇预告:《STOP 模式唤醒后,为什么外设全乱了?》


原创文章,转载请注明出处。

http://www.jsqmd.com/news/994438/

相关文章:

  • 从理想模型到工程实践:双目深度估计的完整技术链路解析
  • 三分钟带你了解MPK5
  • MPC8569E高速接口设计实战:SRIO、I2C与GPIO电气规范深度解析
  • 保姆级教程:用Spark 3.4.1 + Kafka 3.0.0实现Direct方式实时WordCount(附完整代码)
  • HSTracker:macOS平台终极炉石传说套牌追踪器完全指南
  • 脚长对应鞋码怎么查?这款在线工具帮你快速换算
  • 超越简单替换:用Poi-tl玩转Word模板,实现数据明细表与动态柱状图联动
  • MC9S12KT256 Flash操作实战:从命令序列到ECC故障处理
  • 【兰州交通大学主办 | IEEE出版,IEEE官方认可 | 往届已见刊,会后4个月完成EI、Scopus检索 | 众多院校领导坐镇】第二届电气工程、自动化与信息科学国际学术会议(EEAIS 2026)
  • 从一次真实的HW行动复盘说起:我们是如何通过SNMP弱口令‘摸清’整个靶标网络的
  • 亲测翔安区本地不锈钢批发厂家精工加工,质筑未来|厦门市翔安区天华菲金属制品经营部全方位赋能闽南金属建材行业 - 信息热点
  • 数据标注精度评估方法论:如何识别时序标注中的系统性偏差
  • 2026年廊坊GEO优化公司怎么选?资深测评专家的客观评测指南 - 信息热点
  • 【期末复习02】51单片机期末复习总纲领
  • Cursor Pro破解工具:终极免费方案解决AI编程助手试用限制
  • 智慧供暖可视化组态管理平台解决方案
  • 杭州百达翡丽手表回收去哪里?铂金认证品牌仅此一家 - 奢侈品回收评测
  • Roboto字体实战指南:多语言字符集的完整配置方案
  • NXP MC9S12G ADC10B12CV2模块配置与应用实战指南
  • AMD Ryzen SDT调试工具终极指南:解锁处理器隐藏性能的完整教程
  • MC9S08JM60 USB开发与调试实战:从模块配置到问题追踪
  • 嵌入式硬件设计核心:MC9S12E128电气特性参数深度解析与实战避坑
  • 军工品质专精特新:苏州贝特BTMF微小型金属转子流量计,攻克强腐蚀微小流量“卡脖子”难题 - 信息热点
  • 30VIN,0.25A,抑制输出过冲,稳压LDO,XZ6339
  • Windows开机自动运行的文件清理小工具(支持按日期/后缀/大小筛选,中英文界面一键切换)
  • C#编写的可切换MySQL与SQL Server的仓库后台系统(含Docker和CI/CD支持)
  • YOLOv5 7.0 换Backbone避坑指南:不用Timm库,手把手教你接入ResNet(附完整代码)
  • 深入解析MC9S12G Flash安全机制与核心命令实战
  • 低功耗模式唤醒后程序跑飞?别只怪时钟,看看 Vcore 与 Flash 等待
  • 如何高效管理多系统启动?EFI Boot Editor专业解决方案深度解析