dsp第五讲--第6章TMS320F2812的时钟及看门狗_第1页
dsp第五讲--第6章TMS320F2812的时钟及看门狗_第2页
dsp第五讲--第6章TMS320F2812的时钟及看门狗_第3页
dsp第五讲--第6章TMS320F2812的时钟及看门狗_第4页
dsp第五讲--第6章TMS320F2812的时钟及看门狗_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第6章 tms320f2812的时钟及看门狗,dsp tms320f2812内部结构,6.1 时钟单元,6.1.1 时钟单元基本结构,tms320f2812处理器内部集成了振荡器、锁相环、看门狗及工作模式选择等控制电路。 振荡器、锁相环主要为处理器cpu及相关外设提供可编程的时钟,每个外设的时钟都可以通过相应的寄存器进行编程设置; 看门狗可以监控程序的运行状态,提高系统的可靠性。,f2810和f2812内部的各种时钟和复位电路,6.1.2 锁相环电路,锁相环是一种控制晶振使其相对于参考信号保持恒定相位的电路,在数字通信系统中使用比较广泛。 目前微处理器或dsp集成的片上锁相环,主要作用则是通过

2、软件实时地配置片上外设时钟,提高系统的灵活性和可靠性。此外,由于采用软件可编程锁相环,所设计的系统处理器外部允许较低的工作频率,而片内经过锁相环微处理器提供较高的系统时钟。 好处:可以有效地降低系统对外部时钟的依赖和电磁干扰,提高系统启动和运行的可靠性,降低系统对硬件的设计要求 。,6.1.2 锁相环电路,tms320f2812处理器的片上晶振和锁相环模块为内核及外设提供时钟信号,并且控制器件的低功耗工作模式。片上晶振模块允许使用2种方式为器件提供时钟,即采用内部振荡器或外部时钟源。 (1) 使用内部振荡器,在xl/xclkin和x2这两个引脚之间连接一个石英晶体,一般选用30 mhz。 (2

3、) 采用外部时钟,将输入的时钟信号直接接到xl/xclkin引脚上,而x2悬空,不使用内部振荡器。,晶体振荡器及锁相环模块,锁相环配置模式,处理器内部时钟电路,锁相环模块除了为c28x内核提供时钟外,还通过系统时钟输出提供快速和慢速2种外设时钟,而系统时钟主要通过外部引脚xplldis及锁相环控制寄存器进行控制。,如果xplldis为高电平,使能芯片内部锁相环电路,则可以通过控制寄存器pllcr软件设置系统的工作频率。 注意:1. 在通过软件改变系统的工作频率时,必须等待系统时钟稳定后才可以继续完成其他操作。 2. 可以通过外设时钟控制寄存器使能外设时钟。 在具体的应用中。为降低系统功耗,不使

4、用的外设最好将其时钟禁止。外设时钟包括快速外设和慢速外设两种,分别通过hispcp和lospcp寄存器进行设置。,改变锁相环倍频系数和外设时时钟的具体应用程序 /- /初始化锁相环及外设时钟函数initpll /- void initpll(uint16 val) volatile uint16 ivol; if (sysctrlregs.pllcr.bit.div!=val) eallow; sysctrlregs.pllcr.bit.div=val; edis; /在锁相环时钟频率切换过程中,只有当锁相环稳定后cpu才会切换到新的pll设置 /因此在设置完pllcr后需要等待pll稳定。p

5、ll的切换时间大约等于131072个输入时钟周期 disabledog( ); for(ivol=0; ivol(131072/2)/12);ivol+) ,/为降低系统功耗,不使用的外设时钟需要屏蔽。但如果使用外设必须首先使能相应的外设时钟 void initperipheralclocks(void) eallow; / hispcp/lospcp预定标寄存器设置 sysctrlregs.hispcp.a11=0 x0001; sysctrlregs.lospcp.a11=0 x0002; /使能使用的外设时钟 sysctrlregs.pclkcr.bit.evaenclk=1; sysc

6、trlregs.pclkcr.bit.evbenclk=1; sysctrlregs.pclkcr.bit.sciaenclk=1; sysctrlregs.pclkcr.bit.scibenclk=1; sysctrlregs.pclkcr.bit.mcbspenclr=1; sysctrlregs.pclkcr.bit.spienclk=1; sysctrlregs.pclkcr.bit.ecanenclk=1; sysctrlregs.pclkcr.bit.adcettclk=1; edis; ,6.1.3 时钟单元寄存器,注意,表中所有寄存器只有在执行eallow指令后,才可以访问。

