云途系列MCU芯片EWDG模块应用场景
1. 引言与功能安全背景
1.1. 云途系列MCU在汽车电子中的定位
云途系列微控制器(MCU)主要面向通用汽车应用,包括车身控制、工业控制和电池管理系统(BMS)等关键领域 。随着汽车电子复杂度的提高,对系统可靠性和功能安全的要求日益严苛。云途MCU内部集成了多项硬件安全机制,例如对存储器进行ECC校验、电压监控器以及时钟监控功能,以满足现代汽车系统的严格要求 。
在功能安全方面,云途可以实现MCU与系统基础芯片(SBC)外部安全元件相结合,能够将系统安全等级最大化提升至汽车安全完整性等级B、D级(ASIL B、ASIL D)。
1.2. ISO 26262标准下的冗余与监控要求
ISO 26262是国际标准化组织(ISO)制定的针对道路车辆电气/电子(E/E)系统的功能安全标准 。该标准要求系统必须具备高效的故障检测和缓解措施。为了达到特定的ASIL等级,通常需要通过冗余设计来提高诊断覆盖率(DC)和容错能力 。
在微控制器内部监控方面,仅依靠单一的内部看门狗定时器(WDOG)往往无法满足功能安全标准的要求。内部WDOG可能受到其自身的硬件或时钟源故障影响,或被系统性软件故障所规避。因此,需要一个独立且冗余的监控器来覆盖潜在的内部WDOG系统性或硬件故障。外部看门狗监控模块(EWDG)正是为实现这一目标而设计,它作为内部看门狗的冗余看门狗监控器,确保了在核心故障发生时系统能够强制进入安全状态 。
1.3. WDOG模块在ASIL B系统中的定位
WDOG在云途MCU中被明确列为硬件安全功能之一,对维护系统完整性至关重要 。通过提供独立于核心处理器的监控能力,EWDG极大地增强了对CPU和软件流程故障的整体诊断覆盖率 。这一点对于满足ASIL B应用规定的技术安全要求(TSRs)至关重要。EWDG的独立操作架构是功能安全设计中的一个关键优势,它确保了即使主处理器或其主要时钟发生故障,监控机制仍能可靠运行。
2. EWDG 模块技术架构及工作原理
2.1. 内部结构概览:计时器、控制逻辑与时钟源
EWDG模块的设计相对于更复杂的内部窗口看门狗(WDOG)更加简洁(WDOG支持窗口模式,意味着更精细但也更复杂的功能)。这种架构上的精简有助于提高模块的鲁棒性,减少其与主MCU核心发生共因故障(CCF)的可能性。
EWDG的核心组件包括一个8位计数器、时钟分频逻辑、控制寄存器(EWDG_CTRL
)以及专门的刷新和EWDG_out输出控制机制 。
2.2. 时钟独立性分析:独立时钟源与预分频器
EWDG模块的核心优势在于其时钟的独立性。它由微控制器内部的低功耗振荡器时钟(SIRC或LPO)驱动 。云途MCU设计有完全独立的CPU和外设时钟方案,包括SIRC或者LPO时钟 。
这种时钟隔离的设计在功能安全系统中具有重大意义。如果主系统振荡器(如FIRC或PLL)发生故障,或如果软件损坏导致时钟生成单元操作异常,EWDG计时器仍将继续计数。SIRC、LPO作为一个独立的、低频率的内部振荡器,显著降低了其与主核心所使用的高速时钟发生共因故障的风险 。这种独立性是EWDG在ASIL分解中扮演关键角色,因为它保证了监控功能和被监控核心之间的充分独立性,从而满足ASIL B的容错要求。
EWM的定时周期可以通过配置EWDG_CLKCTRL[PRESCALER]字段来调整,该字段控制SIRC、LPO时钟通过分频器后到达8位计数器的速率,从而精确定义EWDG的超时窗口 。
2.3. EWDG的两种故障触发机制:喂狗失败与外部信号触发
EWDG可以响应两种类型的安全故障:
- 机制一:软件刷新失败(内部故障监控): 应用程序软件必须周期性地向EWDG的比较低位寄存器(
EWDG_CMPL
)和比较高位寄存器(EWDG_CMPH
)写入特定值(即“喂狗”操作)以重置内部计数器。如果在计数器溢出之前软件未能完成刷新操作,则会发生内部看门狗超时,触发EWDG的故障响应 。 - 机制二:外部安全信号断言(外部故障监控):
EWDG_IN
引脚允许EWDG模块监控外部安全电路(如电源监控器或外部SBC)的安全状态 。如果EWDG_IN
上的逻辑电平违反了通过EWDG_CTRL位配置的预期极性(例如,在配置为主动高电平监控时变为低电平),EWDG将立即触发故障 。这使得EWDG能够作为外部安全监管器状态的诊断接口。
2.4. EWDG的故障响应
当EWDG检测到故障时,它采取两种主要行动:
- 中断请求: 如果控制寄存器中的
INTEN
位被置位,EWDG故障将生成一个中断请求 。这允许MCU软件在执行硬复位之前尝试记录故障信息或进行必要的系统恢复。 - 外部复位生成: 无论是计数器溢出还是
EWDG_IN
信号断言,EWDG逻辑都会直接通过EWDG_OUT_b
信号触发故障响应。该信号通常被连接到主MCU的复位电路 。这种直接的硬件控制确保了在任何严重故障发生时,系统都能被强制复位。
3. EWDG 输入输出(I/O)端口及硬件连接详情
3.1. EWDG 输入:EWDG_IN 的功能与连接
EWDG_IN信号是EWDG用于接收外部安全电路状态信息的输入端口 。通过此输入,MCU能够集成外部系统级安全监控功能。
外部设备集成: 连接到
EWDG_IN
的外部设备通常是:- 专用的系统基础芯片(SBC),这些芯片集成了电压监控、时钟检查等安全输出信号。
- 独立的电压监控器或时钟监控电路,用于监测MCU电源轨或外部晶振的健康状态 。
- 软件配置:
EWDG_IN
的预期有效极性(主动高或主动低)可以通过EWDG_CTRL位进行编程 。这种可编程性使其能够灵活地与各种外部安全IC的输出信号进行接口。
3.2. EWDG 输出:EWDG_OUT_b 的作用与复位机制
EWDG_OUT_b是EWDG的外部复位输出信号。信号名中的后缀“_b”表示其为主动低电平信号。当EWDG检测到故障时,它会断言此引脚,将其电平拉低 。
EWDG_OUT_b的输出条件:
- EWDG 刷新过程不在EWDG的刷新窗口,即在EWDG计数器小于CMPL的时候进行刷新操作
- 当使能EWDG出现超时事件时,即没有在给定的时间内对EWDG计数器进行刷新而导致超时,此时不论EWDG的输入信号为什么状态,EWDG模块都会拉低EWDG_OUT_b输出。
- 当输出信号有效时,在软件触发EWDG刷新时,EWDG模块会拉低EWDG_OUT_b。
当EWDG_OUT_b拉低之后只能通过模块复位来恢复,典型的模块复位包括:
- IPC复位,通过IPC的复位功能对模块进行复位
- MCU系统复位,可以通过触发任意的MCU复位来复位EWDG模块
4. EWDG 的具体使用场景和外部设备集成
4.1. 场景一:冗余看门狗监控
EWDG最核心的用途是提供对MCU内部看门狗(WDOG)的硬件冗余监控。
双重机制的互补性:
- 内部WDOG: 提供窗口化模式(Windowed Mode)等高级功能,监控喂狗操作是否发生得过早或过晚,通常运行在一个独立时钟源上 。它可以选择首先触发中断,为软件提供一次挽救机会 。
- EWDG(冗余): 运行在独立的时钟上,通过
EWDG_OUT_b
直接触发物理复位 。如果软件流程进入死锁状态,阻止了对EWDG的刷新,EWDG将保证在硬件层面强制执行硬复位。
这种架构确保了如果内部WDOG本身因时钟故障或内部系统损坏而失效,EWDG仍能履行其职责,确保系统的安全运行。
4.2. 场景二:系统级安全监控集成
EWDG在与外部安全元件协同工作时,其系统安全效益得到最大的发挥。
- 外部设备集成:可以实现与外部系统供电芯片的集成,实现电源系统的监控和有效系统复位。
- EWDG_IN 作为故障聚合器: 当外围电路检测到关键的外部故障(例如,电源轨上的低压检测LVD或外部振荡器故障)时,它会断言一个专用的安全输出引脚。此时这个引脚可以连接到MCU的EWDG_IN引脚,MCU可以通过该引脚接受外部故障,同时将这种故障传递至其它外围电路,确保整个系统进入安全状态。
- 功能提升: 通过这种连接,EWDG的角色从单纯的CPU监控器升级为安全关键系统故障聚合器。它将外部硬件的安全状态纳入其监控范围,并在检测到外部故障通知时,立即通过硬件机制(
EWDG_OUT_b
)执行预配置的系统响应(复位)。这一架构设计简化了MCU应用软件的安全管理任务,并将关键的安全状态转换任务委托给鲁棒、独立的EWDG硬件模块。
5. 软件配置与初始化流程
5.1. EWDG初始化步骤(基于云途 SDK)
云途为其MCU微控制器提供了软件开发工具包(SDK),其中包含了EWDG的软件示例,作为用户开发的起点 。EWDG的初始化需要精确的顺序控制,以确保在它开始监控之前系统已稳定运行。
- 时钟配置: 确认EWDG所依赖的SIRC或LPO时钟都是默认开启的,但是模块的寄存器访问时钟需要通过IPC开启,在EWDG模块内部也要选择相应的时钟源。
- 控制与模式设置: 写入
EWDG_CTRL
寄存器,配置基本运行模式,例如是否启用中断(INTEN
)以及EWDG_IN
的输入极性(POLARITY
) 。 - 定时器配置: 配置时钟预分频器(
EWM_CLK_CTRL[PRESCALER]
)来确定EWDG的有效计数频率,并设置看门狗比较寄存器EWDG_CMPL
和EWDG_CMPH
来定义允许的刷新时间窗口。 - 模块启用: 最后,设置
EWDG_CTRL
寄存器中的EN
位。这一操作是启动EWDG的关键步骤,它将看门狗计数器复位到零,并解除对外部复位信号EWDG_OUT_b
的断言(即拉高EWDG_OUT_b
,允许MCU正常运行) 。
API 函数 | 描述 |
---|---|
status_t EWDG_DRV_Init(uint32_t instance, const ewdg_init_config_t *config) | 使用用户提供的配置结构体 初始化 并 启动 EWDG 模块。这是启动模块所需的唯一调用。注意: EWDG 寄存器通常是一次写入的,因此该函数只能在 CPU 复位后调用一次。 |
void EWDG_DRV_GetDefaultConfig(ewdg_init_config_t *config) | 将 ewdg_init_config_t 结构体填充为默认值。 |
void EWDG_DRV_DeInit(uint32_t instance) | 去初始化 EWDG 模块(具体实现可能根据硬件特性而有所不同)。 |
void EWDG_DRV_Refresh(uint32_t instance) | 刷新 EWDG(俗称“喂狗”)。必须在 compareLow 和 compareHigh 定义的窗口期内调用此函数,以防止看门狗超时。 |
void EWDG_DRV_DisableInterrupt(uint32_t instance) | 禁用 EWDG 模块的中断功能。 |
ewdg_in_assert_logic_t EWDG_DRV_GetInputPinAssertLogic(uint32_t instance) | 获取当前 EWDG 输入引脚的断言(触发)逻辑 配置。 |
5.2. EWDG使能、超时窗口设置及喂狗操作
“喂狗”操作是通过软件向EWDG刷新机制写入特定的有效值来完成,目的是在计数器溢出之前将其复位。虽然EWDG通常被视为一个简单的超时监视器,但在功能安全设计中,其配置需要与时间关键任务精确匹配。通过设置EWDG_CMPL
和EWDG_CMPH
,系统可以定义一个窄窗口,若软件刷新操作发生在该窗口之外(太早或太晚),同样会被视为故障。这确保了主CPU的执行流程在预期的时序约束内运行。
软件在启用EWDG后,必须明确验证EWDG_OUT_b
信号是否已解除断言(变为高电平),以确认EWDG已成功初始化并接管了从硬件默认状态到正常运行状态的控制权 。
5.3. 故障处理机制:中断通知与强制复位
EWDG提供了灵活的故障响应机制:
- 中断(可恢复故障): 如果设置了
INTEN
位,EWDG会在断言硬复位输出时生成一个中断。这使得应用程序的安全管理器(SM)有机会记录故障信息并尝试执行程序控制的系统恢复或安全关机流程。 - 强制复位(硬件失效保护): 如果软件无法在中断服务程序中清除故障,或者EWDG故障直接导致了硬件级超时,
EWDG_OUT_b
的持续断言将使MCU的RESET_b
引脚保持低电平,从而强制执行硬复位。这是确保系统进入安全状态的最终失效保护机制 。
6.1 总结
EWDG模块为云途MCU提供了额外的安全机制,在功能安全系统设计中,可以有效管理外部异常输入,并支持复位输出功能,可以实现在异常状态下的额外系统复位以及外部其它设备的复位,从而增强整个系统的功能安全。
最后更新于 2025-10-17 03:25:15 并被添加「MCU SDK 功能安全 EWDG」标签,已有 58 位童鞋阅读过。
本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。