电子产业一站式赋能平台

PCB联盟网

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

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

[复制链接]

918

主题

918

帖子

7399

积分

高级会员

Rank: 5Rank: 5

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

30m432iej3r640467531.gif

30m432iej3r640467531.gif
; q( N, N& x% f
点击上方蓝色字体,关注我们1 `, Y& A% t; O. j# [# _- \& X
3 H4 M9 r5 {9 I# z) g/ K$ \1 d' Q

4 x! F- M6 q1 C. I# y看门狗的基本原理是通过一个定时器来监测系统运行状态。正常情况下,应用程序需要定期向看门狗发送信号(喂狗),以防止定时器溢出。% a! g1 x% {' [8 ^' \. \

7 ^' C$ G% R" G( [一旦程序发生异常,导致看门狗未能在规定时间内收到喂狗信号,定时器将会触发系统复位。
) e% a; i% X# `- t# B+ \  V
7 ~' ^2 u8 T5 N3 R9 c/ e根据实现方式的不同,看门狗可以分为硬件看门狗软件看门狗
" g# Y9 C1 t0 ?% x; T2 Y- j' X9 c% A

4gkt5o5bsb3640467631.png

4gkt5o5bsb3640467631.png
% M; R5 V! g" C7 ^5 G5 g
1/ n, H( m, ^/ @# i- T3 `
硬件看门狗6 F5 k6 L$ l% S2 _* X& E# H8 j
1.1、外部独立硬件看门狗
: K0 q1 a2 o- Y% r) x; M

ajrddgejbsb640467731.png

ajrddgejbsb640467731.png

3 {1 p! M2 V; s% |: H% }# p  b6 a/ S8 }5 W- P5 j" g
特点:
  M2 n0 F' ^2 a6 Y- O
  • 作为独立于MCU/MPU的外部芯片运行
  • 不受主处理器影响,即使处理器死机仍可触发复位
  • 可靠性最高,适用于工业、汽车、航天等对可靠性要求极高的应用场景
    4 G% x# C4 }/ v/ |) Q$ p
    ! X) ?+ U% K; P. T+ ]  c

    : R0 P8 D+ t$ N9 k, |" z工作方式:5 K- ]5 X, ]# h. x- h* b6 z. {
  • MCU 通过 GPIO 向看门狗芯片发送喂狗信号(例如周期性地翻转一个引脚)
  • 若 MCU 失去响应,外部看门狗检测到超时,则输出复位信号
  • 由于其独立性,该类看门狗的喂狗时间通常不可调或调整较受限; N+ j0 ?" f( _% }& J( [

    / Z+ G9 Z! N$ U# ~+ j& B1.2、内置硬件看门狗
    0 q0 @- e3 D( o: Q特点:
    / B* z( [+ [0 n! T. q
  • 由处理器内部的定时器实现,通常由 MCU 内部的 WDT 外设负责管理
  • 需要软件驱动程序支持,可编程设置超时时间
  • 复位逻辑依赖于 MCU 自身,一旦 MCU 时钟或电源管理单元故障,可能导致看门狗失效) |8 q* D& T. i3 |4 s
    # d  r9 b: ~+ T4 y
    / E8 M- R4 u3 Z6 m& I5 b" A2 _
    工作方式:
    , D- Q# K* ^! K# M
  • 在应用程序中启用 WDT 并设置适当的超时时间
  • 定期调用 API 进行喂狗(如 STM32 的 HAL_IWDG_Refresh())
  • 若 MCU 进入死循环或阻塞,看门狗超时触发系统复位& k- s9 e$ b( G$ _0 ~* p! G

    ( V" F3 j4 V9 f: a3 G& j2
    8 l3 T% w1 L* A  q3 D- i软件看门狗  A3 M6 ?: |& S, U
    特点:5 N7 r) }& L9 `' c/ R5 q7 k/ _
  • 通过软件定时器模拟看门狗功能
  • 依赖系统的定时器中断,若中断系统异常,可能会失效
  • 适用于轻量级应用,但可靠性远低于硬件看门狗
    5 ^" m& N3 {) L2 S7 l

    , t0 k2 O5 H: \' S9 O* U( N7 D

    ' f: h& e9 c' h3 T9 Q工作方式:
    4 V4 U" w- `+ y- N8 I
  • 在任务调度器(如 FreeRTOS)中实现定时检查
  • 任务正常运行时定期重置软件定时器
  • 若某任务超时未喂狗,则触发复位逻辑. ?2 B+ V: p7 a; |9 V5 t" K3 z6 C

    3 E- Y9 U5 @( Y: \3 L在调试过程中发现的故障,应该通过代码优化、异常处理、错误恢复机制等手段加以解决,而不是依赖看门狗。
    # C" _" S. d1 g* ~8 u% p+ |3 k) D) K; {! d2 v9 d
    看门狗的作用是在非人为可控情况下自动恢复系统,它不能取代良好的软件工程实践。& m- K) E; d, r8 s

    ! p* \* I2 K; Z; |5 Z在某些应用场景(如数据采集系统),系统崩溃时可能需要保护关键数据,以便在重启后进行恢复。$ j. T6 [) F0 c5 ?
    8 L- p/ o- K0 U) R" N
    这可能需要:; ^) |* e6 S; b
  • 采用EEPROMFlash电池备份 RAM 存储关键变量
  • 结合上电自检(POST)机制,分析重启原因,决定是否进入故障恢复流程
    6 B- N2 p) U+ }) b! |& G
    : [& R7 D, `. l, ~) [  c1 C
    3$ ^, C4 B' W" B2 S. B! x
    看门狗喂狗策略7 m# p+ D$ G* z. J; p% z! o
  • 避免在主循环或高频中断中盲目喂狗:这样可能会掩盖实际的问题,导致系统在异常情况下仍然喂狗,无法及时复位。解决方案:在关键任务执行完毕后喂狗,而不是简单地在循环内喂狗。
  • 结合任务超时检测(对于 RTOS):可以使用任务看门狗(Task Watchdog),在任务级别进行超时监测,而非仅靠系统级 WDT 进行复位。
  • 多级看门狗策略:采用软件看门狗监测任务,硬件看门狗监测整个系统,以构建更健壮的故障恢复机制。
    , z8 P% |# v( ^( J2 |  i! C2 k& n看门狗是一种保障系统稳定性的关键机制,但它并不能取代软件优化和异常处理。
    7 B  l) S% J& v- [- O. s$ E8 D
    % [: b3 n+ a( R  `/ Y& U在高可靠性应用中,外部硬件看门狗是最佳选择,而在一般嵌入式应用中,内置硬件看门狗已经足够。# r; {" k( {- I+ i6 j

    + |% W9 _; @1 Y+ m" d软件看门狗可以作为任务级监测的补充手段。/ u( T, k( I" O# J6 q
    ! l2 Q" s9 l. O! Y
    合理利用不同类型的看门狗,结合健壮的软件架构,才能真正提升系统的稳定性和可靠性。& J) H4 |) t- M0 |

    neiqvdt43bo640467832.jpg

    neiqvdt43bo640467832.jpg
    9 r4 p' Z' P5 Q0 e

    4hoxr3bhvct640467932.gif

    4hoxr3bhvct640467932.gif

    # A# Y+ X: Z  ?3 p点击阅读原文,更精彩~
  • 回复

    使用道具 举报

    发表回复

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

    本版积分规则


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