7、pll控制寄存器(pllcr)只能被xrs信号复位到已知状态。,1.外设时钟控制寄存器(pclkcr),位15eserved 保留位 位14ecanenclk 如置1,将使能can外设模块的时钟。要进入低功耗工作模式,用户可以将该位清零或复位为0。 位13 eserved 保留位 位12mcbspenclk 如置1,使能mcbsp外设模块的低速时钟(lspclk),要让器件进入低功耗工作模式,用户可以将该位清零或复位。 位11scibenclk 如置1,使能sci-b外设模块的低速时钟(lspclk),要让器件进入低功耗工作模式,用户可以将该位清零或复位。,位10sciaenclk 如置1,使

8、能sci-a外设模块的低速时钟(lspclk),要让器件进入低功耗工作模式,用户可以将该位清零或复位。 位9eserved 保留位 位8spiaenclk 如置1,使能串行外设接口的低速时钟(lspclk),要让器件进入低功耗工作模式,用户可以将该位清零或复位。 位74eserved 保留位,位3adcenclk 如置1,使能模数转换外设模块的高速时(hspclk),要让器件进入低功耗工作模式,用户可以将该位清零或复位。 位2eserved 保留位 位1evbenclk 如置1,使能事件管理evb外设模块的高速时钟(hspclk),要让器件进入低功耗工作模式,用户可以将该位清零或复位。 位0e

9、vaenclk 如置1,使能事件管理eva外设模块的高速时钟(hspclk),要让器件进入低功耗工作模式,用户可以将该位清零或复位。,位153eserved 保留位,2. 高速外设时钟寄存器(hispcp),位20hspclk 配置与sysclkout相关的高速外设模块时钟(hspclk)频率。 000 高速时钟sysclkout/1 001 高速时钟sysclkout/2(复位值) 010 高速时钟sysclkout/4 011 高速时钟sysclkout/6 100 高速时钟sysclkout/8 101高速时钟sysclkout/10 110高速时钟sysclkout/12 111高速时

10、钟sysclkout/14,位153eserved 保留位,2.低速时钟寄存器(lospcp),位20lspclk 配置与sysclkout相关的低速外设模块时钟(lspclk)频率。 000 低速时钟sysclkout/1 001 低速时钟sysclkout/2 010 低速时钟sysclkout/4(复位值) 011 低速时钟sysclkout/6 100 低速时钟sysclkout/8 101 低速时钟sysclkout/10 110 低速时钟sysclkout/12 111 低速时钟sysclkout/14,位154eserved 保留位,3.锁相环控制寄存器( pllcr ),位30

11、 div div位域控制是否旁路pll,不旁路时,用于设置pll时钟比率。 0000clkinoscclk/2(pll旁路) 0001clkin(oscclk*1.0)/2 0010clkin(oscclk*2.0)/2 0011clkin(oscclk*3.0)/2 0100clkin(oscclk*4.0)/2 0101clkin(oscclk*5.0)/2 0110clkin(oscclk*6.0)/2 0111clkin(oscclk*7.0)/2 1000clkin(oscclk*8.0)/2 1001clkin(oscclk*9.0)/2 1010clkin(oscclk*10.0

12、)/2 10111111保留,问 题,如果要使系统时钟为输入时钟的5倍频,同时使能所有的外设时钟,将高速外设的时钟设置为系统时钟的1/8,低速外设的时钟设置为系统时钟的1/10,应该如何设置相关的寄存器?,pllcr=0 x000a; pclkcr=0 xffff; hispcp=0 x0004; lospcp=0 x0005;,6.2 看门狗,看门狗主要用来检测软件和硬件的运行状态,当内部计数器溢出时,将产生一个复位信号。 为了避免产生不必要的复位,要求用户定期对看门狗定时器进行复位。 如果不明的原因使cpu中断程序,看门狗将产生一个复位信号,使cpu复位,程序从系统软件的开始执行。 看门狗

13、有效地提高了系统的可靠性。,6.2.1 看门狗的基本结构,或门,6.2.2 看门狗基本操作,在看门狗计数器(wdcntr)溢出之前,如果采用正确的时序向wdkey写入数据就可以使wdcntr复位。 当向wdkey写0 x55时,wdcntr复位到使能位置;只有在向wdkey写0 xaa后才会使wdcntr真正地复位。 0 x55和oxaa以外的任何数据写到wdkey都会引起系统复位。只要向wdkey写0 x55和0 xaa,无论写的顺序如何都不会导致系统复位,而只有先写0 x55再写0 xaa才会使wdcntr复位。,看门狗操作实例,6.2.2 看门狗基本操作,看门狗的预定标寄存器可以用来提高

