电子产业一站式赋能平台

PCB联盟网

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

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

[复制链接]

918

主题

918

帖子

7399

积分

高级会员

Rank: 5Rank: 5

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

30m432iej3r640467531.gif

30m432iej3r640467531.gif

! O. D: }1 K1 B" N点击上方蓝色字体,关注我们$ D. b/ }# G2 d. W$ ~9 C1 |. e2 S+ \

9 _1 F, M. j/ s' Z( ^3 t% }
+ \" n+ F6 Q4 D" G7 R& ]! j" Q5 I看门狗的基本原理是通过一个定时器来监测系统运行状态。正常情况下,应用程序需要定期向看门狗发送信号(喂狗),以防止定时器溢出。3 V+ j/ L4 K6 [, r

- g! c% X- t+ K% K一旦程序发生异常,导致看门狗未能在规定时间内收到喂狗信号,定时器将会触发系统复位。7 O# R: a4 Z- M- o! {; E

: M+ y+ m4 {; x: Z( M根据实现方式的不同,看门狗可以分为硬件看门狗软件看门狗
( \- D7 [9 B; e9 _
! c/ g" M7 c8 A

4gkt5o5bsb3640467631.png

4gkt5o5bsb3640467631.png

, \" ?1 d- a4 Q- Y4 H$ _1
& d. O  E) V  g, b" A( i6 C. r硬件看门狗
2 B$ j& k$ ~* Z7 g! y* N  d7 |% ?; Y1.1、外部独立硬件看门狗
' v' B4 Q# `8 l6 K

ajrddgejbsb640467731.png

ajrddgejbsb640467731.png

/ z5 y* N5 u2 u" U  F3 s
/ L0 v4 D* R# k2 q( z特点:
$ E0 N' \8 q! P8 C
  • 作为独立于MCU/MPU的外部芯片运行
  • 不受主处理器影响,即使处理器死机仍可触发复位
  • 可靠性最高,适用于工业、汽车、航天等对可靠性要求极高的应用场景
    ( I4 m+ j) R, a, Y7 S

    6 Y, f2 P" a9 ~+ S; r4 F

    " N& _& P+ o4 P; \. B" n' p0 u/ k工作方式:5 E' Q4 V, n# F( v
  • MCU 通过 GPIO 向看门狗芯片发送喂狗信号(例如周期性地翻转一个引脚)
  • 若 MCU 失去响应,外部看门狗检测到超时,则输出复位信号
  • 由于其独立性,该类看门狗的喂狗时间通常不可调或调整较受限6 q; k7 m6 T4 ^8 q# C" @

    # v5 t( z/ I9 i4 E# p1 ^9 S* p5 m/ Q1.2、内置硬件看门狗
    , Q0 B/ u1 h3 y9 H' M特点:. ~% V) ]4 p. n- N, u  G; s
  • 由处理器内部的定时器实现,通常由 MCU 内部的 WDT 外设负责管理
  • 需要软件驱动程序支持,可编程设置超时时间
  • 复位逻辑依赖于 MCU 自身,一旦 MCU 时钟或电源管理单元故障,可能导致看门狗失效, u& t2 G6 G0 U* r2 R: e4 ]
    # q7 s/ H$ K$ Q

    ; O! C- ]1 s( c# D; U/ R$ O工作方式:
    + Q3 L- O+ o0 Q1 w) Q9 @
  • 在应用程序中启用 WDT 并设置适当的超时时间
  • 定期调用 API 进行喂狗(如 STM32 的 HAL_IWDG_Refresh())
  • 若 MCU 进入死循环或阻塞,看门狗超时触发系统复位
    ' }/ D8 ~4 _1 k) M+ k; e
    ) G) S/ r9 v! u4 e
    2
    4 f9 V1 ]( S2 }软件看门狗% D4 o. r. f! k! V0 X' S0 D
    特点:
    . P' S1 ~, G* X& ?# P
  • 通过软件定时器模拟看门狗功能
  • 依赖系统的定时器中断,若中断系统异常,可能会失效
  • 适用于轻量级应用,但可靠性远低于硬件看门狗
    & E  w: |; j7 C; ^' y8 h
    $ s+ n% q' Q% y/ \  G/ q
    6 E- S( P9 q3 E4 o) W
    工作方式:. X. {' f5 h% @( l7 J9 D: v* A
  • 在任务调度器(如 FreeRTOS)中实现定时检查
  • 任务正常运行时定期重置软件定时器
  • 若某任务超时未喂狗,则触发复位逻辑. a9 {2 g0 _# y/ B% s9 N

    6 Z9 p! W; L+ j在调试过程中发现的故障,应该通过代码优化、异常处理、错误恢复机制等手段加以解决,而不是依赖看门狗。
    $ _9 ?* d6 m9 M4 o/ i
    ) n& B, S7 N8 `9 e& T看门狗的作用是在非人为可控情况下自动恢复系统,它不能取代良好的软件工程实践。
    - s% \+ p4 q% [! G
    : O# O" h7 j- y在某些应用场景(如数据采集系统),系统崩溃时可能需要保护关键数据,以便在重启后进行恢复。7 G/ Y& ?8 l6 ^: G
    # _  p0 @& F% _. t# S
    这可能需要:3 G6 C5 ]1 f2 S* Y% O' y) w, V
  • 采用EEPROMFlash电池备份 RAM 存储关键变量
  • 结合上电自检(POST)机制,分析重启原因,决定是否进入故障恢复流程
    3 [1 d* C1 M" V' X  }; C
    * [9 Y2 k' G9 |  \2 G5 `
    3
    ! t3 \) n' h3 B0 p" B; v/ }' k看门狗喂狗策略6 m% S0 u9 u" I- r& u. N
  • 避免在主循环或高频中断中盲目喂狗:这样可能会掩盖实际的问题,导致系统在异常情况下仍然喂狗,无法及时复位。解决方案:在关键任务执行完毕后喂狗,而不是简单地在循环内喂狗。
  • 结合任务超时检测(对于 RTOS):可以使用任务看门狗(Task Watchdog),在任务级别进行超时监测,而非仅靠系统级 WDT 进行复位。
  • 多级看门狗策略:采用软件看门狗监测任务,硬件看门狗监测整个系统,以构建更健壮的故障恢复机制。
    : o. z3 F9 r8 u3 @9 x# E看门狗是一种保障系统稳定性的关键机制,但它并不能取代软件优化和异常处理。
    ) W1 y( N( w! a8 b/ c
    & V' N' Y  ~3 j& h" V2 I在高可靠性应用中,外部硬件看门狗是最佳选择,而在一般嵌入式应用中,内置硬件看门狗已经足够。$ s* U5 I& k& X0 y2 b2 D/ M, e

    ! _$ ]! d+ x3 p& T  i: D" p3 }" L软件看门狗可以作为任务级监测的补充手段。
    , i7 x& ~% ~. A2 K$ n9 {, H4 u+ j! C5 H2 Z5 M6 a& q8 a
    合理利用不同类型的看门狗,结合健壮的软件架构,才能真正提升系统的稳定性和可靠性。
    9 Q1 r; j. G2 x* }' y( x' \$ J

    neiqvdt43bo640467832.jpg

    neiqvdt43bo640467832.jpg

      m" o$ m! C3 p7 e. x

    4hoxr3bhvct640467932.gif

    4hoxr3bhvct640467932.gif
    % H; F: |% Q. d! `2 I2 x9 M5 o" N9 L+ }
    点击阅读原文,更精彩~
  • 回复

    使用道具 举报

    发表回复

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

    本版积分规则


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