英飞凌TC397—SCU看门狗复位工作原理

本文介绍了英飞凌TC397芯片中的系统控制单元SCU,包括复位控制单元RCU和看门狗定时器WDT的工作原理。RCU涉及冷复位和热复位概念,而WDT提供了系统故障检测的安全机制。文章还探讨了密码保护和访问控制,以及复位请求触发器的类型。此外,给出了示例代码展示如何配置和使用看门狗功能。
摘要由CSDN通过智能技术生成


前言

本篇本专栏为个人实习学习总结材料,深刻感觉作为刚入行的汽电小白,道阻且长,如果对你有帮助欢迎留言评论收藏,加油汽电人!!!


一 SCU概述

声明:此部分为英飞凌TC397芯片手册翻译整理内容,可帮助理解TC397-SCU原理
系统控制单元(SCU)是一组控制各种系统功能的子模块,包括:

复位控制(RCU)
陷阱生成(TR)
杂项功能的系统寄存器(SRU)
看门狗计时器(WDT)
外部请求处理(ERU)
紧急停止(ES)
电源管理控制(PMC)

这些子模块共享一个共同的总线接口,下面是SCU模块框图:

在这里插入图片描述
本文结合看门狗复位主要介绍WDT和RCU模块

(一)RCU复位控制单元( Reset Control Unit)

本节介绍了AURIX™ TC3xx平台将被复位的条件以及复位操作的配置和控制。

补充:冷复位和热复位概念:

冷复位是指在系统上电过程中首次触发的复位,或对临时断电的反应。在上电过程中,EVR初级欠压监测器将触发系统的完全复位,使系统进入一个已知的状态。PORST引脚可以用来延长这个复位阶段并控制其释放的时间。当触发器被断言时,引脚和内部状态将立即进入复位状态。

热复位是在系统已经运行并且电源保持稳定的情况下触发的重置。它被用来将系统返回到相同的已知状态。在热复位请求中,任何引脚状态的重置都将立即发生,但内部电路只有在系统进入内存内容和调试跟踪数据不会被破坏的状态,并且电流消耗已经降低后才会被重置。(在TC397中PORST可以作为一个热复位"开机复位 "的寄存器也应在温热的PORST下复位,而不需要开机事件)

下列复位请求触发器可用:

  1. 电源监视器(SWD)触发开机复位(冷复位)
  2. 核心电压EVR(EVRC)监视器触发开机复位(冷复位)
  3. 3.3V EVR监视器触发开机复位(冷复位)(如果产品有EVR33)
  4. 待机EVR(STBYR)监视器触发开机复位(冷复位)
  5. 外部有源低电平硬件 "开机 "复位请求触发器;PORST(可以是温复位或延长冷复位)
  6. 外部系统请求复位触发针脚;ESR0和ESR1(温复位)
  7. 安全管理单元(SMU)报警复位请求触发,(温复位)
  8. 软件复位(SW),(温复位)
  9. 系统定时器(STMX)触发(温复位)
  10. 通过JTAG接口复位 ï通过片上调试系统(OCDS)
  11. 启动复位 软件触发的模块复位

还可根据复位类型如下分类:

上电复位:
这种复位会使整个系统初始化为一个确定的状态。开机复位也会产生调试复位和系统复位,因此也会产生应用复位。(参见 "热重置 "和 "冷重置 "一节)

系统复位: 这种重置导致整个系统初始化到一个确定的状态,但没有重置电源子系统、调试子系统或重置配置寄存器。 系统重置也产生一个应用重置。

调试复位: 这种重置导致整个调试系统初始化到一个确定的状态。

应用复位: 这种复位导致整个应用系统的初始化进入一个确定的状态,包括以下部分:所有外设、CPU和SCU的部分。

模块复位: 模块复位导致单个模块被初始化进入一个确定的状态,而对系统的其他部分没有任何影响。

复位源和激活的复位信号/域的连接情况见下表。
在这里插入图片描述
RCU检测不同的复位请求,安排关闭系统,然后产生适当的内部复位脉冲。
在这里插入图片描述

  1. 复位请求触发器
  2. 唤醒触发器
  3. 复位指示输出
  4. 陷阱请求触发器
    因便于理解看门狗复位原理这里简单讲解一下外部服务请求复位
    ESR引脚可以有多种使用方式:

