1、CC2530和STM32嵌入式接口技术开发3.6 CC2530看门狗应用开发EducationSolutions目录ContentsInternet+看门狗介绍CC2530与看门狗定时器项目场景说明项目实践11:26/3看门狗概念看门狗定时器(WDT,Watch Dog Timer)是单片机的一个组成部分,它实际上是一个计数器,一般给看门狗一个数字,程序开始运行后看门狗开始倒计数。如果程序运行正常,过一段时间CPU应发出指令让看门狗复位,重新开始倒计数。如果看门狗减到0就认为程序没有正常工作,强制整个系统复位。11:26/4看门狗IC的基本原理看门狗,是一个定时器电路,一般有一个输入,叫喂狗(
2、kicking the dog or service the dog),一个输出到MCU的RST端,MCU正常工作的时候,每隔一段时间输出一个信号到喂狗端,给WDT清零。如果超过规定的时间不喂狗(一般在程序跑飞时),WDT定时超过,就会给出一个复位信号到MCU,使MCU复位以此防止MCU死机。看门狗的作用就是防止程序发生死循环,或者说程序跑飞。EducationSolutions目录ContentsInternet+项目场景说明看门狗介绍CC2530与看门狗定时器项目实践11:26/6CC2530看门狗定时器介绍CC2530单片机看门狗定时器有一下特性:四个可选的定时器间隔看门狗模式定时器模式
3、在定时器模式下产生中断请求11:26/7CC2530看门狗定时器之看门狗模式在CC2530单片机系统复位之后,看门狗定时器同时被复位。此时要设置WDT为看门狗模式,必须从新设置WDCTL.MODE1:0位为10。然后启动看门狗,看门狗定时器的计数器就会从0开始递增。在看门狗模式下,一旦定时器使能,就不可以禁用该定时器,因此如果WDT位已经运行在看门狗模式下,再往WDCTL.MODE1:0写入00或10就不起作用了。11:26/8CC2530看门狗定时器之定时器模式CC2530的看门狗定时器可以直接配置为定时器来使用,若要将WDT设置为一般定时器模式,必须把WDCTL.MODE1:0位设置为11
4、。设置成功后定时器开始执行,且计数器从0开始递增。当计数器达到设定的计数值后,定时器将产生一个中断请求(IRCON2.WDTIF/IEN2.WDTIE)。11:26/9寄存器介绍CC2530的看门狗的配置寄存器只有一个WDCTL(看门狗控制寄存器)。位位名称名称复位复位R/W描述描述7:4CLR3:00000R0/W清除定时器。当0 xA跟随0 x5写到这些位,定时器被清除(即加载0)。注意定时器仅写入0 xA后,在1个看门狗时钟周期内写入0 x5时被清除。当看门狗定时器是IDLE为时写这些位没有影响。当运行在定时器模式,定时器可以通过写1到CLR0(不管其他3位)被清除为0 x0000(但是
5、不停止)。3:2MODE1:000R/W模式选择。该位用于启动WDT处于看门狗模式还是定时器模式。当处于定时器模式,设置这些位为IDLE将停止定时器。注意:当运行在定时器模式时要转换到看门狗模式,首先停止WDT,然后启动WDT处于看门狗模式。当运行在看门狗模式,写这些位没有影响。00:IDLE01:IDLE(未使用,等于00设置)10:看门狗模式11:定时器模式1:0INT1:000R/W定时器间隔选择。这些位选择定时器间隔定义为32 kHz振荡器周期的规定数。注意间隔只能在WDT处于IDLE时改变,这样间隔必须在定时器启动的同时设置。00:定时周期32,768(1 s)当运行在32 kHz
6、XOSC01:定时周期8192(0.25 s)10:定时周期512(15.625 ms)11:定时周期64(1.9 ms)当通过CLKCONCMD.CLKSPD使能时钟分频时,看门狗定时器的长度间隔减少一个等于当前振荡器时钟频率除以设定时钟的因数速度。例如,如果选择32-MHx晶体并且时钟速度被设置为4MHz,则看门狗超时时间减少了32 MHz/4 MHz=8倍。如果看门狗时间间隔由WDCTL.INT设置是1秒,名义上是这个时钟分频因子的1/8秒。EducationSolutions目录ContentsInternet+项目场景说明看门狗介绍CC2530与看门狗定时器项目实践11:26/11项
7、目场景车辆在中国的使用量越来越高,国内的车辆保有量已经达到了1.7亿辆,车辆在方便人们生产生活的同时也,车辆安全也越来越受到人们的重视,这种重视是多方面的,例如交通事故,城市拥堵,车辆安全等等,其中最关心的就是车辆安全,车辆安全直接影响到道路安全、交通安全和人身安全所以保证车辆的使用安全变的尤为重要,车辆安全由车辆的控制系统来保障。车辆的控制系统是通过CAN总线进行连接的,当一个系统出现故障时,最为重要的是能够快速修复,而修复的方法就是通过重新启动,在短时间内重新启动能够保证车辆的安全。11:26/12任务目标使用CC2530微处理器模拟车辆设备复位重启,通过编辑程序使用CC2530微处理器的
8、看门狗外设实现假设CC2530微处理器宕机后的系统复位重启,使用按键输入作为CC2530微处理器正常运行的条件,通过连接在CC2530微处理器管脚上的指示灯表示CC2530微处理器当前的工作状态。11:26/13项目分析程序宕机后要让设备自动重启就需要用到CC2530单片机的看门狗外设,通过模拟喂狗以保持程序正常运行,中断喂狗则程序复位重启。CC2530看门狗的的配置比较简单,主要就是对WDCTL寄存器的配置,首先开启IDLE功能,功能开启后通过WDCTL寄存器低两位配置喂狗时间即可。喂狗操作则是依次向WDCTL寄存器写入0 x0A和0 x05即可。11:26/14程序流程图11:26/15项
9、目实现看门狗初始化程序如下:void watchdog_init(void)WDCTL =0 x00;/打开IDLE才能设置看门狗WDCTL|=0 x08;/定时器间隔选择,间隔一秒11:26/16项目实现喂狗程序内容如下:void feed_dog(void)WDCTL=0 xa0;/清除定时器。当0 xA跟随0 x5写到这些位,定时器被清除WDCTL=0 x50;LED2=ON;/系统不复位LED灯长亮LED1=ON;/系统不复位LED灯长亮11:26/17项目实现按键按下,执行喂狗操作:while(1)LED2=ON;/没有按下按键系统走动复位,所以LED0会闪烁LED1=ON;if(KEY1=ON)/按键按下,执行喂狗操作,LED0点亮 delay_ms(10);/按键防抖if(KEY1=ON)/再次检测按键按下 feed_dog();/喂狗操作 11:26/18项目思考看门狗的基本工作原理?CC2530微处理器的看门狗有几种模式?如何实现CC2530看门狗的喂狗?如何驱动CC2530微处理器的看门狗?