电子产业一站式赋能平台

PCB联盟网

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

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

[复制链接]

918

主题

918

帖子

7399

积分

高级会员

Rank: 5Rank: 5

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

30m432iej3r640467531.gif

30m432iej3r640467531.gif
1 q- r3 {/ |& P( s- }
点击上方蓝色字体,关注我们
) f: _+ ^, S  G7 b9 e# {1 `/ F- p' ^) @. e

: H9 M% @9 ]- f# }4 r) s看门狗的基本原理是通过一个定时器来监测系统运行状态。正常情况下,应用程序需要定期向看门狗发送信号(喂狗),以防止定时器溢出。5 W2 r7 j5 T& G+ n) R- |% B* Q' M0 k

7 j1 Z8 u; x5 k& o一旦程序发生异常,导致看门狗未能在规定时间内收到喂狗信号,定时器将会触发系统复位。# F$ U: j; [1 ^3 x. B$ y# i
4 g3 w$ U# c% W+ x
根据实现方式的不同,看门狗可以分为硬件看门狗软件看门狗2 Z9 w9 O0 A' u& n6 M+ n+ @
) U9 M3 K! u6 |3 A

4gkt5o5bsb3640467631.png

4gkt5o5bsb3640467631.png

' L0 A: @: P2 O5 s1
9 H' y4 E$ R; U: L5 I2 ]5 k/ K9 e  H/ n硬件看门狗! K* j5 L0 h) x
1.1、外部独立硬件看门狗
# @+ @7 F% H7 t& i- H6 b

ajrddgejbsb640467731.png

ajrddgejbsb640467731.png

0 L8 M6 L" y2 ~: c) l9 D. x. p: H% p* ?) i
特点:& i* C* d5 I: ?$ C7 U& T
  • 作为独立于MCU/MPU的外部芯片运行
  • 不受主处理器影响,即使处理器死机仍可触发复位
  • 可靠性最高,适用于工业、汽车、航天等对可靠性要求极高的应用场景
    8 l2 _! i; d9 Q0 R( N4 ]) N9 i  \

    ' L+ I. U# P  j( l+ \5 z! B

    8 t# B2 Z, R- v* X2 A( L工作方式:
    " W- J) c, M! O
  • MCU 通过 GPIO 向看门狗芯片发送喂狗信号(例如周期性地翻转一个引脚)
  • 若 MCU 失去响应,外部看门狗检测到超时,则输出复位信号
  • 由于其独立性,该类看门狗的喂狗时间通常不可调或调整较受限9 O1 `4 h7 [0 v
    * V( D& `2 q- r  S( ^- ^& \3 g
    1.2、内置硬件看门狗
    & V* d; K" o, B8 h7 u5 R) W6 Y特点:
    2 E0 D: ?7 T7 k8 S9 T
  • 由处理器内部的定时器实现,通常由 MCU 内部的 WDT 外设负责管理
  • 需要软件驱动程序支持,可编程设置超时时间
  • 复位逻辑依赖于 MCU 自身,一旦 MCU 时钟或电源管理单元故障,可能导致看门狗失效
    + O) ?! P& [, M0 r2 K

    9 t' F  G( H- p  T9 }3 B6 n( i) L! P
    6 q: B" x  S0 i; g
    工作方式:
      {$ P, u% t9 p8 M
  • 在应用程序中启用 WDT 并设置适当的超时时间
  • 定期调用 API 进行喂狗(如 STM32 的 HAL_IWDG_Refresh())
  • 若 MCU 进入死循环或阻塞,看门狗超时触发系统复位
    $ g2 L' f! c0 V, }4 |" X

    * q, S! E6 q+ s) E" }2
    & ?$ z5 C( _& q, t+ R软件看门狗4 H  Z$ ^* v2 _" P1 P" }
    特点:; E+ G! |' U; i* Y8 M9 n
  • 通过软件定时器模拟看门狗功能
  • 依赖系统的定时器中断,若中断系统异常,可能会失效
  • 适用于轻量级应用,但可靠性远低于硬件看门狗- \$ }! A$ n% d5 s& t4 u, O

    7 H* A, l1 L% {7 C8 T3 d9 t

    ( j5 X! ~, i; e" Z; m2 Z+ i工作方式:4 ?( K" A3 K  R
  • 在任务调度器(如 FreeRTOS)中实现定时检查
  • 任务正常运行时定期重置软件定时器
  • 若某任务超时未喂狗,则触发复位逻辑
    + ]$ I. M$ Q+ h' J  \  |( |

    1 v: ^4 ^) G! e# k: o* J在调试过程中发现的故障,应该通过代码优化、异常处理、错误恢复机制等手段加以解决,而不是依赖看门狗。2 b" I" v9 z  T% Q7 d9 \+ h

    5 g, N* \& E* e' w) B1 v3 V看门狗的作用是在非人为可控情况下自动恢复系统,它不能取代良好的软件工程实践。
    1 o6 p2 _8 ]- }  O* h. v4 Z
    - x, M/ Y2 O( j% q7 g& P2 X" z在某些应用场景(如数据采集系统),系统崩溃时可能需要保护关键数据,以便在重启后进行恢复。) {) S! s2 Y/ H2 @
    0 l% u1 x! e2 M0 D% e8 U/ _* Y
    这可能需要:4 F+ s1 Z7 J* n$ h
  • 采用EEPROMFlash电池备份 RAM 存储关键变量
  • 结合上电自检(POST)机制,分析重启原因,决定是否进入故障恢复流程
    " K8 z! f- u2 J3 v
    6 s+ j7 R( z1 _
    3
    , h% k+ I, e' o% D" j看门狗喂狗策略
    / ?3 h* Z1 [" s# f. s' n9 F
  • 避免在主循环或高频中断中盲目喂狗:这样可能会掩盖实际的问题,导致系统在异常情况下仍然喂狗,无法及时复位。解决方案:在关键任务执行完毕后喂狗,而不是简单地在循环内喂狗。
  • 结合任务超时检测(对于 RTOS):可以使用任务看门狗(Task Watchdog),在任务级别进行超时监测,而非仅靠系统级 WDT 进行复位。
  • 多级看门狗策略:采用软件看门狗监测任务,硬件看门狗监测整个系统,以构建更健壮的故障恢复机制。
    ( Z! Y4 M# c# h! E9 y看门狗是一种保障系统稳定性的关键机制,但它并不能取代软件优化和异常处理。
    1 z" G& o6 h) n& G8 x; C- j$ L# v1 i0 I1 R% Q7 _
    在高可靠性应用中,外部硬件看门狗是最佳选择,而在一般嵌入式应用中,内置硬件看门狗已经足够。
    7 U3 i0 S4 Z$ m) |
    7 Z& T0 A4 |9 C+ I4 \& ]软件看门狗可以作为任务级监测的补充手段。
    3 [& }" x& x5 c, D( Z, G3 N0 C5 W  J, F
    合理利用不同类型的看门狗,结合健壮的软件架构,才能真正提升系统的稳定性和可靠性。
    : T8 M+ P2 v* j3 S& p5 \

    neiqvdt43bo640467832.jpg

    neiqvdt43bo640467832.jpg
    # x: J' ~9 \% R3 T

    4hoxr3bhvct640467932.gif

    4hoxr3bhvct640467932.gif
    * T0 C1 e/ Z+ p7 Z
    点击阅读原文,更精彩~
  • 回复

    使用道具 举报

    发表回复

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

    本版积分规则


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