SemiDrive E3 MCAL 开发系列(3)– Wdg 模块的使用

2024-03-01 20:04

本文主要是介绍SemiDrive E3 MCAL 开发系列(3)– Wdg 模块的使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、  概述

本文将会介绍 SemiDrive E3 MCAL Wdg 模块的基本配置,并且会结合实际操作的介绍,帮助新手快速了解并掌握这个模块的使用,文中的 MCAL 是基于 PTG3.0 的版本,开发板是官方的 E3640 网关板。

 

二、  Wdg 模块的主要配置

Wdg 模块的配置主要有两大部分,一个是通用配置,另一个是针对每个 Wdg 实例的配置,我们先看通用配置,具体配置如图 2.1 所示。

图 2.1 Wdg 模块通用配置
 

关于以上配置选项的说明如下:

  • WdgDevErrorDetect:勾选决定是否使能 Wdg 模块的 Dev 错误检测功能
  • WdgDisableAllowed:勾选决定是否允许关闭看门狗功能
  • WdgInitialTimeout:配置看门狗的初始超时时间,单位为秒,最大可以配置为 65.535 秒
  • WdgMaxTimeout:配置看门狗的最大超时时间,单位为秒,最大可以配置为 65.535 秒,Det 检查时会用到。
  • WdgRunArea,该功能目前不支持,不需配置。

接着针对每个 Wdg 实例进行配置,首先添加 Wdg 实际,操作如图 2.2 所示。

图 2.2 添加 Wdg 实例
 

接着如图 2.3 所示,进入 Wdg 具体实例的配置界面。

图 2.3 进入 Wdg 实例配置界面
 

如图 2.4 和图 2.5 所示为 Wdg 实例的配置界面,

图 2.4 Wdg 模块实例配置一
 

图 2.5 Wdg 模块实例配置二
 

具体每个配置项的作用如下:

  • WdgChannelId:这个是自增的 ID,用户无需修改,改了会报错
  • WdgDefaultMode:该 Wdg 模块调用初始化接口后的默认工作模式,总共有三种可以选择,WDGIF_FAST_MODE 和 WDGIF_SLOW_MODE 这两种模式本质上没有区别,对应两套配置,这两套配置的参数都是独立的,具体如图 2.5 所示。看门狗初始化后超时时间参数还是 WdgInitialTimeout 配置的时间,如果需要使用 Fast/Slow 模式下的时间参数,可以调用 Wdg_140_Instance(x)_Wdg_SetMode() 或者 Wdg_140_Instance(x)_SetTriggerCondition()。 除此之外还有 WDGIF_OFF_MODE,该模式会把超时值设置为 0,而 Wdg 是从 1 开始计数的,因此 0 永远不能达到,故不会发生超时。
  • WdgInstanceIndex:选择使用哪个看门狗
  • WdgTimeoutNotification:看门狗的中断回调函数
  • WdgExternalSignalApi:可以配置一个 Gpio,超时后电平从高拉到低
  • WdgClockFrequency:Wdg 的时钟,为 24MHz,不可修改
  • WdgTimeoutPreiod:Fast/Slow 模式下的超时时间,单位为 ms。
  • WdgTimeoutBehavior:Wdg 模块超时后的行为,可以选择复位、中断、或者两者都执行。
  • WdgTiggerCondition:可以配置为 NO_CONDITION_MODE 或者 WINDOW_BASED_MODE,前者为普通模式,后者为窗口模式。
  • WdgRefleshTime:用来配置窗口模式的时间,超过这个值才可以进行喂狗,单位为 ms,最大可以配置为 65535。

 

三、  实际操作

下面我们基于 MCAL 3.0 的例程来进行 Wdg 模块的验证,基于我们上面的 Wdg 模块配置,我们配置 Wdg4 的超时时间为 1200 ms,触发动作为中断,我们在例程中对 Wdg4 进行初始化并且设置为 Fast 模式,然后不进行喂狗,这样的话会每 1.2 s 进入一次中断函数,我们在中断回调函数中进行打印,具体测试代码如图 3.1 所示。

图 3.1 看门狗的测试代码
 

接着进行实际操作,将代码烧录到板子后启动运行,在串口终端中输入命令“runcase 1500”,此时会运行 sint32_Wdg4_irq_test1 这个函数,可以看到串口会每隔 1.2 s 打印一次 WDT4_IRQ,如图 3.2 所示。

