版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章(2)时钟及系统控制1第二章(2)时钟及系统控制1一、时钟及系统控制二、程序地址产生三、转移、调用和返回四、重复指令第二章(2)时钟及系统控制第2章CPU内部结构与时钟系统2一、时钟及系统控制第二章(2)时钟及系统控制第2章CPU第2章CPU内部结构与时钟系统3第2章CPU内部结构与时钟系统3主要介绍F2812的时钟、锁相环、看门狗和复位控制电路等。各种时钟和复位电路的内部结构:一、时钟及系统控制第2章CPU内部结构与时钟系统4主要介绍F2812的时钟、锁相环、看门狗和复位控制电路等。各第2章CPU内部结构与时钟系统5第2章CPU内部结构与时钟系统5HISPCPHISPCP一、时钟及系统控制HISPCP高速外设时钟设置寄存器PLLCRPLL控制寄存器LOSPCP慢速外设时钟设置寄存器SCSR系统控制和状态寄存器PCLKCR外设时钟控制寄存器WDCNTR看门狗计数寄存器LPMCR0低功耗模式控制寄存器0WDKEY看门狗复位key寄存器LPMCRl低功耗模式控制寄存器1WDCR看门狗控制寄存器第2章CPU内部结构与时钟系统6HISPCPHISPCP一、时钟及系统控制HISPCP▲
外设时钟控制寄存器PCLKCR——数据存储空间0x0000701C
时钟寄存器▲
高低速外设时钟寄存器HISPCP/LOSPCP——0x0000701A/B▲
系统控制和状态寄存器SCSR——数据存储空间
0X00007022保留D15D14D13D12D11D10D9D8ECANENCLKMCBSPENCLKSCIBENCLKSPIENCLK
R-0
R/W-0
R-0
R/W-0
R/W-0
Reserved
D15D3D2D1D0WDINTSWDENINTWDOVERRIDE
R-0R-1R/W-0R/W1C-1一、时钟及系统控制SCIAENCLK保留保留保留ADCENCLK保留EVAENCLKEVBENENCLKD7D4D3D2D1D0R-0R/W-0R-0
R/W-0
R/W-0
R/W-0R-0
R/W-0Reserved
D15D3D2D0HSPCK/LSPCK
R-0R/W-010第2章CPU内部结构与时钟系统7▲外设时钟控制寄存器PCLKCR——数据存储空时钟模块提供两种操作模式:▲
内部振荡器:如果使用内部振荡器,则必须在X1/XCLKIN和X2两个引脚之间连接一个石英晶体。▲
外部时钟源:如果采用外部时钟,可以将输入的时钟信号直接接到X1/XCLKIN引脚上,而X2悬空。在这种情况下,不使用内部振荡器。一、时钟及系统控制晶体振荡器及锁相环当XPLLDIS为低电平,系统直接采用时钟或晶振直接作为系统时钟;当XPLLDIS为高电平,外部时钟经过PLL倍频后,为提供时钟。
第2章CPU内部结构与时钟系统8时钟模块提供两种操作模式:一、时钟及系统控制晶体振荡器及锁相锁相环控制寄存器PLLCR——用于选择锁相环的工作模式和倍频系数定时器一、时钟及系统控制Reserved
D15D4D3D0DIV
R-0R/W-010▲
TIM——16位的计数寄存器,重新装载PRD的值。▲
PRD——16位周期寄存器。▲TCR——16位的定时器控制寄存器。▲
PSC——16位的预定标寄存器,重新装载TDDR的值。▲
TDDR——
16位的分频寄存器。有3个32位CPU定时器(TIMER0/1/2):√定时器0用户可以在应用程序中使用。√定时器1和定时器2预留给实时操作系统使用(例如DSPBIOS)。第2章CPU内部结构与时钟系统9锁相环控制寄存器PLLCR——用于选择锁相环的工作模式和倍频
F281×器件上有3个32位CPU定时器(TIMER0/1/2)
TIMER0可以在用户程序中使用,TIMER1/2预留给DSPBIOS或其它RTOS使用(如果不用DSPBIOS,可以供用户使用)。每个定时器有4个寄存器:
1)计数寄存器(TIMH:TIM):32位
2)周期寄存器(PRDH:PRD):32位
3)预定标寄存器(TPR):32位(预定标计数器PSC+分频寄存器TDDR)
4)控制寄存器(TCR):16位
TIF-TimerInterruptFlagTIE-TimerInterruptEnableTRB-TimerReloadBitTSS-TimerStopStatusBit10F281×器件上有3个32位CPU定时器(TIMER0/通用定时器
定时器的工作过程:
1)用32位计数寄存器(TIMH:TIM)装载周期寄存器(PRDH:PRD)中的计时常数;
2)计数寄存器根据SYSCLKOUT时钟递减计数(16+32位);
3)当计数寄存器等于0时,定时器的计数器寄存器重载周期寄存器值,并输出一个中断脉冲(TINT0)。TRBTSS设定采样频率11通用定时器定时器的工作过程:TRBTSS设定采样频率11voidConfigCpuTimer(structCPUTIMER_VARS*Timer,floatFreq,floatPeriod){ unsignedlong temp; Timer->CPUFreqInMHz=Freq;//Initializetimerperiod
Timer->PeriodInUSec=Period; temp=(long)(Freq*Period);//150MHz×100us=15000
Timer->RegsAddr->PRD.all=temp; Timer->RegsAddr->TPR.all=0;//Setpre-scalecountertodivideby1 Timer->RegsAddr->TPRH.all=0;
//Initializetimercontrolregister: Timer->RegsAddr->TCR.bit.TSS=1/0;//1=Stoptimer,0=StartTimer
Timer->RegsAddr->TCR.bit.TRB=1;//1=reloadtimer Timer->RegsAddr->TCR.bit.SOFT=1; Timer->RegsAddr->TCR.bit.FREE=1;//TimerFreeRun Timer->RegsAddr->TCR.bit.TIE=1;//1=EnableTimerInterrupt}配置CPU定时器下面的函数中周期寄存器由给定的DSP时钟频率Freq(MHz)和定时器周期Period(µs)两个参数确定。初始化后定时器处于停止状态。12voidConfigCpuTimer(structCPUC28X定时器定时器功能框图一、时钟及系统控制工作过程:首先用32位计数寄存器(TIMH:TM)装载周期寄存器(PRDH:PRD)内部的值。计数寄存器根据SYSCLKOUT时钟递减计数。当计数寄存器等于0时,定时器中断输出产生一个中断脉冲。
第2章CPU内部结构与时钟系统13C28X定定时器功能框图一、时钟及系统控制工作过程:首先用3▲
工作原理√在每个SYSCLKOUT脉冲后PSC减1,一直减到0。√在下一个SYSCLKOUT周期,TDDR加载新的除数值到PSC,并使TIM减1。√重复前两步操作,即PSC每次减到0后,TIM进行一次减1操作,直到TIM减为0√在下一个SYSCLKOUT周期,将定时器中断(TINT)送到CPU,和TOUT引脚。同时TIM装载来自PRD的新的定时计数器值,并使PSC再次减1。每经过(TDDR+1)个SYSCLKOUT周期,TIM减1。当PRD、TDDR或两者都不为零时,定时器中断频率即TINT的频率(fTINT)为:
fCLKOUT1为SYSCLKOUT的频率。C28X定时器第2章CPU内部结构与时钟系统14▲工作原理C28X定时器第2章CPU内部结构与时钟系统C20X定时器▲
计数器——TIMTIMD15D0R/W-0TIMHD15D0R/W-0▲
周期寄存器——PRDPRDD15D0R/W-0PRDHD15D0R/W-0第2章CPU内部结构与时钟系统15C20X定时器▲计数器——TIMTIMD15C20X定时器▲
控制寄存器——TCR0TIFTIEFREED15D14D13~D12D11D10D9~D6D5D4D3~D0TRB保留SOFT保留R/W-0
R/W-0R-0R/W-0R/W-0R-0R/W-0R/W-0R-0
TCR功能:√控制定时器模式√重新加载定时器√启动和停止定时器TSS保留▲
预定标寄存器——PSC/TDDRPSCD15D8D7D0R-0R/W-0PSCHD15D8D7D0R-0R/W-0TDDRTDDRH第2章CPU内部结构与时钟系统16C20X定时器▲控制寄存器——TCR0TIFTIEFREC20X一、时钟及系统控制看门狗及其应用F2812的看门狗与240x的基本相同,当8位的看门狗计数器计数到最大值时,看门狗模块产生一个输出脉冲(512个振荡器时钟宽度)。如果不希望产生脉冲信号,用户需要屏蔽计数器,或用软件周期向看门狗复位控制寄存器写“0x55+0xAA",该寄存器能够使看门狗计数器清零。
为了实现看门狗的各项功能,内部有3个功能寄存器
第2章CPU内部结构与时钟系统17C20X一、时钟及系统控制看门狗及其应用F2看门狗功能框图第2章CPU内部结构与时钟系统18看门狗功能框图第2章CPU内部结构与时钟系统182、看门狗及其应用
8位的看门狗计数器(WDCNTR),当计数到最大值时看门狗模块产生一个输出脉冲(512个OSCCLK时钟宽度),并可以中断或复位DSP。如果不希望产生脉冲信号,用户可以屏蔽看门狗模块,或者通过软件周期性的向看门狗复位寄存器(WDKEY)写“0x55+0xAA”,使得WDCNTR清零。应用说明:使能看门狗或屏蔽看门狗模块?看门狗时钟倍率?WDCR
希望看门狗中断(从低功耗模式唤醒)还是复位(程序失控)?SCSR
程序运行过程周期性的复位WDCNTR。向WDKEY
写“0x55+0xAA”
如果程序失控,则复位或中断DSP;否则看门狗不影响程序执行。提示:看门狗作为提高系统抗干扰能力的措施之一,是一种补救措施。192、看门狗及其应用8位的看门狗计数器(WDCNTR),当计看门狗模块框图看门狗模块20看门狗模块框图看门狗模块20看门狗控制寄存器WDCR写1到WDDIS,屏蔽看门狗模块;写0使能看门狗模块。
WDCHK(2~0)必须写101,其它值会引起DSP复位。
WDPS(2~0)配置看门狗计数时钟:
WDCLK=OSCCLK/512/(1~64)。看门狗中断状态标志位WDFLAG:读:1--看门狗复位(WDRST);0--器件复位写:1--将WDFLAG清零;0--WDFLAG状态不变21看门狗控制寄存器WDCR写1到WDDIS,屏蔽看门狗模块使能/屏蔽看门狗模块//Thisfunctiondisablesthewatchdogtimer.voidDisableDog(void){EALLOW;SysCtrlRegs.WDCR=0x0068;//WDDIS=1,WDCHK=101,EDIS;//WDPS=000(WDCLK=OSCCLK/512)}//Thisfunctionenablesthewatchdogtimer.voidEnableDog(void){EALLOW;SysCtrlRegs.WDCR=0x0028;//WDDIS=0,WDCHK=101,EDIS;//WDPS=000(WDCLK=OSCCLK/512)}22使能/屏蔽看门狗模块//Thisfunctiondis系统控制和状态寄存器SCSR
WDENINT:
1--看门狗复位信号(WDRST)被屏蔽,看门狗中断信号使能(WDINT)
0--看门狗复位信号(WDRST)被使能,看门狗中断信号屏蔽(WDINT)
WDINTS:看门狗中断状态位,反映WDINT的状态。
WDOVERRIDE:
1--允许改变WDCR中的看门狗屏蔽位WDDIS;0--不能改变WDDIS
清零后只有系统复位才允许改变该位的状态,用户可读取该位状态。23系统控制和状态寄存器SCSRWDENINT:WDINTS看门狗复位寄存器WDKEY依次写0x55+0xAA到WDKEY将使WDCNTR清零;写其它任何值都会使看门狗复位;读该寄存器将返回WDCR寄存器的值。//Thisfunctionresetsthewatchdogtimer.voidKickDog(void){EALLOW;SysCtrlRegs.WDKEY=0x0055;SysCtrlRegs.WDKEY=0x00AA;EDIS;}如果系统使能看门狗模块,需要在用户程序中定时执行KickDog函数,且定时器周期要小于看门狗计数器溢出周期。24看门狗复位寄存器WDKEY依次写0x55+0xAA到WDK看门狗计数寄存器WDCNTR
WDCNTR包含看门狗计数器的当前计数值(0-0xFF);如果计数器溢出,看门狗产生中断或复位DSP;如果向WDKEY写有效的组合(0x55+0xAA
),将使计数器清零。看门狗定时器的周期最大值:OSCCLK/512/(1-64)/256。25看门狗计数寄存器WDCNTRWDCNTR包含看门狗计数器的初始化系统控制//-ThisfunctioninitializestheSystemControlregisterstoaknownstate.程序功能:1、屏蔽看门狗模块2、配置PLLCR寄存器,设定SYSCLKOUT的频率3、配置高速/低速外设时钟的预定标因子4、使能相应外设时钟
voidInitSysCtrl(void) {
//Disablethewatchdog
DisableDog();
//InitializethePLLCRto0xA InitPll(0xA);
//Initializetheperipheralclocks InitPeripheralClocks(); }实验时,注意使能所使用的外设模块时钟,否则无法读写相应的外设寄存器。PLLCR通常设为10,即CPU的时钟频率为30MHz×5。26初始化系统控制//-Thisfunctioniniti一、时钟及系统控制看门狗及其应用▲
计数寄存器——WDCNTRReservedD15D8D7D0R-0R/W-0WDCNTR▲
复位寄存器——WDKEYReservedD15D8D7D0R-0R/W-0WDKEY▲
控制寄存器——WDCRReservedD15D8R-0R/W-0WDFLAGD7D6D5D3D2D0R/W-0R/W-0WDPSWDDISWDCHKR-0第2章CPU内部结构与时钟系统27一、时钟及系统控制看门狗及其应用▲计数寄存器——WDCN二、程序地址的产生
▲
通常程序是顺序执行的,即在连续的程序存储器地址上取出指令并执行。但有时程序需要转移到不连续的地址,然后再连续执行新地址处的指令。为此提供了转移、调用、重复(循环)和中断指令。▲
在执行当前指令的同时,程序流要求处理器生成下一个指令的程序地址(顺序或非顺序的)。程序控制:控制一个或多个指令块的执行次序。第2章CPU内部结构与时钟系统28二、程序地址的产生▲通常程序是顺序执行的,即在连续的程二、程序地址的产生
第2章CPU内部结构与时钟系统29二、程序地址的产生第2章CPU内部结构与时钟系统29▲
程序计数器PC:22bit,取指令时,对内部和外部程序存储器寻址。▲
程序地址寄存器PAR:驱动程序地址总线,提供程序的读、写地址。▲堆栈STACK:16位宽8级深,可保存8个返回地址,也可将用作暂存存储器。▲微堆栈MSTACK:16位、1级深,保存一个返回地址。▲
重复计数器RPTC:16位,与重复指令(RPT)一起,用来确定RPT后面的一条指令重复执行多次。用到的硬件二、程序地址的产生
第2章CPU内部结构与时钟系统30▲程序计数器PC:22bit,取指令时,对内部和外部程序▲
顺序操作:程序的地址来源于PC程序计数器(程序地址+1)▲
空(哑)周期:程序的地址来源于PAR(程序地址+1)▲
从子程序返回:程序的地址来源于栈顶(TOS)▲
从表传送或块传送返回:程序的地址来源于微堆栈(MSTACK)▲
转移到或调用指令中指定的地址:程序的地址来源于转移或调用指令。即利用程序读总线(PRDB)的方式获取程序地址。▲
转移到或调用累加器低半部分指定的地址:程序地址来源于累加器的低半部分。即利用数据读总线(DRDB)的方式获取程序地址。▲
转移到中断服务程序:程序地址来源于中断矢量单元。即利用程序读总线(PRDB)的方式获取程序地址。程序地址产生的情况二、程序地址的产生
第2章CPU内部结构与时钟系统31▲顺序操作:程序的地址来源于PC程序计数器(程序地址+1)程序计数器PC▲
PC中存放将被执行的下一条指令的地址。▲
有5种方式加载PC,从而适应连续和不连续的程序流程。二、程序地址的产生
第2章CPU内部结构与时钟系统32程序计数器PC▲PC中存放将被执行的下一条指令的地址。√顺序执行:若当前指令是一个字,则将PC+1加载到PC若当前指令是两个字,则将PC+2加载到PC√分支(转移):转移指令后的长立即数直接加载到PC√子程序调用和返回:
调用指令——将PC中下一条指令的地址压入堆栈,然后将调用指令后的长立即数直接加载到PC返回指令——将返回地址从堆栈中弹回PC√软件或硬件中断:将相应的中断矢量地址装入PC,在该矢量地址单元,通常有一条转移指令,又将相应的中断服务程序的地址加载到PC√计算转移:将累加器低16位加载到PC利用BACC或CALA指令可实现计算GOTO操作程序计数器PC二、程序地址的产生
第2章CPU内部结构与时钟系统33√顺序执行:若当前指令是一个字,则将PC+1加载到PC程序▲
16位宽、8级深▲
当调用子程序或发生中断时,程序地址产生逻辑利用该堆栈保存返回地址▲
进入子程序或中断服务程序时,返回地址自动装入该堆栈的栈顶;当子程序或中断服务程序完成时,返回指令将返回地址从栈顶传送到程序计数器。▲
访问堆栈的指令
√
PUSH和POP:针对累加器低16位操作。√
PSHD和POPD:当子程序或中断嵌套超过8级时可利用这两条指令在数据存储区中建立一个堆栈。堆栈二、程序地址的产生
第2章CPU内部结构与时钟系统34▲16位宽、8级深堆二、程序地址的产生第2章CPU内堆栈例子二、程序地址的产生
第2章CPU内部结构与时钟系统35堆二、程序地址的产生第2章CPU内部结构与时钟系统35堆栈例子二、程序地址的产生
第2章CPU内部结构与时钟系统36堆栈例子二、程序地址的产生第2章CPU内部结构与时钟系统▲
一级深、16位宽,操作不可见,即无指令,只有程序地址产生逻辑才能够使用微堆栈。▲
程序地址产生逻辑在执行BLDD、BLPD、MAC、MACD、TBLR和TBLW这些串(块)操作指令时利用微堆栈保存返回地址。微堆栈二、程序地址的产生
第2章CPU内部结构与时钟系统37▲一级深、16位宽,操作不可见,即无指令,只有程序微二、,二、程序地址的产生
流水线技术▲
下面给出了一个四级深流水线操作图。同时执行四条指令,但每一条指令处于不同的阶段单字、单周期指令4级流水线操作第2章CPU内部结构与时钟系统38,二、程序地址的产生流▲下面给出了一个四级深流水线操作二、程序地址的产生
流水线技术对F2812每条指令都要经过8个独立的执行过程,这8个过程形成了指令流水线(instructionpipeline)。在每一个给定的时间内,有8条指令被激活,每一指令处在执行过程中的不同阶段。并不是所有的指令都会同时发生读写操作,但是流水线的保护机制能够按照需要去延迟指令,以确保根据程序控制顺序对同一位置进行读写操作。第2章CPU内部结构与时钟系统39二、程序地址的产生流对F2812每条指令都要经过8▲
转移仅使控制转换到新的地址单元▲
调用还要将返回地址保存到硬件堆栈的栈顶▲
返回指令将堆栈中的返回地址弹到程序计数器(PC)
——每个被调用的子程序或中断服务程序都以返回指令结束。三、转移、调用和返回
无条件指令▲
无条件指令总是执行的。▲
当执行无条件转移B、BACC;无条件调用CALL、CALA指令时,将指定的程序存储器的地址加载到PC并从该地址开始执行程序。▲
当执行无条件返回(RET)指令时,将栈顶的值(返回地址)加载到PC,并从该地址继续执行程序。第2章CPU内部结构与时钟系统40▲转移仅使控制转换到新的地址单元三、转移、调用和返回无条
LEQ
ACC≤0累加器小于或等于0
GT
ACC>0累加器大于0
GER
ACC≥0累加器大于或等于0
C
C=1进位位置1
NC
C=0进位位清0
OV
OV=1检测到累加器溢出
NOV
OV=0检测到累加器不溢出
BIO
BOI为低BIO引脚为低
TC
TC=1测试/控制标志置1
NTC
TC=0测试/控制标志置0操作数符号条件说明
EQ
ACC=0累加器为0
NEQ
ACC≠0累加器不为0
LT
ACC<0累加器小于0第2章CPU内部结构与时钟系统41LEQACC≤0累加器小于或等于0重复指令(RPT):允许一条指令的重复次数为N+1次。N为RPT指令的一个操作数。原理:在执行RPT时,计数值N被装入重复计数器RPTC,然后,被重复的指令每执行一次,RPTC就减1,直至RPTC为0。
RPTC可作为16位计数器,也可为8位计数器。作用:用在NORM(累加器内容归一化)、MCAD(乘、累加和数据移动)
SUBC(条件减)重复指令三、转移、调用和返回
第2章CPU内部结构与时钟系统42重复指令(RPT):允许一条指令的重复次数为N+1次。重复指第二章(2)时钟及系统控制43第二章(2)时钟及系统控制1一、时钟及系统控制二、程序地址产生三、转移、调用和返回四、重复指令第二章(2)时钟及系统控制第2章CPU内部结构与时钟系统44一、时钟及系统控制第二章(2)时钟及系统控制第2章CPU第2章CPU内部结构与时钟系统45第2章CPU内部结构与时钟系统3主要介绍F2812的时钟、锁相环、看门狗和复位控制电路等。各种时钟和复位电路的内部结构:一、时钟及系统控制第2章CPU内部结构与时钟系统46主要介绍F2812的时钟、锁相环、看门狗和复位控制电路等。各第2章CPU内部结构与时钟系统47第2章CPU内部结构与时钟系统5HISPCPHISPCP一、时钟及系统控制HISPCP高速外设时钟设置寄存器PLLCRPLL控制寄存器LOSPCP慢速外设时钟设置寄存器SCSR系统控制和状态寄存器PCLKCR外设时钟控制寄存器WDCNTR看门狗计数寄存器LPMCR0低功耗模式控制寄存器0WDKEY看门狗复位key寄存器LPMCRl低功耗模式控制寄存器1WDCR看门狗控制寄存器第2章CPU内部结构与时钟系统48HISPCPHISPCP一、时钟及系统控制HISPCP▲
外设时钟控制寄存器PCLKCR——数据存储空间0x0000701C
时钟寄存器▲
高低速外设时钟寄存器HISPCP/LOSPCP——0x0000701A/B▲
系统控制和状态寄存器SCSR——数据存储空间
0X00007022保留D15D14D13D12D11D10D9D8ECANENCLKMCBSPENCLKSCIBENCLKSPIENCLK
R-0
R/W-0
R-0
R/W-0
R/W-0
Reserved
D15D3D2D1D0WDINTSWDENINTWDOVERRIDE
R-0R-1R/W-0R/W1C-1一、时钟及系统控制SCIAENCLK保留保留保留ADCENCLK保留EVAENCLKEVBENENCLKD7D4D3D2D1D0R-0R/W-0R-0
R/W-0
R/W-0
R/W-0R-0
R/W-0Reserved
D15D3D2D0HSPCK/LSPCK
R-0R/W-010第2章CPU内部结构与时钟系统49▲外设时钟控制寄存器PCLKCR——数据存储空时钟模块提供两种操作模式:▲
内部振荡器:如果使用内部振荡器,则必须在X1/XCLKIN和X2两个引脚之间连接一个石英晶体。▲
外部时钟源:如果采用外部时钟,可以将输入的时钟信号直接接到X1/XCLKIN引脚上,而X2悬空。在这种情况下,不使用内部振荡器。一、时钟及系统控制晶体振荡器及锁相环当XPLLDIS为低电平,系统直接采用时钟或晶振直接作为系统时钟;当XPLLDIS为高电平,外部时钟经过PLL倍频后,为提供时钟。
第2章CPU内部结构与时钟系统50时钟模块提供两种操作模式:一、时钟及系统控制晶体振荡器及锁相锁相环控制寄存器PLLCR——用于选择锁相环的工作模式和倍频系数定时器一、时钟及系统控制Reserved
D15D4D3D0DIV
R-0R/W-010▲
TIM——16位的计数寄存器,重新装载PRD的值。▲
PRD——16位周期寄存器。▲TCR——16位的定时器控制寄存器。▲
PSC——16位的预定标寄存器,重新装载TDDR的值。▲
TDDR——
16位的分频寄存器。有3个32位CPU定时器(TIMER0/1/2):√定时器0用户可以在应用程序中使用。√定时器1和定时器2预留给实时操作系统使用(例如DSPBIOS)。第2章CPU内部结构与时钟系统51锁相环控制寄存器PLLCR——用于选择锁相环的工作模式和倍频
F281×器件上有3个32位CPU定时器(TIMER0/1/2)
TIMER0可以在用户程序中使用,TIMER1/2预留给DSPBIOS或其它RTOS使用(如果不用DSPBIOS,可以供用户使用)。每个定时器有4个寄存器:
1)计数寄存器(TIMH:TIM):32位
2)周期寄存器(PRDH:PRD):32位
3)预定标寄存器(TPR):32位(预定标计数器PSC+分频寄存器TDDR)
4)控制寄存器(TCR):16位
TIF-TimerInterruptFlagTIE-TimerInterruptEnableTRB-TimerReloadBitTSS-TimerStopStatusBit52F281×器件上有3个32位CPU定时器(TIMER0/通用定时器
定时器的工作过程:
1)用32位计数寄存器(TIMH:TIM)装载周期寄存器(PRDH:PRD)中的计时常数;
2)计数寄存器根据SYSCLKOUT时钟递减计数(16+32位);
3)当计数寄存器等于0时,定时器的计数器寄存器重载周期寄存器值,并输出一个中断脉冲(TINT0)。TRBTSS设定采样频率53通用定时器定时器的工作过程:TRBTSS设定采样频率11voidConfigCpuTimer(structCPUTIMER_VARS*Timer,floatFreq,floatPeriod){ unsignedlong temp; Timer->CPUFreqInMHz=Freq;//Initializetimerperiod
Timer->PeriodInUSec=Period; temp=(long)(Freq*Period);//150MHz×100us=15000
Timer->RegsAddr->PRD.all=temp; Timer->RegsAddr->TPR.all=0;//Setpre-scalecountertodivideby1 Timer->RegsAddr->TPRH.all=0;
//Initializetimercontrolregister: Timer->RegsAddr->TCR.bit.TSS=1/0;//1=Stoptimer,0=StartTimer
Timer->RegsAddr->TCR.bit.TRB=1;//1=reloadtimer Timer->RegsAddr->TCR.bit.SOFT=1; Timer->RegsAddr->TCR.bit.FREE=1;//TimerFreeRun Timer->RegsAddr->TCR.bit.TIE=1;//1=EnableTimerInterrupt}配置CPU定时器下面的函数中周期寄存器由给定的DSP时钟频率Freq(MHz)和定时器周期Period(µs)两个参数确定。初始化后定时器处于停止状态。54voidConfigCpuTimer(structCPUC28X定时器定时器功能框图一、时钟及系统控制工作过程:首先用32位计数寄存器(TIMH:TM)装载周期寄存器(PRDH:PRD)内部的值。计数寄存器根据SYSCLKOUT时钟递减计数。当计数寄存器等于0时,定时器中断输出产生一个中断脉冲。
第2章CPU内部结构与时钟系统55C28X定定时器功能框图一、时钟及系统控制工作过程:首先用3▲
工作原理√在每个SYSCLKOUT脉冲后PSC减1,一直减到0。√在下一个SYSCLKOUT周期,TDDR加载新的除数值到PSC,并使TIM减1。√重复前两步操作,即PSC每次减到0后,TIM进行一次减1操作,直到TIM减为0√在下一个SYSCLKOUT周期,将定时器中断(TINT)送到CPU,和TOUT引脚。同时TIM装载来自PRD的新的定时计数器值,并使PSC再次减1。每经过(TDDR+1)个SYSCLKOUT周期,TIM减1。当PRD、TDDR或两者都不为零时,定时器中断频率即TINT的频率(fTINT)为:
fCLKOUT1为SYSCLKOUT的频率。C28X定时器第2章CPU内部结构与时钟系统56▲工作原理C28X定时器第2章CPU内部结构与时钟系统C20X定时器▲
计数器——TIMTIMD15D0R/W-0TIMHD15D0R/W-0▲
周期寄存器——PRDPRDD15D0R/W-0PRDHD15D0R/W-0第2章CPU内部结构与时钟系统57C20X定时器▲计数器——TIMTIMD15C20X定时器▲
控制寄存器——TCR0TIFTIEFREED15D14D13~D12D11D10D9~D6D5D4D3~D0TRB保留SOFT保留R/W-0
R/W-0R-0R/W-0R/W-0R-0R/W-0R/W-0R-0
TCR功能:√控制定时器模式√重新加载定时器√启动和停止定时器TSS保留▲
预定标寄存器——PSC/TDDRPSCD15D8D7D0R-0R/W-0PSCHD15D8D7D0R-0R/W-0TDDRTDDRH第2章CPU内部结构与时钟系统58C20X定时器▲控制寄存器——TCR0TIFTIEFREC20X一、时钟及系统控制看门狗及其应用F2812的看门狗与240x的基本相同,当8位的看门狗计数器计数到最大值时,看门狗模块产生一个输出脉冲(512个振荡器时钟宽度)。如果不希望产生脉冲信号,用户需要屏蔽计数器,或用软件周期向看门狗复位控制寄存器写“0x55+0xAA",该寄存器能够使看门狗计数器清零。
为了实现看门狗的各项功能,内部有3个功能寄存器
第2章CPU内部结构与时钟系统59C20X一、时钟及系统控制看门狗及其应用F2看门狗功能框图第2章CPU内部结构与时钟系统60看门狗功能框图第2章CPU内部结构与时钟系统182、看门狗及其应用
8位的看门狗计数器(WDCNTR),当计数到最大值时看门狗模块产生一个输出脉冲(512个OSCCLK时钟宽度),并可以中断或复位DSP。如果不希望产生脉冲信号,用户可以屏蔽看门狗模块,或者通过软件周期性的向看门狗复位寄存器(WDKEY)写“0x55+0xAA”,使得WDCNTR清零。应用说明:使能看门狗或屏蔽看门狗模块?看门狗时钟倍率?WDCR
希望看门狗中断(从低功耗模式唤醒)还是复位(程序失控)?SCSR
程序运行过程周期性的复位WDCNTR。向WDKEY
写“0x55+0xAA”
如果程序失控,则复位或中断DSP;否则看门狗不影响程序执行。提示:看门狗作为提高系统抗干扰能力的措施之一,是一种补救措施。612、看门狗及其应用8位的看门狗计数器(WDCNTR),当计看门狗模块框图看门狗模块62看门狗模块框图看门狗模块20看门狗控制寄存器WDCR写1到WDDIS,屏蔽看门狗模块;写0使能看门狗模块。
WDCHK(2~0)必须写101,其它值会引起DSP复位。
WDPS(2~0)配置看门狗计数时钟:
WDCLK=OSCCLK/512/(1~64)。看门狗中断状态标志位WDFLAG:读:1--看门狗复位(WDRST);0--器件复位写:1--将WDFLAG清零;0--WDFLAG状态不变63看门狗控制寄存器WDCR写1到WDDIS,屏蔽看门狗模块使能/屏蔽看门狗模块//Thisfunctiondisablesthewatchdogtimer.voidDisableDog(void){EALLOW;SysCtrlRegs.WDCR=0x0068;//WDDIS=1,WDCHK=101,EDIS;//WDPS=000(WDCLK=OSCCLK/512)}//Thisfunctionenablesthewatchdogtimer.voidEnableDog(void){EALLOW;SysCtrlRegs.WDCR=0x0028;//WDDIS=0,WDCHK=101,EDIS;//WDPS=000(WDCLK=OSCCLK/512)}64使能/屏蔽看门狗模块//Thisfunctiondis系统控制和状态寄存器SCSR
WDENINT:
1--看门狗复位信号(WDRST)被屏蔽,看门狗中断信号使能(WDINT)
0--看门狗复位信号(WDRST)被使能,看门狗中断信号屏蔽(WDINT)
WDINTS:看门狗中断状态位,反映WDINT的状态。
WDOVERRIDE:
1--允许改变WDCR中的看门狗屏蔽位WDDIS;0--不能改变WDDIS
清零后只有系统复位才允许改变该位的状态,用户可读取该位状态。65系统控制和状态寄存器SCSRWDENINT:WDINTS看门狗复位寄存器WDKEY依次写0x55+0xAA到WDKEY将使WDCNTR清零;写其它任何值都会使看门狗复位;读该寄存器将返回WDCR寄存器的值。//Thisfunctionresetsthewatchdogtimer.voidKickDog(void){EALLOW;SysCtrlRegs.WDKEY=0x0055;SysCtrlRegs.WDKEY=0x00AA;EDIS;}如果系统使能看门狗模块,需要在用户程序中定时执行KickDog函数,且定时器周期要小于看门狗计数器溢出周期。66看门狗复位寄存器WDKEY依次写0x55+0xAA到WDK看门狗计数寄存器WDCNTR
WDCNTR包含看门狗计数器的当前计数值(0-0xFF);如果计数器溢出,看门狗产生中断或复位DSP;如果向WDKEY写有效的组合(0x55+0xAA
),将使计数器清零。看门狗定时器的周期最大值:OSCCLK/512/(1-64)/256。67看门狗计数寄存器WDCNTRWDCNTR包含看门狗计数器的初始化系统控制//-ThisfunctioninitializestheSystemControlregisterstoaknownstate.程序功能:1、屏蔽看门狗模块2、配置PLLCR寄存器,设定SYSCLKOUT的频率3、配置高速/低速外设时钟的预定标因子4、使能相应外设时钟
voidInitSysCtrl(void) {
//Disablethewatchdog
DisableDog();
//InitializethePLLCRto0xA InitPll(0xA);
//Initializetheperipheralclocks InitPeripheralClocks(); }实验时,注意使能所使用的外设模块时钟,否则无法读写相应的外设寄存器。PLLCR通常设为10,即CPU的时钟频率为30MHz×5。68初始化系统控制//-Thisfunctioniniti一、时钟及系统控制看门狗及其应用▲
计数寄存器——WDCNTRReservedD15D8D7D0R-0R/W-0WDCNTR▲
复位寄存器——WDKEYReservedD15D8D7D0R-0R/W-0WDKEY▲
控制寄存器——WDCRReservedD15D8R-0R/W-0WDFLAGD7D6D5D3D2D0R/W-0R/W-0WDPSWDDISWDCHKR-0第2章CPU内部结构与时钟系统69一、时钟及系统控制看门狗及其应用▲计数寄存器——WDCN二、程序地址的产生
▲
通常程序是顺序执行的,即在连续的程序存储器地址上取出指令并执行。但有时程序需要转移到不连续的地址,然后再连续执行新地址处的指令。为此提供了转移、调用、重复(循环)和中断指令。▲
在执行当前指令的同时,程序流要求处理器生成下一个指令的程序地址(顺序或非顺序的)。程序控制:控制一个或多个指令块的执行次序。第2章CPU内部结构与时钟系统70二、程序地址的产生▲通常程序是顺序执行的,即在连续的程二、程序地址的产生
第2章CPU内部结构与时钟系统71二、程序地址的产生第2章CPU内部结构与时钟系统29▲
程序计数器PC:22bit,取指令时,对内部和外部程序存储器寻址。▲
程序地址寄存器PAR:驱动程序地址总线,提供程序的读、写地址。▲堆栈STACK:16位宽8级深,可保存8个返回地址,也可将用作暂存存储器。▲微堆栈MSTACK:16位、1级深,保存一个返回地址。▲
重复计数器RPTC:16位,与重复指令(RPT)一起,用来确定RPT后面的一条指令重复执行多次。用到的硬件二、程序地址的产生
第2章CPU内部结构与时钟系统72▲程序计数器PC:22bit,取指令时,对内部和外部程序▲
顺序操作:程序的地址来源于PC程序计数器(程序地址+1)▲
空(哑)周期:程序的地址来源于PAR(程序地址+1)▲
从子程序返回:程序的地址来源于栈顶(TOS)▲
从表传送或块传送返回:程序的地址来源于微堆栈(MSTACK)▲
转移到或调用指令中指定的地址:程序的地址来源于转移或调用指令。即利用程序读总线(PRDB)的方式获取程序地址。▲
转移到或调用累加器低半部分指定的地址:程序地址来源于累加器的低半部分。即利用数据读总线(DRDB)的方式获取程序地址。▲
转移到中断服务程序:程序地址来源于中断矢量单元。即利用程序读总线(PRDB)的方式获取程序地址。程序地址产生的情况二、程序地址的产生
第2章CPU内部结构与时钟系统73▲顺序操作:程序的地址来源于PC程序计数器(程序地址+1)程序计数器PC▲
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年湘师大新版选择性必修1历史上册月考试卷含答案
- 2025年苏人新版九年级地理上册阶段测试试卷含答案
- 2025年湘教新版九年级地理下册月考试卷
- 2025年沪科版选修1历史上册阶段测试试卷含答案
- 2025年沪教新版九年级历史上册阶段测试试卷含答案
- 2025年北师大版九年级历史下册月考试卷
- 2025年西师新版选择性必修1物理下册阶段测试试卷
- 2025年岳麓版九年级地理上册阶段测试试卷
- 2025年度耐火材料行业标准化建设合同4篇
- 二零二五版铝型材节能减排技术合作合同3篇
- 2024年安全教育培训试题附完整答案(夺冠系列)
- 神农架研学课程设计
- 文化资本与民族认同建构-洞察分析
- 2025新译林版英语七年级下单词默写表
- 《锡膏培训教材》课件
- 断绝父子关系协议书
- 福建省公路水运工程试验检测费用参考指标
- 2024年中国工业涂料行业发展现状、市场前景、投资方向分析报告(智研咨询发布)
- 信息资源管理(马费成-第三版)复习重点
- 工程勘察资质分级标准和工程设计资质分级标准
- 2023年四级计算机程序设计员核心考点题库300题(含答案)
评论
0/150
提交评论