S32K144看门狗测试过程

S32K144测试看门狗模块

看门狗的测试采用初始化看门狗定时器及超时计数器后,在一个较长时间不喂狗,看芯片是否复位。测试的难度在于时钟的选择以及复位效果的观察。
S32K144看门狗计数器是16位的,也就是最大计数可以到65532。如果选择一个较高的时钟会导致芯片很快复位,无法观察实际效果。所以建议选择低速LPO时钟,将LPO时钟配置成1K,最大喂狗时间可以设置到63s左右。
LPO时钟配置成1K
在这里插入图片描述看门狗选择LPO时钟
在这里插入图片描述
生成的看门狗通用代码如下:

wdog_user_config_t watchdog1_Config0 = {
    .clkSource = WDOG_LPO_CLOCK,
    .opMode = {
        false, /* Wait Mode*/
        false, /* Stop Mode*/
        false /* Debug Mode*/
    },
    .updateEnable = true,
    .intEnable = false,
    .winEnable = false,
    .windowValue = 0,
    .timeoutValue = 64000,
    .prescalerEnable = false
};

提供初始化及测试接口

/***********************************************************************************
Function:       void watchdog_init(uint16_t timems)
Description:    初始化看门狗
Input:          time  配置看门狗超时计数值,最大为65532                              
Output:         NONE
Return:         NONE
Others:         NONE
************************************************************************************/
void watchdog_init(uint16_t timems)
{
	//配置看门狗超时计数值,最大为65532
	uint16_t timeval = timems*WDG_MS_PERIOD;
	if(timeval>65532)
		timeval=65532;
	watchdog1_Config0.timeoutValue = timeval;

	//初始化看门狗
	WDOG_DRV_Init(INST_WATCHDOG1, &watchdog1_Config0);
	//启动看门狗
	WDOG_DRV_Trigger(INST_WATCHDOG1);
}
//喂狗接口
void feed_dog_hal(void)
{
	//重置看门狗定时器
	WDOG_DRV_Trigger(INST_WATCHDOG1);
}

测试过程,由于看门狗生效后芯片会重启,所以无法仿真,设计了一段代码,通过打印来观察实际的芯片重启效果。连续打印10次后,进入while等待,直到喂狗计数器溢出,芯片重启,再次进行打印…

int main()
{
	//......
    //看门狗测试 1s后超时
    watchdog_init(1000);
    while(1)
    {

        //测试看门狗
        count++;
        my_printf("The current testvalue is %d\n", count);
        if(count%10==0){
            //让程序超时不喂狗
            my_printf("I will make a default to stop this process!! \r\n");
            while(1)
                {
                    //尝试喂狗
                    //feed_dog_hal();
                }
        }
   }

}

如果在while等待中加入喂狗程序,可以发现打印10次之后,程序一直在while中等待,没有再次打印,如果在线仿真,可以发现仿真没有断开。完成测试。

猜你喜欢

转载自blog.csdn.net/weixin_40983190/article/details/89924253