TMS320F2802x - Piccolo系列DSC原理及应用 - 图文 下载本文

NMIWDCNT NMIWDPRD 0x7064 0x7065 1 1 - yes 器 NMI看门狗计数器寄存器 NMI看门狗周期寄存器 表 2.11 NMI配置寄存器(NMICFG)的位定义(受EALLOW保护) 位 15:2 1 域 保留 CLOCKFAIL 值 0 1 描述 CLOCKFAIL中断使能位:该位置1时使能CLOCKFAIL条件产生一个NMI中断。一旦使能,CLOCKFAIL中断标志就不能由用户来清除。只有器件复位能将标志清除。该位写入0被忽略。读取这个位将指示CLOCKFAIL中断标志是使能还是禁能。 CLOCKFAIL中断禁能。 CLOCKFAIL中断使能。 0 保留 表 2.12 NMI标志寄存器(NMIFLG)的位定义(受EALLOW保护) 位 15:2 1 域 保留 CLOCKFAIL 值 0 1 0 1 描述 CLOCKFAIL中断标志:这个位指示CLOCKFAIL条件是否被锁存。这个位只能通过写NMIFLGCLR寄存器中相应的位或通过一个器件复位(XRS)来清除。 无CLOCKFAIL条件挂起。 检测到CLOCKFAIL条件。 NMI中断标志:这个位指示是否产生了NMI中断。该位只能通过写NMIFLGCLR寄存器中相应的位或通过一个XRS复位来清除: 无NMI中断产生。 产生了NMI中断。 在清除该标志前,不会有NMI中断产生。 0 NMIINT 表 2.13 NMI标志清除寄存器(NMIFLGCLR)的位定义(受EALLOW保护) 位 15:2 1 域 保留 CLOCKFAIL(1) 值 0 1 0 1 描述 CLOCKFAIL标志的清除 写入0被忽略。总是读回0。 写1到对应的位来清除NMIFLG寄存器中相应的标志位。 NMI标志清除 写入0被忽略。总是读回0。 写1到对应的位来清除NMIFLG寄存器中相应25

0 NMIINT(1)

的标志位。 (1) 如果在同一个周期内,硬件正尝试将一个位设为1时软件却在尝试将一个位清零,那么硬件操作优先。你应该先清除挂起的CLOCKFAIL标志,再清除NMIINT标志。 表 2.14 NMI标志强制设置寄存器(NMIFLGFRC)的位定义(受EALLOW保护) 位 15:2 1 域 保留 CLOCKFAIL 值 0 1 描述 强制设置CLOCKFAIL标志。 写入0被忽略。总是读回0。这可以用作测试NMI机制的一种方法。 写1置位CLOCKFAIL标志。 0 保留 表 2.15 NMI看门狗计数器寄存器(NMIWDCNT)的位定义

位 15:0 域 NMIWDCNT 值 描述 NMI看门狗计数器:只要任何一个使能的FAIL标志被设置,这个16位的递增计数器的值就递增。如果计数器的值到达了周期值,启动一个NMIRS信号,这个信号将系统复位。计数器在到达周期值时复位为0,然后,如果任何使能的FAIL标志被设置,计数器就重新启动计数。 如果没有使能的FAIL标志被设置,计数器就复位为零并保持,直到有使能的FAIL标志被设置。 通常,在NMI看门狗触发复位之前,软件会响应产生的NMI中断,并清除受影响的标志。在某些情况下,软件可以决定允许看门狗以任何方式复位器件。 计数器以SYSCLKOUT的速率被计时。 表 2.16 NMI看门狗周期寄存器(NMIWDPRD)的位定义(受EALLOW保护) 位 15:0 域 NMIWDPRD 值 描述 R/W NMI看门狗周期:这个16位的值包含周期值,当看门狗计数器的值与该值相匹配时产生复位。复位时,该值被设为最大值。软件可以在初始化的时候降低周期值。 写入一个小于当前计数器值的PERIOD值会自动强制NMIRS有效和复位看门狗计数器。

? NMI看门狗仿真注意事项

尝试调试目标器件(仿真挂起,例如断点)时NMI看门狗模块不工作。NMI看门狗模块在各种调试条件下的行为如下所示:

26

CPU挂起:当CPU挂起时,NMI看门狗计数器也被挂起。

自由运行模式:当CPU被置入自由运行模式,NMI看门狗计数器恢复正常工作。 实时单步模式:当CPU处于实时单步模式时,NMI看门狗计数器被挂起。即使

在实时中断期间,计数器仍然挂起。 实时自由运行模式:当CPU处于实时自由运行模式时,NMI看门狗计数器正常工作。

2.2.7 XCLKOUT的产生

XCLKOUT信号直接从系统时钟SYSCLKOUT获得,如图 2.13所示。XCLKOUT可以和SYSCLKOUT相同,或者为SYSCLKOUT/2或SYSCLKOUT/4。默认情况下,上电时XCLKOUT = SYSCLKOUT/4或OSCCLK/16。

图 2.13 XCLKOUT的产生

如果XCLKOUT当前未被使用,可以通过将XCLK寄存器的XCLKOUTDIV位设为3来将其关闭。

2.2.8 PLL控制(PLLCR)寄存器

PLLCR寄存器用来改变器件的PLL乘法器。在写PLLCR寄存器之前,必须满足下列要求:

? PLLSTS[DIVSEL]位必须为0(允许4分频CLKIN)。只有在PLL完成锁定

(即在PLLSTS[PLLLOCKS] = 1之后)后才能改变PLLSTS[DIVSEL]。

当CPU写PLLCR[DIV]位时,PLL逻辑将CPU时钟(CLKIN)切换到OSCCLK/2。一旦PLL稳定下来并且锁定到新指定的频率,PLL就将CLKIN切换成新值,如表 2.17所示,这时,PLLSTS寄存器的PLLLOCKS位被置位,表示PLL已经完成锁定,器件现在正以新的频率运行。用户软件可以监控PLLLOCKS位来确定PLL何时完成锁定。只要PLLSTS[PLLLOCKS] = 1,就可以改变DIVSEL。

任何时候写PLLCR寄存器都必须遵守图 2.14的流程。

27

图 2.14 PLLCR更改流程图

2.2.9 PLL控制、状态和XCLKOUT寄存器描述

PLLCR寄存器的DIV域控制PLL是否被旁路,当PLL没有被旁路时,该域设置PLL的时钟比率(clocking ratio)。复位后默认PLL旁路。如果PLLSTS[DIVSEL]位是10或11,或者PLL就像正被置位的PLLSTS[MCLKSTS]位所指示的那样,工作在跛行模式(limp mode),那么不写DIV域。有关更改PLLCR的流程请见图 2.14。

28