图 3.2 串口打印

 

四、  使用注意事项

E3 的 Wdg 模块在使用上有以下注意事项:

  • E3 系列 MCU 最多支持 7 个 WatchDog,其中 WatchDog1~6 支持中断和重启,WatchDog8 只支持中断。
  • 当触发重启操作时,除了 RTC 域以外其他域全部重新上电。
  • 当 WdgTimeoutBehavior 模式选择为 Both 时,在系统重启前会先触发中断,中断和重启之间的间隔是固定的,大约 7 ms。
  • 每个看门狗只允许在一个核中运行,禁止调用其他核的看门狗。
  • 在窗口模式下,如果没有在窗口内喂狗会失败,并且没有提示信息。
  • 如果某路看门狗未配置,禁止调用这路看门狗的任何接口
  • Wdg 的时钟取决于 FS_24M 的配置,如果配置为 RC,看门狗时钟为 RC 24M,如果配置为 FS_24M,则看门狗时钟为外部晶振 24M。

 

五、  参考资料

1.《Semidrive_Wdg_User_Manual.pdf》,2022.05

2.《SemiDrive_E3_MCAL_User_Guide_Rev03.00.pdf》,2023.08

 

登录大大通,了解更多详情,解锁1500+完整应用方案,更有大联大700+FAE在线答疑解惑! 

这篇关于SemiDrive E3 MCAL 开发系列(3)– Wdg 模块的使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/763652

相关文章

使用Python删除Excel中的行列和单元格示例详解

《使用Python删除Excel中的行列和单元格示例详解》在处理Excel数据时,删除不需要的行、列或单元格是一项常见且必要的操作,本文将使用Python脚本实现对Excel表格的高效自动化处理,感兴... 目录开发环境准备使用 python 删除 Excphpel 表格中的行删除特定行删除空白行删除含指定

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

prometheus如何使用pushgateway监控网路丢包

《prometheus如何使用pushgateway监控网路丢包》:本文主要介绍prometheus如何使用pushgateway监控网路丢包问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录监控网路丢包脚本数据图表总结监控网路丢包脚本[root@gtcq-gt-monitor-prome

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

SpringBoot中如何使用Assert进行断言校验

《SpringBoot中如何使用Assert进行断言校验》Java提供了内置的assert机制,而Spring框架也提供了更强大的Assert工具类来帮助开发者进行参数校验和状态检查,下... 目录前言一、Java 原生assert简介1.1 使用方式1.2 示例代码1.3 优缺点分析二、Spring Fr

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

java使用protobuf-maven-plugin的插件编译proto文件详解

《java使用protobuf-maven-plugin的插件编译proto文件详解》:本文主要介绍java使用protobuf-maven-plugin的插件编译proto文件,具有很好的参考价... 目录protobuf文件作为数据传输和存储的协议主要介绍在Java使用maven编译proto文件的插件

SpringBoot线程池配置使用示例详解

《SpringBoot线程池配置使用示例详解》SpringBoot集成@Async注解,支持线程池参数配置(核心数、队列容量、拒绝策略等)及生命周期管理,结合监控与任务装饰器,提升异步处理效率与系统... 目录一、核心特性二、添加依赖三、参数详解四、配置线程池五、应用实践代码说明拒绝策略(Rejected

C++ Log4cpp跨平台日志库的使用小结

《C++Log4cpp跨平台日志库的使用小结》Log4cpp是c++类库,本文详细介绍了C++日志库log4cpp的使用方法,及设置日志输出格式和优先级,具有一定的参考价值,感兴趣的可以了解一下... 目录一、介绍1. log4cpp的日志方式2.设置日志输出的格式3. 设置日志的输出优先级二、Window

Ubuntu如何分配​​未使用的空间

《Ubuntu如何分配​​未使用的空间》Ubuntu磁盘空间不足,实际未分配空间8.2G因LVM卷组名称格式差异(双破折号误写)导致无法扩展,确认正确卷组名后,使用lvextend和resize2fs... 目录1:原因2:操作3:报错5:解决问题:确认卷组名称​6:再次操作7:验证扩展是否成功8:问题已解