14、看门狗的计数溢出周期。逻辑校验位(wdchk)是看门狗的另一个安全机制,所有访问看门狗控制寄存器(wdcr)的写操作中,相应的校验位(位53)必须是“101,否则将会拒绝访问并会立即触发复位。,看门狗的内部原理图,6.2.3 看门狗寄存器,1.看门狗控制寄存器,看门狗控制寄存器的各位分配,看门狗控制寄存器功能定义,2.系统控制和状态寄存器,系统控制和状态寄存器各位分配,系统控制和状态寄存器功能定义,位158eserved 保留位,3.看门狗计数寄存器,位70 wdcntr 程序监视器计数器的当前值。 8位计数器不断地以wdclk频率增加。 如果计数器上溢,则程序监视器发出复位信号。 如果写入了

15、一个有效数据序列到wdkey寄存器,则计数器复位到0。 wdclk频率由wdcr寄存器配置。,位158 eserved 保留位,4.看门狗复位寄存器,位70 wdkey 写入0 x55后再写入0 xaa将清零wdcntr。 写任何其它值都会立即使程序监视器发出复位信号。 读取操作时返回wdcr寄存器值。,6.2.4 看门狗应用,f2812上电后看门狗总是处于使能状态,如果不周期地控制看门狗就会触发复位。因此,对于看门狗最简单的处理方法就是通过禁止位(wddis)禁止看门狗操作。但看门狗是系统稳定运行的一个保障,因此这种方法并不可取。在实际项目开发过程中,一旦系统调试完毕独立运行就加入看门狗这个

16、安全机制,从而保证系统的正常运行。,/一一一一一一一一一一一一一一一一一一一一一一 /看门狗应用实例:example 28xwatchdog.c /一一一一一一一一一一一一一一一一一一一一一一,/看门狗直接连接到pie模块的wakeint中断,允许将cpu从掉电模式唤醒 /程序代码放在一个无限循环中,用户可以选择使用kickdog函数操作看门狗key寄存器 /如果使用kickdog函数操作看门狗key寄存器,将不会产生wakeint中断 /如果不对key寄存器操作,将会产生wakeint中断,/观察变量 / loopcount无限循环次数计数 /wakecount产生wakeint的中断次序

17、/step 0、包含需要的头文件 /dsp28_ device.h;采用#include包含器件使用的头文件 /dsp28_example. h;本例程需要的特定的头文件 #include dsp28_ device. h /函数原型声明 interrupt void wakeint_isr(void); /全局变量声明 uint32 wakecount; uint32 loopcount;,void main(void) /step 1、初始化系统控制寄存器、pll、看门狗、时钟位默认状态 /该函数在后面的dsp28_sysctrl.c文件中查找 initsysctrl(); / step2

18、、gpi0初始化 /initgpio(); / step 3、初始化中断向量表(pie向量表) /相应中断相量表请在下面的dsp28_ defaultisr. c文件中查找 /禁止和清除所有cpu中断 dint; ier=0 x0000;,ifr=0 x0000; /初始化pie控制寄存器,参考dsp28_ piectrl.c文件 initpievecttable(); /step 4、初始化外设 /initperipherals(); /step 5、用户特定函数,重新分配向量(可选择),使能中断 /重新为wakeint分配pie向量,并指向相应的中断服务程序 eallow; pievect

19、table.wakeint=,/使能wakeint:位于pie的组1的第8中断 piectrlregs.pieier1.bit.intxb=1; /对整个程序状态寄存器进行操作,避免清除wdoverride标识位 eallow; sysctrlregs.scsr.a11=bit1; edis; /计数器清零 wakecount = 0; /中断计数 loopcount = 0; /循环计数 /使能全局中断,并配置位real一time debug模式 eint; /使能全局中断intm ertm; /使能全局realtime中断dbgm,/ step 6、主循环 for(;) loopcount+; /使用kickdog操作看门狗key寄存器,避免产生wakeint中断 /通常情况下为了保证程序正常运行,需要在主程序循环或定时中断服务程序中对key进行操作 /kickdog(); ,/ step 7、中断服务程序 interrupt void wakeint_isr(void) wak

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论