CPU内部结构与时钟系统.ppt
DSP原理与应用技术,第二章 CPU内部结构与时钟系统,学习要点,1.CPU的组成结构和总线类型2.CPU寄存器及其作用3.CPU时钟类型及使用方法4.看门狗模块的作用及使用方法5.程序流的种类,2.1中央处理单元CPU 概述,在TMS320C2000系列中,CPU内核为:C20 x/C24xC240 xC27x/C28x TMS320C28x系列芯片有3个主要组成部分:中央处理单元CPU存储器片内外设TMS320C28x系列芯片的功能框图,C281x Block Diagram,32x32 bitMultiplier,SectoredFlash128K16b,A(18-0),D(15-0),Program Bus,Data Bus,RAM18K16b,BootROM 4K16b,22,32-bitAuxiliaryRegisters,332 bit Timers,RealtimeJTAG,CPU,Register Bus,R-M-WAtomicALU,PIE Interrupt Manager,32,32,32,EventManager A,EventManager B,12-bit ADC,Watchdog,McBSP,CAN2.0B,SCI-A,SCI-B,SPI,GPIO,片内外设,L0,L1:4K16bH0:8K16bMO,M1:1K16b,3个32位定时器T0,T1,T2,外部中断扩展模块,支持96个中断,只使用45个,2个事件管理器其中的PWM单元,用于电机控制,16通道,分辨率为12位的模数转换模块,作用是防止程序跑飞或进入死循环,,多通道缓冲串行接口,增强型局域网络,串行通信接口,串行外围接口,通用并行接口,支持片上调试功能,TMS320C28x的CPU是一种低功耗的32位定点数字信号处理器,集中了数字信号处理器和微控制器的诸多优秀特性。采用改进型哈佛结构和循环寻址方式,精简指令集RISC(Reduction Instruction Set Computer)、支持字节的组合与拆分、位操作等。改进型哈佛结构可以并行地执行指令和读取数据。,2.1中央处理单元CPU 概述,2.1.1 兼容性TMS320C2000系列CPU的硬件结构有一定差别,指令集也不相同,但是,在C28x芯片中可以通过选择兼容特性模式,使C28xCPU与C27xCPU及C2xLP CPU具有最佳兼容性。C28x芯片具有3种操作模式:C27x目标-兼容模式C28x模式C2xLP源-兼容模式,2.1中央处理单元CPU 概述,C28x模式:在该模式中,用户可以使用C28x的所有有效特性、寻址方式和指令系统,因此,一般应使C28x芯片工作于该种模式。C27x目标兼容模式:在复位时,C28x的CPU处于C27x目标-兼容模式。在该模式下,目标码与C27xCPU完全兼容,且它的循环计数也与C27xCPU兼容。C2xLP源兼容模式:该模式允许用户运行C2xLP的源代码,这些源代码是用C28x代码生成工具编译生成的。,2.1中央处理单元CPU 概述,可通过状寄存器STl(P38)的位OBJMODE(D9)和位AMODE(D8)组合,选定模式。,2.1中央处理单元CPU 概述,2.1.2 CPU组成及特性1.CPU的组成,CPU,仿真逻辑,存储器接口信号,时钟和控制信号,复位和中断信号,仿真信号,产生数据和程序存储地址:编码和运行指令;执行算术、逻辑和移位操作;控制寄存器阵列内的数据转移、数据存储和程序存储等。,监视和控制DSP芯片内不同部件的工作,并且测试设备的操作情况。,2.1中央处理单元CPU 概述,2.CPU的主要特征(1)保护流水线(Pretected pipeline):CPU具有八级流水线,可以避免从同一地址进行读写而造成的秩序混乱。(2)独立寄存器空间(Independent register space):在CPU中含有一些被映像至数据空间的寄存器。这些寄存器可以作为系统控制寄存器、数学寄存器和数据指针。系统控制寄存器可由特殊的指令进行操作,而其他寄存器则通过特殊指令或寄存器寻址模式来操作。,2.1中央处理单元CPU 概述,(3)算术逻辑单元ALU(Arithmetic Logic Unit):32位的ALU完成二进制补码算术和布尔逻辑操作。(4)地址寄存器算术单元ARAU(Address Register Arithmetic Uint):ARAU产生数据存储地址以及与ALU并行操作的增量和减量指针。(5)循环移位器(Barrel shifter):执行最多16位的数据左移位和右移位操作。(6)乘法器(Multiplier):执行32位32位的二进制补码乘法运算,获得64位的乘积。乘法可以在有符号数和无符号数之间进行。,2.1中央处理单元CPU 概述,2.1.3 CPU信号CPU有4种主要信号(1)存储器接口信号(Memory-interface signals):这些信号在CPU、存储器和外围设备之间进行数据传送;进行程序存储器的访问和数据存储器的存取;并能根据不同的字段长度区分不同的存取操作(16位或32位)。(2)时钟和控制信号(Clock and control signaks):这些信号为CPU和仿真逻辑提供时钟,它们可以用来监视和控制CPU。,2.1中央处理单元CPU 概述,(3)复位和中断信号(Reset and interrupt signals):这些信号用来产生硬件复位和中断,并用来监视中断的状态。(4)仿真信号(Emulation signals):这些信号用来仿真和调试。,2.1中央处理单元CPU 概述,2.2 CPU的结构及总线,2.2.1 CPU结构CPU的主要单元有:(1)程序和数据控制逻辑:用来存储从程序存储器中取出的指令队列(2)实时仿真逻辑:实现可视化操作(3)地址寄存器算术单元ARAU:为从数据存储器中取出的值分配地址。对于数据读操作,它把地址放在数据读地址总线DRAB上对于数据写操作,它把地址装入数据写地址总线DWAB上ARAU也可以改变SP和辅助寄存器XAR7XAR0的值,(4)算术逻辑单元ALU:32位的ALU可以完成二进制补码运算和布尔运算。运算之前,ALU从寄存器、数据存储器或程序控制逻辑中接收数据;运算之后,ALU将数据存入寄存器和数据存储器(5)预取队列和指令译码:(6)程序和数据地址发生器(7)定点乘法器:完成32位32位的二进制补码乘法运算,获得64位的乘积。(8)中断处理,2.2 CPU的结构及总线,2.2.2 地址和数据总线存储器接口有3组地址总线:1PAB(Program Address Bus)程序地址总线:PAB用来传送来自程序空间的读/写地址。PAB是一个22位的总线。2DRAB(Data-Read Address Bus)数据读地址总线:32位的DRAB用来传送来自数据空间的读地址。,2.2 CPU的结构及总线,3DWAB(Data-Write Address Bus)数据写地址总线:32位的DWAB用来传送来自数据空间的写地址。存储器接口还有3组数据总线:1PRDB(Program-Read DataBus)程序读数据总线:PRDB在读取程序空间时用来传送指令或数据。PRDB是一个32位的总线。,2.2 CPU的结构及总线,2DRDB(Data-ReadDataBus)数据读数据总线:DRDB在读取数据空间时用来传送数据。DRDB是一个32位的总线。3DWDB(DataProgram-WriteDataBus)数据程序写数据总线:32位的DWDB在对数据空间和程序空间写数据时用来传送数据。,2.2 CPU的结构及总线,C28x Internal Bus Structure,数据/写地址总线 DWAB-Data-write Address Bus(32位),程序地址总线PAB-Program Address Bus(22位),Execution,R-M-WAtomicALU,Real-TimeEmulation&TestEngine,程序读数据总线 PRDB-Program-read Data Bus(32位),JTAG,Program,Decoder,PC,XAR0toXAR7,SP,ARAU,MPY32x32,XT,P,ACC,ALU,Registers,Debug,Register Bus/Result Bus,数据/程序写数据总线 DWDB-Data/Program-write Data Bus(32位),数据读地址总线 DRAB-Data-read Address Bus(32位),数据读数据总线 DRDB-Data-read Data Bus(32位),Memory,Data(4G*16),Program(4M*16),StandardPeripheralsExternalInterfaces,用于访问数据空间和程序空间的总线概况,不能同时操作,不能同时操作,2.2 CPU的结构及总线,注意:程序空间的读和写不能同时发生,因为它们都要使用程序地址总线PAB。程序空间的写和数据空间的写也不能同时发生,因为两者都要使用数据程序写数据总线DWDB。而运用不同总线的传输是可以同时发生的。如:CPU可以在程序空间完成读操作(使用PAB和PRDB),在数据空间完成读操作(使用DRAB和DRDB),同时在数据空间进行写操作(使用DWAB和DWDB)。,2.2 CPU的结构及总线,2.3 CPU寄存器,2.3 CPU寄存器,2.3 CPU寄存器,2.3 CPU寄存器,2.3 CPU寄存器,2.3 CPU寄存器,2.3 CPU寄存器,2.3.1 累加器(ACC、AH、AL),累加器(ACC)是CPU的主要工作寄存器。除了那些对存储器和寄存器的直接操作外,所有的ALU操作结果最终都要送入ACC。ACC支持单周期数据传送、加法、减法和来自数据存储器的宽度为32位的比较运算,它也可以接受32位乘法操作的运算结果。对ACC可以单独进行16位8位的访问。,2.3.2 被乘数寄存器XT,被乘数寄存器XT主要用于在32位乘法操作之前,存放一个32位有符号整数值。XT寄存器的低16位部分是TL寄存器。该寄存器能装载一个16位有符号数,能自动对该数进行符号扩展,然后将其送人32位XT寄存器。XT寄存器的高16位部分是T寄存器。该寄存器主要用来存储16位乘法操作之前的16位整数值。,T寄存器也可以为一些移位操作设定移位值,在这种情况下,根据指令,只可以使用T寄存器的一部分。ASRAX,T;完成一个基于T最低4位的算术右移,(D3D0)十进制数 015ASRLACC,T;完成一个基于T最低5位的算术右移,(D4D0)十进制数 031,2.3.2 被乘数寄存器XT,2.3.3 结果寄存器(P、PH、PL),结果寄存器P主要用来存放乘法运算的结果。可以直接装入一个16位常数,或者从一个16位32位的数据存储器、16位32位的可寻址CPU寄存器以及32位累加器中读取数据。P寄存器可以作为一个32位寄存器或两个独立的16位寄存器:PH(高16位)和PL(低16位)来使用。,当通过一些指令存取P、PH、PL时,所有的32位数都要复制到ALU移位器中,执行左移、右移。指令的移位操作由状态寄存器ST0中的乘积移位模式为PM(Product shift mode)D9D7位来决定。,2.3.3 结果寄存器(P、PH、PL),2.3.4 数据页指针(DP),DP是16位寄存器,与6位偏移量构成数据页地址在直接寻址模式中,对数据存储器的寻址要在64个字的数据页中进行,即一个页面为26=64个字数据存储器共有216=64K=65536个数据页,用0000HFFFFH(065535)进行标号组成26216=222=4M字的数据存储器在DP直接寻址模式下,16位的数据页指针(DP)保存了目前的数据页号。可以通过给DP赋新值去改变数据页号。,2.3.5 堆栈指针 SP,堆栈指针SP为16位,可以对数据空间的低64K(216)进行寻址。当使用SP时,将32位地址的高16位置为0(SP高16位不可操作)。复位后SP指向地址0000 0400H。堆栈操作说明如下:1.堆栈从低地址向高地址增长。2.SP总是指向堆栈中的下一个空域。3.复位时,SP被初始化,它指向地址00000400H,4.将32位数值存入堆栈时,先存入低16位,然后将高16位存入下一个高地址中(低位在低地址,高位在高地址)。5当读写32位的数值时,C28x CPU期望存储器或外设接口逻辑把读/写排成偶数地址。例如,如果SP包含一个奇数地址0000 0083H,那么,进行一个32位的读操作时,将从地址0000 0082H和0000 0083H中读取数值。,2.3.5 堆栈指针 SP,6.如果增加SP的值,使它超过FFFFH,或者减少SP的值,使它低于0000H,则表明SP已经溢出。如果增加SP的值使它超过了FFFFH,它就会从0000H开始计数。例如,如果SP=FFFEH而一个指令又向SP加3,则结果就是SP=00001H。当减少SP的值使它到达0000H,它就会重新从FFFFH计数。例如,如果SP=0002H而一个指令又从SP减4,则结果就是FFFEH。7.当数值存入堆栈时,SP并不要求排成奇数或偶数地址。排列由存储器或外设接口逻辑完成。,2.3.5 堆栈指针 SP,2.3.6 辅助寄存器XAR0XAR7、AR0AR7,CPU提供8个32位的辅助寄存器:XAR0、XARI、XAR2、XAR3、XAR4、XAR5、XAR6、XAR7。它们可以作为地址指针指向存储器,或者作为通用目的寄存器使用。许多指令可以访问XAR0-XAR7的低16位,其中,辅助寄存器的低16位为AR0-AR7,它们用作循环控制和16位比较的通用目的寄存器。,当访问AR0-AR7时,寄存器的高16位(AR0H-AR7H)可能改变或不改变,这主要取决于所应用的指令。AR0H-AR7H只能作为XAR0-XAR7的一部分来读取,不能单独进行访问。,2.3.6 辅助寄存器XAR0XAR7、AR0AR7,2.3.7 程序指针PC,当流水线满的时候,22位的程序指针总是指向当前操作的指令,该指令刚刚到达流水线解码的第2阶段。一旦指令到达了流水线的第2阶段,它就不会再被中断从流水线中清除掉,而是在中断执行之前就被执行了。,2.3.8 返回程序寄存器RPC,RPC存放LCR(长调用指令)指令的返回地址当通过LCR(长调用指令)指令执行一个调用操作时,返回地址存储在RPC寄存器中,RPC以前的值存在堆栈中(在两个16位的操作中)。当通过LRETR指令执行一个返回操作时,返回地址从RPC寄存器中读出,堆栈中的值被写回RPC寄存器(在两个16位的操作中)。其他的调用指令并不使用RPC寄存器。,2.3.9 中断控制寄存器 IFG、IER、DBGIER,C28x有3个寄存器用于控制中断:中断标志寄存器(IFR)、中断使能寄存器(IER)和调试中断使能寄存器(DBGIER)。IFR包含的标志位用于可屏蔽中断(可以用软件进行屏蔽)。当通过硬件或软件设定了其中某位时,则相应的中断就被使能。可以用IER中的相应位屏蔽和使能中断。当DSP工作在实时仿真模式并且CPU被挂起时,DBGIER表明可以使用时间临近中断(如果被使能)。,enable使能,开中断disable禁止,关中断,enable使能,开中断disable禁止,关中断,Real-time operating system interrupte,Data log interrupte,pending挂起,表明中断没有被执行no pending,表明中断正在被执行,pending挂起,表明中断没有被执行no pending,表明中断正在被执行,enable使能disable禁止,enable使能disable禁止,2.3.10 状态寄存器ST0,C28x有两个状态寄存器ST0和STl,其中包含着不同的标志位和控制位。ST0、ST1可以和数据寄存器交换数据,也可以保存机器的状态以及为子程序恢复状态。状态位根据流水线中位值的改变而改变,ST0的位在流水线的执行阶段改变,STl的位在流水线的译码阶段改变。,符号扩展模式位,溢出模式位,测试/控制标志位,进位标志位,零标志位,符号标志位,溢出标志位,乘积结果移位模式位,溢出计数器,0 正数1 负数,0 不溢出1 溢出,0 无进位/借位1 有进位/借位,0 结果不是零1 结果为零,1.OVC/OVCU-Overflow counter,溢出计数器。有符号数和无符号数对它们的影响不同2.PM-Product shift mode bits,乘积结果移位模式位确定从乘积结果寄存器P的输出操作的移位模式3.V-Overflow flag,溢出标志位寄存器溢出时,V=1并锁存;无溢出,V不变4.N-Negative flag,负数标志位操作结果为负数,则N=1;结果为正数,N=05.Z-Zero flag,零标志位操作结果为0,则Z=1;结果不为0,Z=0,2.3.10 状态寄存器ST0,6.C-Carry flag,进位标志位加法产生进位,C=1,不产生进位,C=0减法产生借位,C=0,不产生借位,C=17.TC-Test/control flag,测试/控制标志位若被测试位为1,TC=1;被测试位为0,TC=08.OVM-Overflow mode bit,溢出模式位9.SXM-Sign-extension mode bit,符号扩展模式位SXM=1,禁止符号扩展,SXM=0,可以进行符号位扩展,2.3.10 状态寄存器ST0,2.3.11 状态寄存器ST1,寻址模式位,目标兼容模式位,映射模式位,M0/M1映射模式位,XF状态位,辅助寄存器指针,中断使能屏蔽位,调试使能屏蔽位,PAGE0寻址模式设置位,向量映射位,堆栈指针对齐位,循环指针对齐位,仿真处理使能位,空闲状态位,2.3.11 状态寄存器ST1,1.ARP(D15D13)-Auxiliary register pointer,辅助寄存器指针表明所使用的辅助寄存器,2.XF-XF status bit,XF状态位该位反映当前XFS输出信号的状态。3.M0M1MAP-M0 and M1mapping mode bitM0和M1映射模式位在C28x模式下,M0M1MAP=1在C27x兼容模式下,M0M1MAP=04.OBJMODE-Object compatibility mode bit目标兼容模式位OBJMODE=0,C27x兼容模式OBJMODE=1,C28x模式,2.3.11 状态寄存器ST1,5.AMODE-Address mode bit,寻址模式位6.IDELSTAT-IDLE status bit,空闲状态位7.EALLOW-Emulation access enable bit,仿真处理使能位8.LOOP-Loop instruction status bit,循环指令状态位9.SPA-Stack pointer alignment bit,堆栈指针对齐位10.VMAP-Vector map bit,向量映射位11.PAGE0-PAGE0 address mode configuration bitPAGE0寻址模式设置位,2.3.11 状态寄存器ST1,12.DBGM-Debug enable mask bit,调试使能屏蔽位13.INTM-Interrupt globle mask bit,中断全局屏蔽位,2.3.11 状态寄存器ST1,2.4 时钟及系统控制,本节主要介绍F2812的时钟、锁相环、看门狗和复位控制电路等。F2812各种时钟电路如图所示。,140,76,77,160,低速时钟,高速时钟,高速时钟,2.4.1 时钟寄存器组,外设时钟控制寄存器 PCLKCRPeripheral clock control register控制2812芯片上各种时钟的工作状态,使能或禁止相关外设时钟。,外设时钟控制寄存器 PCLKCR,2.系统控制和状态寄存器 SCSR System Control&Status Register反映看门狗状态和使能/禁止看门狗。,D0=1 用户可以修改WDCR寄存器的状态,D1=1 看门狗复位输出信号无效,看门狗中断输出信号有效,看门狗中断状态位,3.高速外设时钟寄存器 HISPCP High-speed peripheral clock prescaler register用来设置高速的外设时钟(EV-A,EV-B,ADC),4.低速外设时钟寄存器 LOSPCP Low-speed peripheral clock prescaler register用来设低速的外设时钟(SCI,SPI,McBSP),5.锁相环控制寄存器PLLCR,PLL被旁路,2.4.2 晶振振荡器及锁相环,F2812处理器上基于PLL的时钟模块,为各种外设和模块提供时钟信号。PLL中有4位倍频设置位,可以提供各种速度的时钟信号。时钟模块提供两种操作模式:内部振荡器:如果使用内部振荡器,则必须在X1/XCLKIN(77号引脚)和X2(76号引脚)两个脚之间连接一个石英晶体(30MHz)。外部时钟源:如果采用外部时钟,可以将输入的时钟信号直接接到X1/XCLKIN引脚上,而X2悬空。在这种情况下,不使用内部振荡器。,WatchdogModule,/2,4位PLL选择,OSCCLK,C28xCore,CLKIN,SYSCLKOUT,HSPCLK,LSPCLK,片内晶体振荡器XTAL OSC,X1/CLKIN,X2,预存器,PLL旁路,PLL,外部时钟:当引脚XPLLDIS=0,PLL锁相环被禁止,系统直接采用外部输入时钟,WatchdogModule,/2,4位PLL选择,OSCCLK,C28xCore,CLKIN,MUX,1,0,SYSCLKOUT,HSPCLK,LSPCLK,片内晶体振荡器XTAL OSC,X1/CLKIN,X2,预存器,PLL旁路,PLL,内部振荡器:当引脚XPLLDIS=1,外部时钟经过PLL倍频后,为系统提供时钟。(1)PLL旁路,WatchdogModule,/2,4位PLL选择,OSCCLK,C28xCore,CLKIN,MUX,1,0,SYSCLKOUT,HSPCLK,LSPCLK,片内晶体振荡器XTAL OSC,X1/CLKIN,X2,Crystal30Hz,预存器,PLL旁路,PLL,内部振荡器:当XPLLDIS=1,外部时钟经过PLL倍频后,为系统提供时钟。(2)PLL使能,WatchdogModule,/2,4位PLL选择,OSCCLK,C28xCore,CLKIN,SYSCLKOUT,HSPCLK,LSPCLK,片内晶体振荡器XTAL OSC,X1/CLKIN,X2,预存器,PLL旁路,PLL,高速外设,低速外设,2.4.2 晶振振荡器及锁相环,例2-4-1中PLL的设置,EALLOW;SysCtrlRegs.HISPCP.all=0 x0001;/设定高速外设时钟预分频值 SysCtrlRegs.LOSPCP.all=0 x0002;/设定低速外设时钟预分频值/对选定的外设进行外设时钟使能设置 SysCtrlRegs.PCLKCR.bit.EVAENCLK=1;SysCtrlRegs.PCLKCR.bit.EVBENCLK=1;SysCtrlRegs.PCLKCR.bit.SCIAENCLK=1;SysCtrlRegs.PCLKCR.bit.SCIBENCLK=1;SysCtrlRegs.PCLKCR.bit.MCBSPENCLK=1;SysCtrlRegs.PCLKCR.bit.SPIENCLK=1;SysCtrlRegs.PCLKCR.bit.ECANENCLK=1;SysCtrlRegs.PCLKCR.bit.ADCENCLK=1;EDIS;,高速外设时钟设置寄存器设SYSCKLOUT=150MHz 则,高速时钟=SYSCKLOUT/2=75MHz,低速外设时钟设置寄存器设SYSCKLOUT=150MHz 则,高速时钟=SYSCKLOUT/4=37.5MHz,使能EV-A外设高速时钟,使能EV-B外设高速时钟,使能SCI-A外设低速时钟,使能SCI-B外设低速时钟,使能McBSP外设低速时钟,使能SPI外设低速时钟,使能eCAN外设低速时钟,使能ADC外设高速时钟,2.4.4 看门狗定时器及其应用,F2812看门狗定时器,当8位的看门狗计数器计数到最大值时,看门狗模块产生一个输出脉冲(512个振荡器时钟宽度)。如果不希望产生脉冲信号,用户需要屏蔽计数器,或用软件周期向看门狗复位控制寄存器写“0 x55+0 xAA,该寄存器能够使看门狗计数器清零。,1.看门狗计数寄存器WDCNTR(Watchdog Counter Register),反映看门狗计数器当前计数值在时钟WDCLK的控制下连续加1计数如果计数器到达最大值0 x00FF,则看门狗触发一次复位或中断事件如果向WDKEY(看门狗复位寄存器)写入0 x55+0 xAA,将使计数器清零。,2.看门狗复位寄存器WDKEY(密钥寄存器)(Watchdog Reset Key Register,依次写入0 x55+0 xAA,将使WDCNTR计数器清零。写其他值会立即使看门狗触发一次复位事件。,3.看门狗控制寄存器WDCR,0 使能看门狗1 禁止看门狗,3.看门狗控制寄存器WDCR,必须写101b,写其他任何值都会引起器件内核的复位(如果看门狗已经使能),3.看门狗控制寄存器WDCR,1 表示看门狗触发了一次复位事件0 表示上电复位或外部复位事件用户只有写1才能使该位清0,写0无影响,使能,以下三种事件可以使看门狗产生脉冲信号(1)未及时“喂狗”,使8位看门狗计数器溢出(2)错误的“喂狗”方式,未正确对看门狗复位寄存器写入“0 x55+0 xAA”(3)对看门狗控制寄存器WDCR的WDCHKD位(D5D3)写入“101B”,例2-4-1中看门狗的设置,EALLOW;SysCtrlRegs.WDKEY=0 x0055;SysCtrlRegs.WDKEY=0 x00AA;EDIS;/关闭看门狗子程序,在初始系统时,或者用户不想使用看门狗,可以调用该程序void DisableDog(void)EALLOW;SysCtrlRegs.WDCR=0 x0068;EDIS;,看门狗复位寄存器WDKEY写“密钥”,看门狗控制寄存器WDCR0 x0068=0000 0000 0110 1000B,D6=1 禁止看门狗D5D3=101D2D0=000,WDCLK=OSCCLK/512/1,例2-4-3中看门狗的设置,EALLOW;SysCtrlRegs.WDCR=0 x0028;/使能看门狗EDIS;,D6=0 使能看门狗D5D3=101D2D0=000,WDCLK=OSCCLK/512/1,看门狗控制寄存器WDCR0 x0028=0000 0000 0010 1000B,2.4.3 定时器及其应用,F2812有3个32位CPU定时器(TIMER0/1/2):定时器0用户可以在应用程序中使用。定时器1和定时器2预留给实时操作系统使用(例如 DSPBIOS)。,定时器计数寄存器,定时器周期寄存器,定时器控制寄存器,定时器预定标寄存器,1.定时器计数器 TIMERxTIM/TIMERxTIMH,低16位,高16位,1.CPU定时器计数器寄存器TIMH:TIM。TIM寄存器保存当前定时器计数器的低16位,TIMH寄存器保存当前定时器计数器的高16位。,2.每隔(TDDRH:TDDR+1)个时钟脉冲TIMH:TIM减1,直到减1为0时,被自动重装载(PRDH:PRD)寄存器保存的周期值,并产生定时器 中断信号,2.定时器周期寄存器 TIMRxPRD/TIMRxPRDH,低16位,高16位,1.CPU定时器周期寄存器PRDH:PRD。PRD寄存器保存周期值的低16位,PRDH寄存器保存周期值的高16位。,2.当TIMH:TIM递减到0时,在下次定时周期开始之前,TIMH:TIM寄存器将自动重新装载PRDH:PRD寄存器保存的周期值。,3。定时器控制寄存器TIMERxTCR0,TCR功能:控制定时器模式 重新加载定时器 启动和停止定时器,CPU定时器中断标志位当定时器计数器减到0时,TIF=1,CPU定时器中断使能位当TIE=1时,如果定时器计数器减到0,则定时器将会向CPU申请中断,下一次TIMH;TIM递减操作完成后,定时器停止,hard stop,TIMH;TIM递减到0后,定时器停止,sdft stop,定时器自由运行,定时器重新装载控制器当TRB=1时,TIMH:TIM会自动重装载PRDH:PRD寄存器保存的周期值,并且预定标寄存器PSCH:PSC装载定时器分频寄存器TDDRH:TDDR中的值,CPU定时器停止状态位TSS=0,启动定时器TSS=1,停止定时器,定时器预定标寄存器TIMERxTPR/TIMERxTPRH,CPU定时器预定标计数器PSCH:PSC保存当前定时器的预定标值。当PSCH:PSC大于0时,在每个SYSCLKOUT周期,PSCH:PSC的值减1。当PSCH:PSC减1为0时,在下一个SYSCLKOUT周期,TDDRH:TDDR的值重新装载到PSCH:PSC中,且定时器计数器TIMH:TIM的值减1.复位时,PSCH:PSC为0,定时器预定标寄存器TIMERxTPR/TIMERxTPRH,CPU定时器分频寄存器每隔(TDDRH:TDDR+1)个定时器时钟周期,定时器计数器TIMH:TIM的值减1.复位时TDDRH:TDDR的值为0当PSCH:PSC等于0时,一个定时器时钟周期后,重新将TDDRH:TDDR的值装载到PSCH:PSC中,TIMH:TIM 减1。,时钟脉冲,时钟脉冲,PRDH:PRD,TIMH:TIM,TIMH:TIM减1计数,TIMH:TIM-1=0?,中断信号,TDDRH:TDDR,PSCH:PSC,PSCH:PSC减1计数,PSCH:PSC-1=0?,SYSCLKOUT,N,N,Y,Y,装载,装载,2.4.3 定时器及其应用,工作原理 在每个SYSCLKOUT脉冲后PSC减1,一直减到0。在下一个SYSCLKOUT周期,TDDR加载新的除数值到PSC,并使TIM减1。重复前两步操作,即PSC每次减到0后,TIM进行一次减1操作,直到TIM减为0在下一个SYSCLKOUT周期,将定时器中断(TINT)送到CPU,和TOUT引脚。同时TIM装载来自PRD的新的定时 计数器值,并使PSC再次减1。,2.4.3 定时器及其应用,每经过(TDDR+1)个SYSCLKOUT 周期,TIM减1。当PRD、TDDR或两者都不为零时,定时器中断频率即TINT的频率(fTINT)为:,2.4.3 定时器及其应用,谢 谢!祝学习愉快!,