ESR输入可以触发复位
ESR输出可以提供复位指示
ESR输入可以触发陷阱请求
ESR引脚可以作为一般数据I/O引脚使用
ESR输入可以触发从待机模式唤醒

在这里插入图片描述

(二)看门狗定时器(WDT)

(1)系统概述

WDTs为检测和恢复软件或硬件故障提供了一种高度可靠和安全的方法。WDTs有助于在用户指定的时间段内中止CPU或系统的意外故障。

在这里插入图片描述

(2)访问控制

除了这个标准的 "看门狗 "功能外,每个WDT都集成了一个初始化结束(ENDINIT)功能,可以保护关键寄存器不被意外写入。

  • 在访问WDT控制寄存器时需要一个密码和保护位。任何没有提供正确密码或保护位正确值的写操作都被认为是系统的故障,并导致看门狗报警。
  • 即使在进行了有效的访问并清除了ENDINIT位以提供对关键寄存器的访问后,看门狗对这个访问窗口施加了一个时间限制。如果ENDINIT位在这个时间限制结束前没有被正确设置,系统就会被认为发生了故障。
  • 配置选项可以使看门狗服务额外检查代码执行顺序和中间代码执行时间。如果这些检查被启用,那么任何不正确的顺序或超限的执行时间也会导致SMU报警请求。
  • 任何一个WDT的到期都会导致SMU报警。可以对SMU进行编程,以提供一个中断或陷阱,在采取进一步行动(如重置设备或CPU)之前,提供一些时间来恢复或记录状态。

(3)看门狗密码

1.静态密码:

在静态密码模式下(WDTxSR.PAS=0),密码只能通过一个有效的修改访问来改变。密码访问被设计成不可能简单地读取寄存器并重新写入。一些密码读取位在被重新写入之前必须被反转(切换)。这可以防止简单的故障通过简单的读/写序列意外地解锁WDT

2.动态密码:

如果自动密码排序被启用(WDTxSR.PAS=1),那么每次密码检查(即密码访问或检查访问)后,密码会自动改变。预期下一个密码遵循一个基于14位斐波那契LFSR(线性反馈移位寄存器)的伪随机序列,特征多项式为x14+x13+x12+x2+1。初始密码(或随后的手动密码更新)也可以由修改访问提供。

在这里插入图片描述

二 案例分析

(一)示例代码

以下代码根据weifeng大佬文章修改,附原文链接:
AURIX TC397 SCU 之 Watchdog 看门狗
改动:
因为英飞凌ILLD库修改根据现有定时器函数添加了void delayTime()函数,用以处理延时服务。

#include "Ifx_Types.h"
#include "IfxCpu.h"
#include "IfxScuWdt.h"

#include "IfxStm.h"
#include "IfxPort.h"
#include "IfxCpu_Irq.h"
#include "Bsp.h"


#define LED                     &MODULE_P13, 0
#define WAIT_TIME               500
#define REL_VAL                 0xE000

IFX_ALIGN(4) IfxCpu_syncEvent g_cpuSyncEvent = 0;


void delayTime(void)
{
	waitTime(IfxStm_getTicksFromMilliseconds(BSP_DEFAULT_TIMER, WAIT_TIME));
}


void core0_main(void)
{
    IfxCpu_enableInterrupts();

    IfxScuWdt_disableSafetyWatchdog(IfxScuWdt_getSafetyWatchdogPassword());

    IfxScuWdt_changeCpuWatchdogReload(IfxScuWdt_getCpuWatchdogPassword(), REL_VAL);
    
    IfxScuWdt_serviceCpuWatchdog(IfxScuWdt_getCpuWatchdogPassword());

    IfxCpu_emitEvent(&g_cpuSyncEvent);

    IfxCpu_waitEvent(&g_cpuSyncEvent, 1);

    IfxPort_setPinModeOutput(LED, IfxPort_OutputMode_pushPull, IfxPort_OutputIdx_general);

    IfxPort_setPinHigh(LED);

    while(1)
    {

        IfxPort_togglePin(LED);
    	delayTime();
        IfxScuWdt_serviceCpuWatchdog(IfxScuWdt_getCpuWatchdogPassword());
     }
}

(二)运行效果

