电子产业一站式赋能平台

PCB联盟网

搜索
查看: 37|回复: 0
收起左侧

单片机如何选择合适的系统复位方案?

[复制链接]

918

主题

918

帖子

7399

积分

高级会员

Rank: 5Rank: 5

积分
7399
发表于 昨天 08:03 | 显示全部楼层 |阅读模式

30m432iej3r640467531.gif

30m432iej3r640467531.gif
2 Q5 f: n: ^, Y/ @+ ]0 H2 T
点击上方蓝色字体,关注我们* O% f  W& Z) E

. C9 B- @% O$ k) Q4 u  o4 J7 G) d; I/ u: Q( A* Z- }
看门狗的基本原理是通过一个定时器来监测系统运行状态。正常情况下,应用程序需要定期向看门狗发送信号(喂狗),以防止定时器溢出。* Q1 @6 A' C, a( p7 u% z" y
; J' M) _: v* e! @$ h" a6 p, V
一旦程序发生异常,导致看门狗未能在规定时间内收到喂狗信号,定时器将会触发系统复位。2 O& b. P9 w3 D* E2 W
) t' ]0 g" y$ d+ C( j( U
根据实现方式的不同,看门狗可以分为硬件看门狗软件看门狗2 J3 B* }. Z. O  n0 `

2 ]7 K. r& v. K# S

4gkt5o5bsb3640467631.png

4gkt5o5bsb3640467631.png
" P3 N  ?# X3 Y; F- K- ~! y
1
! H/ }- A, b( j2 ?$ N& Y. S$ ^硬件看门狗
9 q* x2 }( l5 R  G6 |# [' x1.1、外部独立硬件看门狗, d9 ^+ J* _: Q' }: |

ajrddgejbsb640467731.png

ajrddgejbsb640467731.png
3 \& Z# s9 Z& u  h( m

6 v- ~; O0 q- W8 [% r: \- W特点:
% p% R; b: l0 H! \1 I, F- t
  • 作为独立于MCU/MPU的外部芯片运行
  • 不受主处理器影响,即使处理器死机仍可触发复位
  • 可靠性最高,适用于工业、汽车、航天等对可靠性要求极高的应用场景
    / `# t$ O1 e" l& W6 `
    2 P2 \3 [# ?9 D7 O

    6 M  G- g- `- e( d3 p0 e* W9 n工作方式:; C' E, \) f$ W9 @
  • MCU 通过 GPIO 向看门狗芯片发送喂狗信号(例如周期性地翻转一个引脚)
  • 若 MCU 失去响应,外部看门狗检测到超时,则输出复位信号
  • 由于其独立性,该类看门狗的喂狗时间通常不可调或调整较受限6 p9 }" R5 Q8 f8 r
    3 ]2 p0 K( `  H( R% g
    1.2、内置硬件看门狗8 g# Y3 T( g. j2 p2 p$ T2 K6 G
    特点:, z( i5 S; K9 B  B
  • 由处理器内部的定时器实现,通常由 MCU 内部的 WDT 外设负责管理
  • 需要软件驱动程序支持,可编程设置超时时间
  • 复位逻辑依赖于 MCU 自身,一旦 MCU 时钟或电源管理单元故障,可能导致看门狗失效
    # I1 S8 q6 U! e$ u

    * L1 U- @0 a7 t1 d/ S& g: I
    : u2 j8 |+ P) d1 Z4 @2 o3 Z
    工作方式:
    8 m9 H& o: ]* u7 z
  • 在应用程序中启用 WDT 并设置适当的超时时间
  • 定期调用 API 进行喂狗(如 STM32 的 HAL_IWDG_Refresh())
  • 若 MCU 进入死循环或阻塞,看门狗超时触发系统复位
    / o' Q  I" s8 I( I

    % q0 C0 ]; J; z3 h4 F; W2" R6 S2 G1 H# J8 g$ j
    软件看门狗
    7 n3 t. O  P( ^9 W: W, [$ J) J特点:# L8 j4 H5 q' H; D& B
  • 通过软件定时器模拟看门狗功能
  • 依赖系统的定时器中断,若中断系统异常,可能会失效
  • 适用于轻量级应用,但可靠性远低于硬件看门狗
    . t+ q# V: T, C$ Q# n

    8 g9 e! e) m1 x1 x9 @% Q. r
    / h) b, \& w  E$ s+ d
    工作方式:/ J& b* a& o2 J3 f1 h
  • 在任务调度器(如 FreeRTOS)中实现定时检查
  • 任务正常运行时定期重置软件定时器
  • 若某任务超时未喂狗,则触发复位逻辑* n0 F" \0 \8 |9 T  h" d9 _, w
    5 u% w8 P5 ?2 G
    在调试过程中发现的故障,应该通过代码优化、异常处理、错误恢复机制等手段加以解决,而不是依赖看门狗。
    $ @  c6 G$ |9 Q8 N' L2 X: N$ t
    4 Y: O* z, Y# Q% I' l看门狗的作用是在非人为可控情况下自动恢复系统,它不能取代良好的软件工程实践。2 L: @6 v2 D% W/ X; C
    / {' b4 y1 u- J
    在某些应用场景(如数据采集系统),系统崩溃时可能需要保护关键数据,以便在重启后进行恢复。
    + Z% i3 D& M7 ^, b$ [% X" I' C( u. I' L/ h  a6 O
    这可能需要:7 G" w( [( C# F1 G
  • 采用EEPROMFlash电池备份 RAM 存储关键变量
  • 结合上电自检(POST)机制,分析重启原因,决定是否进入故障恢复流程
    # l7 s0 m! C3 S+ e2 |
    7 f, U) s+ T9 z8 k
    3- D: W9 ^3 K* d& t6 ~- ]
    看门狗喂狗策略
    5 ~1 g# F" x. s; \) n
  • 避免在主循环或高频中断中盲目喂狗:这样可能会掩盖实际的问题,导致系统在异常情况下仍然喂狗,无法及时复位。解决方案:在关键任务执行完毕后喂狗,而不是简单地在循环内喂狗。
  • 结合任务超时检测(对于 RTOS):可以使用任务看门狗(Task Watchdog),在任务级别进行超时监测,而非仅靠系统级 WDT 进行复位。
  • 多级看门狗策略:采用软件看门狗监测任务,硬件看门狗监测整个系统,以构建更健壮的故障恢复机制。
    ; M! G7 z7 }* ?. {' w$ o7 R看门狗是一种保障系统稳定性的关键机制,但它并不能取代软件优化和异常处理。
    0 ]. ?# D6 Q) u/ {+ F" k; e2 j5 L* f. v" g% U  h+ S
    在高可靠性应用中,外部硬件看门狗是最佳选择,而在一般嵌入式应用中,内置硬件看门狗已经足够。
    5 u1 o  [) c+ L( k
    - f) b! P+ A, t9 ~! b; o- L# A8 A软件看门狗可以作为任务级监测的补充手段。/ f9 [0 B! _% X# \- B; p
    ; C; e+ r( I" Y7 w5 O1 U" T
    合理利用不同类型的看门狗,结合健壮的软件架构,才能真正提升系统的稳定性和可靠性。
    8 f6 r+ c% o; {

    neiqvdt43bo640467832.jpg

    neiqvdt43bo640467832.jpg

    8 w- e, e! j3 v9 ?) k, k$ f! B

    4hoxr3bhvct640467932.gif

    4hoxr3bhvct640467932.gif
    . W7 M# p+ b$ |  i. A$ X
    点击阅读原文,更精彩~
  • 回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    联系客服 关注微信 下载APP 返回顶部 返回列表