电子产业一站式赋能平台

PCB联盟网

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

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

[复制链接]

918

主题

918

帖子

7399

积分

高级会员

Rank: 5Rank: 5

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

30m432iej3r640467531.gif

30m432iej3r640467531.gif

+ y. |: J8 z, I) ]) b- M点击上方蓝色字体,关注我们; F/ R" T. ~: D+ M8 \4 T* @
& u. w6 |; P- M% O

: ]3 {) r$ |# R4 s9 S7 z$ [看门狗的基本原理是通过一个定时器来监测系统运行状态。正常情况下,应用程序需要定期向看门狗发送信号(喂狗),以防止定时器溢出。
+ J! m/ j0 c2 D0 q. D! Z- i# S5 K+ @! M" a! j, y
一旦程序发生异常,导致看门狗未能在规定时间内收到喂狗信号,定时器将会触发系统复位。  z1 m( y5 k: Q
" Q" ~& f/ h$ c9 {* G: a7 e/ W
根据实现方式的不同,看门狗可以分为硬件看门狗软件看门狗
/ F( F; C+ T; w3 a( J7 C- ^/ a8 p4 ?  W* [5 g2 _0 k# {+ c2 ]

4gkt5o5bsb3640467631.png

4gkt5o5bsb3640467631.png
) Z! j: I: I1 u3 r) |6 x
13 j/ Y! Y: C; j' Z- d% G5 L
硬件看门狗
' x4 t5 _, c3 W, t1.1、外部独立硬件看门狗
2 h2 q# U; ~$ J5 {

ajrddgejbsb640467731.png

ajrddgejbsb640467731.png

! }5 t: ~0 o! T/ z: Q  h3 n8 c9 @- o( K2 l
特点:: Q2 j8 y) H0 g0 w
  • 作为独立于MCU/MPU的外部芯片运行
  • 不受主处理器影响,即使处理器死机仍可触发复位
  • 可靠性最高,适用于工业、汽车、航天等对可靠性要求极高的应用场景
    $ e% y& |0 ?& Q# Z# g. t

    1 X" N9 R2 p1 C& d; b
    / }8 B! |1 E4 w3 ?- i
    工作方式:$ [3 S2 |( j' U" N. k
  • MCU 通过 GPIO 向看门狗芯片发送喂狗信号(例如周期性地翻转一个引脚)
  • 若 MCU 失去响应,外部看门狗检测到超时,则输出复位信号
  • 由于其独立性,该类看门狗的喂狗时间通常不可调或调整较受限% ?, @4 @! h- E* K  e- s
    ! Q$ y( p3 `$ \# m
    1.2、内置硬件看门狗. v+ W; s7 r( i
    特点:
    % b5 R" J. i! @+ m
  • 由处理器内部的定时器实现,通常由 MCU 内部的 WDT 外设负责管理
  • 需要软件驱动程序支持,可编程设置超时时间
  • 复位逻辑依赖于 MCU 自身,一旦 MCU 时钟或电源管理单元故障,可能导致看门狗失效' v+ L, f  S. E# Y1 L
    ! F2 j$ d7 i5 G: O1 G5 h

    ; R4 u, [) j6 a( ^$ M8 m工作方式:3 S' j: T0 x/ e) B7 `( ~1 E5 ]
  • 在应用程序中启用 WDT 并设置适当的超时时间
  • 定期调用 API 进行喂狗(如 STM32 的 HAL_IWDG_Refresh())
  • 若 MCU 进入死循环或阻塞,看门狗超时触发系统复位
    9 u7 J& M5 [6 u0 @) A2 T

    2 a6 i5 [( W* K1 D2
    # M3 z7 M& ?6 [( G软件看门狗/ q* c/ q" ~5 Z% T! d; D
    特点:1 B$ ?8 W( K, I
  • 通过软件定时器模拟看门狗功能
  • 依赖系统的定时器中断,若中断系统异常,可能会失效
  • 适用于轻量级应用,但可靠性远低于硬件看门狗
    5 i( C6 e6 z  [) P
    ; _  @3 L6 D& i! u* u  p

    6 }/ t' ~9 Y" ]% B* i" ~工作方式:
    " ]) R) A  _, U6 @
  • 在任务调度器(如 FreeRTOS)中实现定时检查
  • 任务正常运行时定期重置软件定时器
  • 若某任务超时未喂狗,则触发复位逻辑
    , b. x. c5 o; u& r. H7 e
    8 t9 s/ z  ?' n
    在调试过程中发现的故障,应该通过代码优化、异常处理、错误恢复机制等手段加以解决,而不是依赖看门狗。7 J, e: t7 n, P; p
    5 W& @' I9 I* ?3 {, l2 Z0 ^+ B, X
    看门狗的作用是在非人为可控情况下自动恢复系统,它不能取代良好的软件工程实践。  r' ~- ]' m6 J4 C
    0 G0 s( f$ |, C6 R* l3 w
    在某些应用场景(如数据采集系统),系统崩溃时可能需要保护关键数据,以便在重启后进行恢复。2 i2 w+ D9 w. B6 S9 z% _& c7 j* l

    , Q4 G. X  H( Z2 D这可能需要:0 r1 A  l5 K. J6 f; }  @8 y2 V2 D
  • 采用EEPROMFlash电池备份 RAM 存储关键变量
  • 结合上电自检(POST)机制,分析重启原因,决定是否进入故障恢复流程
    1 A( i4 L( B$ B+ s6 z" Y
    " K5 R9 e# S9 W+ t+ e/ l
    3
    + F% }& f. B3 M; f% Z1 ~* B看门狗喂狗策略5 ?- E/ _- b2 T5 {* r5 i
  • 避免在主循环或高频中断中盲目喂狗:这样可能会掩盖实际的问题,导致系统在异常情况下仍然喂狗,无法及时复位。解决方案:在关键任务执行完毕后喂狗,而不是简单地在循环内喂狗。
  • 结合任务超时检测(对于 RTOS):可以使用任务看门狗(Task Watchdog),在任务级别进行超时监测,而非仅靠系统级 WDT 进行复位。
  • 多级看门狗策略:采用软件看门狗监测任务,硬件看门狗监测整个系统,以构建更健壮的故障恢复机制。
    $ u1 f3 V( A: Z+ ?. r/ E3 W- P5 c& J看门狗是一种保障系统稳定性的关键机制,但它并不能取代软件优化和异常处理。
    ) Z( D* @4 ]$ v/ A# k9 O9 P. u+ J! a0 z; |5 N7 x% I5 X0 v
    在高可靠性应用中,外部硬件看门狗是最佳选择,而在一般嵌入式应用中,内置硬件看门狗已经足够。
    9 c: d$ ~# F! K) ]2 x/ Z! {9 M. u7 i2 }! q  ]" R2 g6 z0 z2 t
    软件看门狗可以作为任务级监测的补充手段。
    ) q; `! V$ E3 K8 q: l# r! U* H9 Z' m8 Z
    % i6 P! O$ ~9 i4 J5 L6 q2 w( [合理利用不同类型的看门狗,结合健壮的软件架构,才能真正提升系统的稳定性和可靠性。
    / V( u0 D. u# h6 E4 Y6 _3 b( E6 Y

    neiqvdt43bo640467832.jpg

    neiqvdt43bo640467832.jpg
    # P; G' o3 ?' J

    4hoxr3bhvct640467932.gif

    4hoxr3bhvct640467932.gif
    3 l# ]6 l# h" M$ N9 }
    点击阅读原文,更精彩~
  • 回复

    使用道具 举报

    发表回复

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

    本版积分规则


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