1.按上面代码执行并烧录可以看见D107LED 间隔0.5秒闪烁。
2.若增大延时函数的值,大于看门狗定时器设置的阈值,没有进行密码喂狗,则线程进入阻塞状态,D106看门狗报警功能指示灯亮起,D107常亮。

细节补充:

  • 可以观察到D106经历短暂闪烁后常亮,原因是SMU特殊保护机制造成的,如果SCU引起应用复位发生两次,就会认为是严重的系统故障,TC3xx会被永久保持在应用复位状态,直到开机或系统复位,这可以防止在应用程序为正确服务看门狗,看门狗反复超时的情况下,设备周期性复位。
  • 当第一次请求SMU复位时,一个内部标志位会被设置值,如果当内部标志位已经被设置后又收到复位请求,则应用复位被封锁

在这里插入图片描述

  • 6
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: DICOM SCU(Service Class User)是医学影像通信和存储中常用的一个协议,用于向DICOM设备发送请求并接收响应。模拟DICOM SCU是指在测试或开发过程中,使用模拟的SCU设备与其他DICOM设备进行通信和交互。 模拟DICOM SCU主要通过以下步骤实现: 1. 配置模拟SCU设备的参数:包括设备的IP地址、端口号、传输协议等。这些参数需要与要模拟的DICOM设备相匹配。 2. 创建DICOM消息:模拟SCU设备需要根据具体的需求和场景,创建符合DICOM标准的消息。消息包括标识符、数据元素等,用于描述请求或响应的具体内容。 3. 与其他DICOM设备建立连接:模拟SCU设备需要根据配置的参数,与其他DICOM设备建立连接。这一步骤需要遵循DICOM通信协议,例如使用TCP/IP进行传输。 4. 发送DICOM请求:建立连接后,模拟SCU设备可以向其他DICOM设备发送请求。请求的内容取决于具体的操作,可以包括查询、检索、存储等。 5. 接收DICOM响应:模拟SCU设备会等待DICOM设备对请求进行处理,并接收相应的响应消息。响应消息包含了请求的结果,可能是具体的图像或其他数据。模拟SCU设备需要根据响应消息进行进一步的处理。 6. 处理DICOM响应:模拟SCU设备会解析响应消息,提取所需的数据。根据具体的需求,可以对接收到的数据进行进一步分析、显示或存储等处理。 7. 关闭连接:在完成通信后,模拟SCU设备需要关闭与其他DICOM设备的连接,释放资源。 通过模拟DICOM SCU,可以方便地测试和验证DICOM通信的可靠性和兼容性。模拟SCU设备可以用于开发和调试DICOM系统,也可以用于培训医学影像相关的技术人员。 ### 回答2: DICOM SCU(Service Class User)模拟是通过模拟器软件以及相关的测试工具来实现与DICOM设备的通信交互。DICOM是医学图像和通信的标准,它规定了各种医疗设备之间传输和共享医学图像和信息的方式。 DICOM SCU模拟器的主要作用是模拟DICOM设备的行为,以便测试DICOM设备的性能、兼容性和稳定性。通过与DICOM设备进行交互,可以测试设备是否正确地响应DICOM命令、是否能够正确读取和解析DICOM文件、是否能够正确传输DICOM图像等。 DICOM SCU模拟器可以模拟各种DICOM服务类别,例如图像传输、查询检索、存储和打印等。通过模拟这些服务类别,可以测试DICOM设备在各种情况下的性能。 DICOM SCU模拟器通常具有用户友好的界面,可以设置各种DICOM参数,如设备地址、端口号、传输协议、查询条件等。模拟器还可以生成各种测试数据,如模拟各种类型的DICOM图像、模拟不同的设备状态、生成各种DICOM命令等。 DICOM SCU模拟器的使用可以帮助医疗设备制造商进行设备开发和测试,以确保其产品与其他DICOM设备的互操作性。此外,医疗机构也可以使用DICOM SCU模拟器进行设备选择和性能评估,以便为其购买最适合的DICOM设备。 总之,DICOM SCU模拟器是一种重要的工具,用于模拟DICOM设备的行为,以便测试设备的性能和兼容性。它在医疗设备开发、测试和选择中起到重要的作用,有助于提高医疗图像和信息的传输和共享的质量和效率。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

炸弹气旋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值