理论教育 看门狗定时器及其应用于2803x DSP的设置方法

看门狗定时器及其应用于2803x DSP的设置方法

时间:2023-06-15 理论教育 版权反馈
【摘要】:2803x DSP内设置了一个看门狗定时器WD,用来监视DSP程序的运行状况。图2-13为看门狗定时器模块框图。DSP复位时,看门狗定时器自动工作。为了防止这种情况出现,用户可以禁止看门狗定时器工作,或者周期性地向看门狗钥匙寄存器中写入0x55和0xAA。看门狗有如下寄存器,它们全部受EALLOW保护。位2~0 WDPS:看门狗时钟定标位。CPU处于自由运行模式时,看门狗恢复正常操作。即使在实时中断中,看门狗也保持悬挂状态。例2-3 使用看门狗定时器的C语言程序段。

看门狗定时器及其应用于2803x DSP的设置方法

2803x DSP内设置了一个看门狗定时器WD(Watchdog Timer,也称为监视定时器),用来监视DSP程序的运行状况。当系统进入不可预知的状态而造成“死机”时,WD将产生一个复位操作,从而使DSP进入一个已知的起始位置重新运行。

图2-13为看门狗定时器模块框图。DSP复位时,看门狗定时器自动工作。一旦8位的看门狗计数器(WDCR)达到最大计数值,就产生一个512个振荡时钟(OSCCLK也即XCLKIN)周期宽的脉冲,使DSP复位。为了防止这种情况出现,用户可以禁止看门狗定时器工作,或者周期性地向看门狗钥匙寄存器(WDKEY,也称为关键字寄存器)中写入0x55和0xAA。

978-7-111-57271-8-Chapter02-77.jpg

图2-13 看门狗定时器模块框图

当DSP处在备用模式时,除了看门狗外的所有外设都被关掉。同时也关掉了PLL或振荡器的时钟。978-7-111-57271-8-Chapter02-78.jpg信号送到了低功耗模块(LPM),因此可以将DSP从备用模式下唤醒。在空闲模式下,978-7-111-57271-8-Chapter02-79.jpg可以向CPU申请中断(PIE中的WAKEINT中断),从而将CPU拉出空闲状态。在停止模式下,振荡器、PLL和看门狗全部被关掉。

看门狗有如下寄存器,它们全部受EALLOW保护。

(1)系统控制与外设状态寄存器(SCSR)

978-7-111-57271-8-Chapter02-80.jpg

●位15~3,保留。

●位2,WDINTS:看门狗中断状态位。反映了看门狗电路中WDINTS信号的状态。

●位1,WDENINT:看门狗中断使能位。如果设为1,则看门狗复位WDRST输出信号禁止,看门狗中断使能。如果设为0,则看门狗复位WDRST输出信号使能,看门狗中断禁止。

●位0,WD OVERRIDE:看门狗保护位。复位后为1,这时用户可以改变看门狗控制寄存器WDCR中WDDIS位的状态。该位是一个只能清除的位,通过向该位写1对其清零,这时用户不能改变WDCR中WDDIS位的状态,可以防止看门狗WD被软件禁止。

(2)8位WD计数寄存器:WDCNTR

978-7-111-57271-8-Chapter02-81.jpg

●位15~8,保留位。

●位7~0,WDCNTR:反映当前WD计数寄存器的值。该8位计数器按WDCLK时钟频率不断计数,如果溢出,则引起DSP复位。如果WDKEY寄存器写入了正确的数值,则WDCNTR清零。

(3)WD复位钥匙寄存器:WDKEY

978-7-111-57271-8-Chapter02-82.jpg

●位15~8,保留位。

●位7~0,WDKEY:如果先写入0x55,再写入0xAA就会使WDCNTR清零。写入任何其他数值则马上使DSP复位。读操作返回的是WDCR寄存器的值。

(4)WD定时器控制寄存器:WDCR

978-7-111-57271-8-Chapter02-83.jpg

●位15~8,保留位。

●位7,WDFLAG:看门狗复位状态标志位。如果为1,表示看门狗复位;为0,表示是外部复位或上电复位。该位写1清除,否则状态一直保持。

●位6,WDDIS:向该位写1,禁止看门狗模块;写0,使能看门狗模块。复位值为0,看门狗模块使能。只有在SCSR寄存器中的WDOVERRIDE位设为1后才能修改该位。

●位5~3,WDCHK:看门狗检验位。任何时候写该寄存器,用户都必须向这些位写入101。写入任何其他数值都会引起复位(如果看门狗使能)。(www.daowen.com)

位2~0 WDPS:看门狗时钟定标位。这些位用来配置看门狗时钟WDCLK。

000 WDCLK=OSCCLK/512/1

001 WDCLK=OSCCLK/512/1

010 WDCLK=OSCCLK/512/2

011 WDCLK=OSCCLK/512/4

100 WDCLK=OSCCLK/512/8

101 WDCLK=OSCCLK/512/16

110 WDCLK=OSCCLK/512/32

111 WDCLK=OSCCLK/512/64,OSCCLK为振荡器频率。

在振荡器频率OSCCLK=60MHz时,溢出时间最小为256/60×512=2.18ms,最大为2.18×64=139.8ms(64分频)。

仿真时,看门狗在下面不同的条件下有不同的工作状态:

1)CPU悬挂。CPU悬挂时,WDCLK时钟也悬挂。

2)自由运行模式。CPU处于自由运行模式时,看门狗恢复正常操作。

3)实时单步模式。CPU处于实时单步模式时,WDCLK悬挂。即使在实时中断中,看门狗也保持悬挂状态。

4)实时自由运行模式。CPU处于自由运行模式时,看门狗正常工作。

例2-3 使用看门狗定时器的C语言程序段。

EALLOW; //宏定义#define EALLOW asm(“EALLOW”),解除保护

SysCtrlRegs.WDKEY=0x55;

SysCtrlRegs.WDKEY=0xAA; //周期性写入0x55,0xAA,使WDCNTR清零

EDIS; //宏定义#define EDIS asm(“EDIS”),设置保护

禁止看门狗定时器工作的C语言程序段如下:

EALLOW;

SysCtrlRegs.WDCR=0x0068; //屏蔽看门狗

EDIS;

注意DSP上电时看门狗是工作的,所以应尽快屏蔽看门狗或向WDKEY寄存器周期性写入0x55、0xAA,以免程序跑飞。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