TC264(手册学习笔记)系统控制3看门狗

看门狗

    • 简介
    • The Endinit Functions
    • 寄存器
      • CON0
      • CON1
      • SR
    • 代码

简介

一共有两种看门狗:

savety watchdog: 可以理解为全局的一个看门狗,禁用啥的都需要password(对system control unit,SCU,进行操作时都需要)。
CPU watchdog: 也不是很理解,看手册吧

The Endinit Functions

只有当为0的时候才能对看门狗进行配置

  • “CE0”- writeable only when CPU0 ENDINIT bit is zero
  • “CE1” - writeable only when CPU1 ENDINIT bit is zero
  • “E” - writeable when any (one or more) CPUx ENDINIT bit is zero
  • “SE” - writeable only when Safety ENDINIT bit is zero
  • None of the above - accessible at any time

还是直接看寄存器吧

寄存器

CON0

TC264(手册学习笔记)系统控制3看门狗_第1张图片
一共有三个,分别对应savety watchdog、cpu0/1 watchdog。

  • ENDINIT 0 允许写入保护的寄存器
  • LCK 0 解锁CON0寄存器
  • PW 用户的password
  • REL 重新加载的值 用于定时器

CON1

TC264该寄存器没功能。。。。
在这里插入图片描述

SR

这个寄存器用于显示当前看门狗的状态,不能写
TC264(手册学习笔记)系统控制3看门狗_第2张图片

  • AE 访问错误标志位
  • OE 溢出错误
  • IS1/IS0 输入时钟状态
  • DS 看门狗使能标志位
  • TO 看门狗超时标志位
  • US 0 任何时间允许关闭看门狗 1 只有在SMU启动的时候才能锁定
  • PAS 0 每次获取访问权限后不修改密码
  • TCS 定时器状态检测标志位
  • TCT tiemr check tolerance 与password有关
  • TIM 当前计时器的数值

还有两个寄存器没啥子用,这芯片不支持

代码

写完这代码才感觉对上面的寄存器配置清楚一些。
周期计算公式

根据官方的分频,算出来大概计数器+3/ms

	IfxScuWdt_Config config;
	
	//只用savety watchdog
	void wdog_init_ms(uint16 ms)
	{
		Ifx_SCU_WDTS     *watchdog = &MODULE_SCU.WDTS;
		uint16 num = ms * 3;
		disableInterrupts();
		IfxScuWdt_initConfig(&config);//	0xFC	1ms
		config.password 	= 	IfxScuWdt_getSafetyWatchdogPassword();
		config.reload		= 	0xFFFF - num;		//配置时间
		IfxScuWdt_initSafetyWatchdog(watchdog, &config);
		enableInterrupts();
	}
	
	//喂狗
	void wdog_feed(void)
	{
		uint16 password = IfxScuWdt_getSafetyWatchdogPassword();
		IfxScuWdt_changeSafetyWatchdogReload(password, config.reload);
	}
	
	//禁用狗
	void wdog_disable(void)
	{
		IfxScuWdt_disableSafetyWatchdog(IfxScuWdt_getSafetyWatchdogPassword());
	}

你可能感兴趣的:(智能车)