电子产业一站式赋能平台

PCB联盟网

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

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

[复制链接]

918

主题

918

帖子

7399

积分

高级会员

Rank: 5Rank: 5

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

30m432iej3r640467531.gif

30m432iej3r640467531.gif

" w( F) R1 N6 T/ |, f1 X- z点击上方蓝色字体,关注我们' a' p1 S. V5 e
3 z) b/ H; ^9 z4 {

/ v9 u" n7 f4 f% O8 z看门狗的基本原理是通过一个定时器来监测系统运行状态。正常情况下,应用程序需要定期向看门狗发送信号(喂狗),以防止定时器溢出。* }0 j7 h+ e: \

3 J! Y, {' h4 R  b4 n一旦程序发生异常,导致看门狗未能在规定时间内收到喂狗信号,定时器将会触发系统复位。9 U! G$ f& c) N3 F( c* g! O
) J5 X8 c, W6 r5 J8 x" j8 I6 B7 `
根据实现方式的不同,看门狗可以分为硬件看门狗软件看门狗: C( f8 G& w( m% v- |( c& A1 ?

1 a1 b+ i- Y7 \/ H9 j: D% h: P6 u

4gkt5o5bsb3640467631.png

4gkt5o5bsb3640467631.png
* y- o$ s" J4 u% X
1
0 H( u# o* n. A8 W! R" m4 F硬件看门狗
, o% K# c7 G! l, o3 z. J$ j% f1.1、外部独立硬件看门狗
% n8 G1 g) K% O- y6 U. [

ajrddgejbsb640467731.png

ajrddgejbsb640467731.png

2 a; L3 b0 i  f+ s$ Z
. q  B) }& [, K6 h; R4 b特点:
& n3 P3 J# }) h) U+ ]8 R
  • 作为独立于MCU/MPU的外部芯片运行
  • 不受主处理器影响,即使处理器死机仍可触发复位
  • 可靠性最高,适用于工业、汽车、航天等对可靠性要求极高的应用场景
    # r0 b* b3 }3 R6 _6 Y5 @

    + @3 o' S: ?4 X7 p( x( h
    * o% v3 ~5 v) v  J# }8 T- y
    工作方式:
    ! y; X9 D. b5 ]
  • MCU 通过 GPIO 向看门狗芯片发送喂狗信号(例如周期性地翻转一个引脚)
  • 若 MCU 失去响应,外部看门狗检测到超时,则输出复位信号
  • 由于其独立性,该类看门狗的喂狗时间通常不可调或调整较受限
    ! y6 a( R$ G( \

    8 L  x; ?5 b+ P+ v1.2、内置硬件看门狗
    % R* V$ b6 }: Q特点:
    $ ]0 i/ V: M" z
  • 由处理器内部的定时器实现,通常由 MCU 内部的 WDT 外设负责管理
  • 需要软件驱动程序支持,可编程设置超时时间
  • 复位逻辑依赖于 MCU 自身,一旦 MCU 时钟或电源管理单元故障,可能导致看门狗失效
    - c9 k' ^+ M* V; `3 L) R0 \

    3 o1 Q% h! y. M* C
    / `5 }1 R3 g% c5 [7 \3 s! @
    工作方式:
    6 s6 U. t( w4 J3 @
  • 在应用程序中启用 WDT 并设置适当的超时时间
  • 定期调用 API 进行喂狗(如 STM32 的 HAL_IWDG_Refresh())
  • 若 MCU 进入死循环或阻塞,看门狗超时触发系统复位; b: c3 @* S' |: w; Q, X3 S! S
    2 {) u& `) }! A; l% v9 j3 C% Z
    2) P5 S& Z! z4 f$ C& h9 V* C
    软件看门狗
    8 Y5 I: P* s+ e% ?特点:% _) b* s: |8 y; S' _1 K
  • 通过软件定时器模拟看门狗功能
  • 依赖系统的定时器中断,若中断系统异常,可能会失效
  • 适用于轻量级应用,但可靠性远低于硬件看门狗
      w% k7 F# A' g: }1 t2 }  d

    6 }0 a4 e* _) ^2 H
    / b+ R% n# ?2 Q, x, L/ i! O$ `
    工作方式:. L4 f, X: O: ]5 p3 A  b
  • 在任务调度器(如 FreeRTOS)中实现定时检查
  • 任务正常运行时定期重置软件定时器
  • 若某任务超时未喂狗,则触发复位逻辑7 w: ]! ^7 \: c3 V! Q

    7 w, ?+ o* x7 c1 O' I在调试过程中发现的故障,应该通过代码优化、异常处理、错误恢复机制等手段加以解决,而不是依赖看门狗。
    ! h: m. N2 }3 P9 Z% c
    1 i8 r+ {  j, Q+ H1 @7 m4 U$ f8 [看门狗的作用是在非人为可控情况下自动恢复系统,它不能取代良好的软件工程实践。1 c! T# d+ X" ?$ B
    ' L2 S3 z% j! k
    在某些应用场景(如数据采集系统),系统崩溃时可能需要保护关键数据,以便在重启后进行恢复。
    # g& S6 N, e8 H+ ^! y+ h% _- I8 q
    + v6 r- w& f/ v6 H+ |, b这可能需要:
    - I3 `4 @% G, y' o) `9 q8 y
  • 采用EEPROMFlash电池备份 RAM 存储关键变量
  • 结合上电自检(POST)机制,分析重启原因,决定是否进入故障恢复流程
    ; M. \5 n* y% }. ]

    1 K: h! R1 u; ^6 L8 I3* \5 y5 T, q9 ?" X" D6 K- q  @
    看门狗喂狗策略
    - ^) l; x7 E+ f4 S; m5 o. e
  • 避免在主循环或高频中断中盲目喂狗:这样可能会掩盖实际的问题,导致系统在异常情况下仍然喂狗,无法及时复位。解决方案:在关键任务执行完毕后喂狗,而不是简单地在循环内喂狗。
  • 结合任务超时检测(对于 RTOS):可以使用任务看门狗(Task Watchdog),在任务级别进行超时监测,而非仅靠系统级 WDT 进行复位。
  • 多级看门狗策略:采用软件看门狗监测任务,硬件看门狗监测整个系统,以构建更健壮的故障恢复机制。7 k+ e- q* q8 }. |; W; y
    看门狗是一种保障系统稳定性的关键机制,但它并不能取代软件优化和异常处理。3 o6 i8 `& r7 M4 l' K0 D

    " q, U* ~$ I8 j# F6 Q  K在高可靠性应用中,外部硬件看门狗是最佳选择,而在一般嵌入式应用中,内置硬件看门狗已经足够。: G: m6 P& E$ S* _7 V/ Q# X

    ( W0 a5 \4 D4 Y9 X7 P  w1 N$ ?( {% {软件看门狗可以作为任务级监测的补充手段。
    $ i# K& M* I) u# _/ _: S9 v5 o
    7 [7 ]) t) f7 E8 y合理利用不同类型的看门狗,结合健壮的软件架构,才能真正提升系统的稳定性和可靠性。- W+ A4 `- I# F) ?

    neiqvdt43bo640467832.jpg

    neiqvdt43bo640467832.jpg

    ' X  L2 r8 I; T: {" _. y

    4hoxr3bhvct640467932.gif

    4hoxr3bhvct640467932.gif
    8 b  Y* S4 C1 R- K
    点击阅读原文,更精彩~
  • 回复

    使用道具 举报

    发表回复

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

    本版积分规则


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