CPU内部结构与时钟系统_第1页
CPU内部结构与时钟系统_第2页
CPU内部结构与时钟系统_第3页
CPU内部结构与时钟系统_第4页
CPU内部结构与时钟系统_第5页
已阅读5页,还剩96页未读 继续免费阅读

下载本文档

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

文档简介

DSP原理与应用技术第二章CPU内部结构与时钟系统学习要点1.CPU的组成结构和总线类型2.CPU寄存器及其作用3.CPU时钟类型及使用方法4.看门狗模块的作用及使用方法5.程序流的种类2.1中央处理单元CPU概述在TMS320C2000系列中,CPU内核为:C20x/C24x/C240xC27x/C28xTMS320C28x系列芯片有3个主要组成部分:中央处理单元CPU存储器片内外设TMS320C28x系列芯片的功能框图C281xBlockDiagram32x32bitMultiplierSectoredFlash128K×16bA(18-0)D(15-0)ProgramBusDataBusRAM18K×16bBootROM4K×16b2232-bitAuxiliaryRegisters332bitTimersRealtimeJTAGCPURegisterBusR-M-WAtomicALUPIEInterruptManager323232EventManagerAEventManagerB12-bitADCWatchdogMcBSPCAN2.0BSCI-ASCI-BSPIGPIO片内外设L0,L1:4K×16bH0:8K×16bMO,M1:1K×16b3个32位定时器T0,T1,T2外部中断扩展模块,支持96个中断,只使用45个2个事件管理器其中的PWM单元,用于电机控制16通道,分辨率为12位的模数转换模块作用是防止程序跑飞或进入死循环,多通道缓冲串行接口增强型局域网络串行通信接口串行外围接口通用并行接口支持片上调试功能TMS320C28x的CPU是一种低功耗的32位定点数字信号处理器,集中了数字信号处理器和微控制器的诸多优秀特性。采用改进型哈佛结构和循环寻址方式,精简指令集RISC(ReductionInstructionSetComputer)、支持字节的组合与拆分、位操作等。改进型哈佛结构可以并行地执行指令和读取数据。2.1中央处理单元CPU概述2.1.1兼容性TMS320C2000系列CPU的硬件结构有一定差别,指令集也不相同,但是,在C28x芯片中可以通过选择兼容特性模式,使C28xCPU与C27xCPU及C2xLPCPU具有最佳兼容性。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)组合,选定模式。STI位操作模式OBJMODED9位AMODED8位C28x模式10C2xLP源-兼容模式11C27x目标-兼容模式002.1中央处理单元CPU概述2.1.2CPU组成及特性1.CPU的组成CPU仿真逻辑C28xCPU存储器接口信号时钟和控制信号复位和中断信号仿真信号产生数据和程序存储地址:编码和运行指令;执行算术、逻辑和移位操作;控制寄存器阵列内的数据转移、数据存储和程序存储等。监视和控制DSP芯片内不同部件的工作,并且测试设备的操作情况。2.1中央处理单元CPU概述2.CPU的主要特征(1)保护流水线(Pretectedpipeline):CPU具有八级流水线,可以避免从同一地址进行读写而造成的秩序混乱。(2)独立寄存器空间(Independentregisterspace):在CPU中含有一些被映像至数据空间的寄存器。这些寄存器可以作为系统控制寄存器、数学寄存器和数据指针。系统控制寄存器可由特殊的指令进行操作,而其他寄存器则通过特殊指令或寄存器寻址模式来操作。

2.1中央处理单元CPU概述(3)算术逻辑单元ALU(ArithmeticLogicUnit):32位的ALU完成二进制补码算术和布尔逻辑操作。(4)地址寄存器算术单元ARAU(AddressRegisterArithmeticUint):ARAU产生数据存储地址以及与ALU并行操作的增量和减量指针。(5)循环移位器(Barrelshifter):执行最多16位的数据左移位和右移位操作。(6)乘法器(Multiplier):执行32位×32位的二进制补码乘法运算,获得64位的乘积。乘法可以在有符号数和无符号数之间进行。2.1中央处理单元CPU概述2.1.3CPU信号CPU有4种主要信号(1)存储器接口信号(Memory-interfacesignals):这些信号在CPU、存储器和外围设备之间进行数据传送;进行程序存储器的访问和数据存储器的存取;并能根据不同的字段长度区分不同的存取操作(16位或32位)。(2)时钟和控制信号(Clockandcontrolsignaks):这些信号为CPU和仿真逻辑提供时钟,它们可以用来监视和控制CPU。2.1中央处理单元CPU概述(3)复位和中断信号(Resetandinterruptsignals):这些信号用来产生硬件复位和中断,并用来监视中断的状态。(4)仿真信号(Emulationsignals):这些信号用来仿真和调试。2.1中央处理单元CPU概述2.2CPU的结构及总线2.2.1CPU结构CPU的主要单元有:(1)程序和数据控制逻辑:用来存储从程序存储器中取出的指令队列(2)实时仿真逻辑:实现可视化操作(3)地址寄存器算术单元ARAU:为从数据存储器中取出的值分配地址。对于数据读操作,它把地址放在数据读地址总线DRAB上对于数据写操作,它把地址装入数据写地址总线DWAB上ARAU也可以改变SP和辅助寄存器XAR7~XAR0的值(4)算术逻辑单元ALU:32位的ALU可以完成二进制补码运算和布尔运算。运算之前,ALU从寄存器、数据存储器或程序控制逻辑中接收数据;运算之后,ALU将数据存入寄存器和数据存储器(5)预取队列和指令译码:(6)程序和数据地址发生器(7)定点乘法器:完成32位×32位的二进制补码乘法运算,获得64位的乘积。(8)中断处理2.2CPU的结构及总线2.2.2地址和数据总线存储器接口有3组地址总线:1.PAB(ProgramAddressBus)程序地址总线:PAB用来传送来自程序空间的读/写地址。PAB是一个22位的总线。2.DRAB(Data-ReadAddressBus)数据读地址总线:

32位的DRAB用来传送来自数据空间的读地址。2.2CPU的结构及总线3.DWAB(Data-WriteAddressBus)数据写地址总线:

32位的DWAB用来传送来自数据空间的写地址。存储器接口还有3组数据总线:1.PRDB(Program-ReadDataBus)程序读数据总线:PRDB在读取程序空间时用来传送指令或数据。PRDB是一个32位的总线。2.2CPU的结构及总线2.DRDB(Data-ReadDataBus)数据读数据总线:DRDB在读取数据空间时用来传送数据。DRDB是一个32位的总线。3.DWDB(Data/Program-WriteDataBus)数据/程序写数据总线:

32位的DWDB在对数据空间和程序空间写数据时用来传送数据。2.2CPU的结构及总线C28xInternalBusStructure数据/写地址总线DWAB-Data-writeAddressBus(32位)程序地址总线PAB-ProgramAddressBus(22位)ExecutionR-M-WAtomicALUReal-TimeEmulation&TestEngine程序读数据总线PRDB-Program-readDataBus(32位)JTAGProgramDecoderPCXAR0toXAR7SPDP@XARAUMPY32x32XTPACCALURegistersDebugRegisterBus/ResultBus数据/程序写数据总线DWDB-Data/Program-writeDataBus(32位)数据读地址总线DRAB-Data-readAddressBus(32位)数据读数据总线DRDB-Data-readDataBus(32位)MemoryData

(4G*16)Program(4M*16)StandardPeripheralsExternalInterfaces用于访问数据空间和程序空间的总线概况存储类型地址总线数据总线从程序空间读PABPRDB从数据空间读DRABDRDB向程序空间写PABDWDB向数据空间写DWABDWDB不能同时操作不能同时操作2.2CPU的结构及总线注意:程序空间的读和写不能同时发生,因为它们都要使用程序地址总线PAB。程序空间的写和数据空间的写也不能同时发生,因为两者都要使用数据/程序写数据总线DWDB。而运用不同总线的传输是可以同时发生的。如:CPU可以在程序空间完成读操作(使用PAB和PRDB),在数据空间完成读操作(使用DRAB和DRDB),同时在数据空间进行写操作(使用DWAB和DWDB)。2.2CPU的结构及总线2.3CPU寄存器寄存器英文名称名称位数复位后的状态ACCAccumulator累加器32位0x00000000AHHighhalfofACCACC高16位16位0x0000ALLowhalfofACCACC低16位16位0x0000寄存器英文名称名称位数复位后的状态XAR0Auxiliaryregiter0辅助寄存器032位0x00000000XAR1Auxiliaryregiter1辅助寄存器132位0x00000000XAR2Auxiliaryregiter2辅助寄存器232位0x00000000XAR3Auxiliaryregiter3辅助寄存器332位0x00000000XAR4Auxiliaryregiter4辅助寄存器432位0x00000000XAR5Auxiliaryregiter5辅助寄存器532位0x00000000XAR6Auxiliaryregiter6辅助寄存器632位0x00000000XAR7Auxiliaryregiter7辅助寄存器732位0x000000002.3CPU寄存器寄存器英文名称名称位数复位后的状态AR0LowhalfofXAR0XAR0的低16位16位0x0000AR1LowhalfofXAR1XAR1的低16位16位0x0000AR2LowhalfofXAR2XAR2的低16位16位0x0000AR3LowhalfofXAR3XAR3的低16位16位0x0000AR4LowhalfofXAR4XAR4的低16位16位0x0000AR5LowhalfofXAR5XAR5的低16位16位0x0000AR6LowhalfofXAR6XAR6的低16位16位0x0000AR7LowhalfofXAR7XAR7的低16位16位0x00002.3CPU寄存器寄存器英文名称名称位数复位后的状态DPDatepointer数据页指针16位0x0000PCProgramcounter程序计数器22位0x3FFFC0RPCRetrunprogramcounter返回程序计数器22位0x000000SPStackpoint堆栈指针16位0x04002.3CPU寄存器寄存器英文名称名称位数复位后的状态IFRInterruptflagregister中断标志寄存器16位0x0000IERInterruptenableregister中断使能寄存器16位0x0000DBGIERDebuginterruptenableregister调试中断使能寄存器16位0x00002.3CPU寄存器寄存器英文名称名称位数复位后的状态PProductregister结果寄存器32位0x00000000PHHighhalfofPP的高16位16位0x0000PLLowhalfofPP的低16位16位0x0000ST0Statusregister0状态寄存器016位0x0000ST1Statusregister1状态寄存器116位0x0000XTMultiplicandregister被乘数寄存器32位0x00000000THighhalfofXTXT的高16位16位0x0000TLLowhalfofXTXT的低16位16位0x00002.3CPU寄存器D31…

D16D15…

D0XTTTLPPHPLACCAHALXAR0AR0HAR0XAR1AR1HAR1XAR2AR2HAR2XAR3AR3HAR3XAR4AR4HAR4XAR5AR5HAR5XAR6AR6HAR6XAR7AR7HAR7D21……

D0PCRPCD15……

D0ST0ST1IFRIERDEGIERSPDP6/7位2.3CPU寄存器2.3.1累加器(ACC、AH、AL)累加器(ACC)是CPU的主要工作寄存器。除了那些对存储器和寄存器的直接操作外,所有的ALU操作结果最终都要送入ACC。ACC支持单周期数据传送、加法、减法和来自数据存储器的宽度为32位的比较运算,它也可以接受32位乘法操作的运算结果。对ACC可以单独进行16位/8位的访问。D31…

D16D15…

D0AXAHAL2.3.2被乘数寄存器XT被乘数寄存器XT主要用于在32位乘法操作之前,存放一个32位有符号整数值。XT寄存器的低16位部分是TL寄存器。该寄存器能装载一个16位有符号数,能自动对该数进行符号扩展,然后将其送人32位XT寄存器。XT寄存器的高16位部分是T寄存器。该寄存器主要用来存储16位乘法操作之前的16位整数值。D31…

D16D15…

D0XTTTLT寄存器也可以为一些移位操作设定移位值,在这种情况下,根据指令,只可以使用T寄存器的一部分。ASR AX,T;完成一个基于T最低4位的算术右移,(D3~D0)十进制数0~15ASRL ACC,T;完成一个基于T最低5位的算术右移,(D4~D0)十进制数0~312.3.2被乘数寄存器XT2.3.3结果寄存器(P、PH、PL)结果寄存器P主要用来存放乘法运算的结果。可以直接装入一个16位常数,或者从一个16位/32位的数据存储器、16位/32位的可寻址CPU寄存器以及32位累加器中读取数据。P寄存器可以作为一个32位寄存器或两个独立的16位寄存器:PH(高16位)和PL(低16位)来使用。D31…

D16D15…

D0PHPHPL当通过一些指令存取P、PH、PL时,所有的32位数都要复制到ALU移位器中,执行左移、右移。指令的移位操作由状态寄存器ST0中的乘积移位模式为PM(Productshiftmode)D9~D7位来决定。PM值移位模式000B左移1位001B不移位010B右移1位011B右移2位100B右移3位101B右移4位AMODE=1,左移4位110B右移5位111B右移6位2.3.3结果寄存器(P、PH、PL)2.3.4数据页指针(DP)DP是16位寄存器,与6位偏移量构成数据页地址在直接寻址模式中,对数据存储器的寻址要在64个字的数据页中进行,即一个页面为26=64个字数据存储器共有216=64K=65536个数据页,用0000H~FFFFH(0~65535)进行标号组成26×216=222=4M字的数据存储器在DP直接寻址模式下,16位的数据页指针(DP)保存了目前的数据页号。可以通过给DP赋新值去改变数据页号。

数据页偏移量数据存储器地址范围页号00000000000000000000000000000000

:0000000000000000000000000001

:11111100000000H00000001H

:0000003FH第0页00000000000000010000000000000001

:0000000000000001000000000001

:11111100000040H00000041H

:0000007FH第1页:::

:11111111111111111111111111111111

:1111111111111111000000000001

:111111003FFFC0H003FFFC1H

:003FFFFFH第65535页2.3.5堆栈指针SP堆栈指针SP为16位,可以对数据空间的低64K(216)进行寻址。当使用SP时,将32位地址的高16位置为0(SP高16位不可操作)。复位后SP指向地址00000400H。堆栈操作说明如下:1.堆栈从低地址向高地址增长。2.SP总是指向堆栈中的下一个空域。3.复位时,SP被初始化,它指向地址00000400H4.将32位数值存入堆栈时,先存入低16位,然后将高16位存入下一个高地址中(低位在低地址,高位在高地址)。5.当读写32位的数值时,C28xCPU期望存储器或外设接口逻辑把读/写排成偶数地址。例如,如果SP包含一个奇数地址00000083H,那么,进行一个32位的读操作时,将从地址00000082H和00000083H中读取数值。2.3.5堆栈指针SP6.如果增加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堆栈指针SP2.3.6辅助寄存器XAR0~XAR7、AR0~AR7CPU提供8个32位的辅助寄存器:XAR0、XARI、XAR2、XAR3、XAR4、XAR5、XAR6、XAR7。它们可以作为地址指针指向存储器,或者作为通用目的寄存器使用。许多指令可以访问XAR0-XAR7的低16位,其中,辅助寄存器的低16位为AR0-AR7,它们用作循环控制和16位比较的通用目的寄存器。D31…

D16D15…

D0XARnARn当访问AR0-AR7时,寄存器的高16位(AR0H-AR7H)可能改变或不改变,这主要取决于所应用的指令。AR0H-AR7H只能作为XAR0-XAR7的一部分来读取,不能单独进行访问。

2.3.6辅助寄存器XAR0~XAR7、AR0~AR72.3.7程序指针PC

当流水线满的时候,22位的程序指针总是指向当前操作的指令,该指令刚刚到达流水线解码的第2阶段。一旦指令到达了流水线的第2阶段,它就不会再被中断从流水线中清除掉,而是在中断执行之前就被执行了。2.3.8返回程序寄存器RPCRPC存放LCR(长调用指令)指令的返回地址当通过LCR(长调用指令)指令执行一个调用操作时,返回地址存储在RPC寄存器中,RPC以前的值存在堆栈中(在两个16位的操作中)。当通过LRETR指令执行一个返回操作时,返回地址从RPC寄存器中读出,堆栈中的值被写回RPC寄存器(在两个16位的操作中)。其他的调用指令并不使用RPC寄存器。2.3.9中断控制寄存器

IFG、IER、DBGIERC28x有3个寄存器用于控制中断:中断标志寄存器(IFR)、中断使能寄存器(IER)和调试中断使能寄存器(DBGIER)。IFR包含的标志位用于可屏蔽中断(可以用软件进行屏蔽)。当通过硬件或软件设定了其中某位时,则相应的中断就被使能。可以用IER中的相应位屏蔽和使能中断。当DSP工作在实时仿真模式并且CPU被挂起时,DBGIER表明可以使用时间临近中断(如果被使能)。enable使能,开中断disable禁止,关中断enable使能,开中断disable禁止,关中断Real-timeoperatingsysteminterrupteDataloginterruptepending挂起,表明中断没有被执行nopending,表明中断正在被执行pending挂起,表明中断没有被执行nopending,表明中断正在被执行enable使能disable禁止enable使能disable禁止2.3.10状态寄存器ST0C28x有两个状态寄存器ST0和STl,其中包含着不同的标志位和控制位。ST0、ST1可以和数据寄存器交换数据,也可以保存机器的状态以及为子程序恢复状态。状态位根据流水线中位值的改变而改变,ST0的位在流水线的执行阶段改变,STl的位在流水线的译码阶段改变。D15…D10D9…D7D6D5D4D3D2D1D0OVC/OVCUPMVNZCTCOVMSXM符号扩展模式位溢出模式位测试/控制标志位进位标志位零标志位符号标志位溢出标志位乘积结果移位模式位溢出计数器0正数1负数0不溢出1溢出0无进位/借位1有进位/借位0结果不是零1结果为零1.OVC/OVCU-Overflowcounter,溢出计数器。有符号数和无符号数对它们的影响不同2.PM-Productshiftmodebits,乘积结果移位模式位确定从乘积结果寄存器P的输出操作的移位模式3.V-Overflowflag,溢出标志位寄存器溢出时,V=1并锁存;无溢出,V不变4.N-Negativeflag,负数标志位操作结果为负数,则N=1;结果为正数,N=05.Z-Zeroflag,零标志位操作结果为0,则Z=1;结果不为0,Z=02.3.10状态寄存器ST06.C-Carryflag,进位标志位加法产生进位,C=1,不产生进位,C=0减法产生借位,C=0,不产生借位,C=17.TC-Test/controlflag,测试/控制标志位若被测试位为1,TC=1;被测试位为0,TC=08.OVM-Overflowmodebit,溢出模式位9.SXM-Sign-extensionmodebit,符号扩展模式位SXM=1,禁止符号扩展,SXM=0,可以进行符号位扩展2.3.10状态寄存器ST02.3.11状态寄存器ST1寻址模式位目标兼容模式位映射模式位M0/M1映射模式位XF状态位辅助寄存器指针中断使能屏蔽位调试使能屏蔽位PAGE0寻址模式设置位向量映射位堆栈指针对齐位循环指针对齐位仿真处理使能位空闲状态位2.3.11状态寄存器ST11.ARP(D15~D13)-Auxiliaryregisterpointer,辅助寄存器指针表明所使用的辅助寄存器SPAD7D6D5D4D3D2D1D0IDLESTATEALLOWLOOPVMAPPAGE0BGMINTMARPMOM1MAP保留OBJMODEAMODEXFD15~D13D12D11D10D9D8编码寄存器000XAR0001XAR1010XAR2011XAR3编码寄存器100XAR4101XAR5110XAR6111XAR72.XF-XFstatusbit,XF状态位该位反映当前XFS输出信号的状态。3.M0M1MAP-M0andM1mappingmodebitM0和M1映射模式位在C28x模式下,M0M1MAP=1在C27x兼容模式下,M0M1MAP=04.OBJMODE-Objectcompatibilitymodebit目标兼容模式位OBJMODE=0,C27x兼容模式OBJMODE=1,C28x模式2.3.11状态寄存器ST15.AMODE-Addressmodebit,寻址模式位6.IDELSTAT-IDLEstatusbit,空闲状态位7.EALLOW-Emulationaccessenablebit,仿真处理使能位8.LOOP-Loopinstructionstatusbit,循环指令状态位9.SPA-Stackpointeralignmentbit,堆栈指针对齐位10.VMAP-Vectormapbit,向量映射位11.PAGE0addressmodeconfigurationbitPAGE0寻址模式设置位2.3.11状态寄存器ST112.DBGM-Debugenablemaskbit,调试使能屏蔽位13.INTM-Interruptgloblemaskbit,中断全局屏蔽位2.3.11状态寄存器ST12.4时钟及系统控制本节主要介绍F2812的时钟、锁相环、看门狗和复位控制电路等。F2812各种时钟电路如图2-4-1(P39)所示。1407677160低速时钟高速时钟高速时钟2.4.1时钟寄存器组名称英文名称描述HISPCPHigh-SpeedPeripheralClockPrescalerRegisterforHSPCLKClock高速外设时钟设置寄存器LOSPCPLow-SpeedPeripheralClockPrescalerRegisterforHSPCLKclock低速外设时钟设置寄存器PCLKCRPeripheralClockControlRegister外设时钟控制寄存器LPMCR0LowPowerModeControlRegister0低功耗模式控制寄存器0LPMCR1LowPowerModeControlRegister1低功耗模式控制寄存器1PLLCRPLLControlRegisterPLL控制寄存器SCSRSystemControl&StatusRegister系统控制和状态寄存器WDCNTRWatchdogCounterRegister看门狗计数寄存器WDKEYWatchdogResetKeyRegister看门狗复位寄存器WDCRWatchdogControlRegister看门狗控制寄存器保留D15D14D13D12D11D10D9D8ECANENCLKMCBSPENCLKSCIBENCLKSPIENCLKSCIAENCLK保留保留R-0R/W-0R-0

R/W-0

R/W-0

R/W-0R-0

R/W-0D15D14D13D12D11D10D9D8外设时钟控制寄存器PCLKCR——Peripheralclockcontrolregister控制2812芯片上各种时钟的工作状态,使能或禁止相关外设时钟。D8=1SPI低速时钟有效D10=1SCI-A低速时钟有效D11=1SCI-B低速时钟有效D12=1McBSP低速时钟有效D14=1eCAN时钟有效外设时钟控制寄存器PCLKCR

R-0

R/W-0

R-0

R/W-0

R/W-0

保留ADCENCLK保留EVAENCLKEVBENENCLKD7D4D3D2D1D0D3=1ADC高速时钟有效D1=1EV-B高速时钟有效D0=1EV-A高速时钟有效2.系统控制和状态寄存器SCSR——SystemControl&StatusRegister反映看门狗状态和使能/禁止看门狗。Reserved

D15D3D2D1D0WDINTSWDENINTWDOVERRIDE

R-0R-1R/W-0R/W1C-1D0=1用户可以修改WDCR寄存器的状态D1=1看门狗复位输出信号无效,看门狗中断输出信号有效看门狗中断状态位3.高速外设时钟寄存器HISPCP

——High-speedperipheralclockprescalerregister用来设置高速的外设时钟(EV-A,EV-B,ADC)

D15…

…D3D2…D0

R-0R/W-010HSPCKReserved

D15…

…D3D2…D0

R-0R/W-010HSPCK/LSPCKReserved4.低速外设时钟寄存器LOSPCP——Low-speedperipheralclockprescalerregister用来设低速的外设时钟(SCI,SPI,McBSP)5.锁相环控制寄存器PLLCRPLL被旁路2.4.2晶振振荡器及锁相环F2812处理器上基于PLL的时钟模块,为各种外设和模块提供时钟信号。PLL中有4位倍频设置位,可以提供各种速度的时钟信号。时钟模块提供两种操作模式:内部振荡器:如果使用内部振荡器,则必须在X1/XCLKIN(77号引脚)和X2(76号引脚)两个脚之间连接一个石英晶体(30MHz)。外部时钟源:如果采用外部时钟,可以将输入的时钟信号直接接到X1/XCLKIN引脚上,而X2悬空。在这种情况下,不使用内部振荡器。WatchdogModule/24位PLL选择OSCCLK•C28xCoreCLKINMUX10SYSCLKOUTHISPCPLOSPCPHSPCLKLSPCLK••片内晶体振荡器XTALOSCX1/CLKINX2Crystal30Hz预存器XF_XPLLDISXPLLDISPLL旁路PLLXRSWatchdogModule/24位PLL选择OSCCLK•C28xCoreCLKINMUX10SYSCLKOUTHISPCPLOSPCPHSPCLKLSPCLK••片内晶体振荡器XTALOSCX1/CLKINX2Crystal30Hz预存器XF_XPLLDISXPLLDISPLL旁路PLLXRS外部时钟:当引脚XPLLDIS=0,PLL锁相环被禁止,系统直接采用外部输入时钟WatchdogModule/24位PLL选择OSCCLK•C28xCoreCLKINMUX10SYSCLKOUTHISPCPLOSPCPHSPCLKLSPCLK••片内晶体振荡器XTALOSCX1/CLKINX2Crystal30Hz预存器XF_XPLLDISXPLLDISPLL旁路PLLXRSWatchdogModule/24位PLL选择OSCCLK•C28xCoreCLKINMUX10SYSCLKOUTHISPCPLOSPCPHSPCLKLSPCLK••片内晶体振荡器XTALOSCX1/CLKINX2预存器XF_XPLLDISXPLLDISPLL旁路PLLXRS内部振荡器:当引脚XPLLDIS=1,外部时钟经过PLL倍频后,为系统提供时钟。(1)PLL旁路WatchdogModule/24位PLL选择OSCCLK•C28xCoreCLKINMUX10SYSCLKOUTHISPCPLOSPCPHSPCLKLSPCLK••片内晶体振荡器XTALOSCX1/CLKINX2Crystal30Hz预存器XF_XPLLDISXPLLDISPLL旁路PLLXRSWatchdogModule/24位PLL选择OSCCLK•C28xCoreCLKINMUX10SYSCLKOUTHISPCPLOSPCPHSPCLKLSPCLK••片内晶体振荡器XTALOSCX1/CLKINX2Crystal30Hz预存器XF_XPLLDISXPLLDISPLL旁路PLLXRS内部振荡器:当XPLLDIS=1,外部时钟经过PLL倍频后,为系统提供时钟。(2)PLL使能WatchdogModule/24位PLL选择OSCCLK•C28xCoreCLKINMUX10SYSCLKOUTHISPCPLOSPCPHSPCLKLSPCLK••片内晶体振荡器XTALOSCX1/CLKINX2Crystal30Hz预存器XF_XPLLDISXPLLDISPLL旁路PLLXRSWatchdogModule/24位PLL选择OSCCLK•C28xCoreCLKINMUX10SYSCLKOUTHISPCPLOSPCPHSPCLKLSPCLK•片内晶体振荡器XTALOSCX1/CLKINX2Crystal30Hz预存器XF_XPLLDISXPLLDISPLL旁路PLLXRS•高速外设低速外设2.4.2晶振振荡器及锁相环例2-4-1中PLL的设置EALLOW;SysCtrlRegs.HISPCP.all=0x0001; //设定高速外设时钟预分频值

SysCtrlRegs.LOSPCP.all=0x0002; //设定低速外设时钟预分频值

//对选定的外设进行外设时钟使能设置

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个振荡器时钟宽度)。如果不希望产生脉冲信号,用户需要屏蔽计数器,或用软件周期向看门狗复位控制寄存器写“0x55+0xAA",该寄存器能够使看门狗计数器清零。D15D8D7D0ReservedR-0R/W-0WDCNTR1.看门狗计数寄存器

—WDCNTR(WatchdogCounterRegister)反映看门狗计数器当前计数值在时钟WDCLK的控制下连续加1计数如果计数器到达最大值0x00FF,则看门狗触发一次复位或中断事件如果向WDKEY(看门狗复位寄存器)写入0x55+0xAA,将使计数器清零。2.看门狗复位寄存器

WDKEY(密钥寄存器)(WatchdogResetKeyRegisterReservedD15D8D7D0R-0R/W-0WDKEY依次写入0x55+0xAA,将使WDCNTR计数器清零。写其他值会立即使看门狗触发一次复位事件。3.看门狗控制寄存器——WDCRReservedD15D8R-0R/W-0WDFLAGD7D6D5D3D2D0WDPSWDDISWDCHKR-00使能看门狗1禁止看门狗3.看门狗控制寄存器——WDCRReservedD15D8R-0R/W-0WDFLAGD7D6D5D3D2D0WDPSWDDISWDCHKR-0必须写101b,写其他任何值都会引起器件内核的复位(如果看门狗已经使能)3.看门狗控制寄存器——WDCRReservedD15D8R-0R/W-0WDFLAGD7D6D5D3D2D0WDPSWDDISWDCHKR-01表示看门狗触发了一次复位事件0表示上电复位或外部复位事件用户只有写1才能使该位清0,写0无影响使能以下三种事件可以使看门狗产生脉冲信号(1)未及时“喂狗”,使8位看门狗计数器溢出(2)错误的“喂狗”方式,未正确对看门狗复位寄存器写入“0x55+0xAA”(3)对看门狗控制寄存器WDCR的WDCHKD位(D5~D3)写入“101B”例2-4-1中看门狗的设置EALLOW;SysCtrlRegs.WDKEY=0x0055;SysCtrlRegs.WDKEY=0x00AA;EDIS;}//关闭看门狗子程序,在初始系统时,或者用户不想使用看门狗,可以调用该程序voidDisableDog(void){EALLOW;SysCtrlRegs.WDCR=0x0068;EDIS;看门狗复位寄存器WDKEY写“密钥”看门狗控制寄存器WDCR0x0068=0000000001101000BD6=1禁止看门狗D5~D3=101D2~D0=000,WDCLK=OSCCLK/512/1例2-4-3中看门狗的设置EALLOW;SysCtrlRegs.WDCR=0x0028;//使能看门狗EDIS;D6=0使能看门狗D5~D3=101D2~D0=000,WDCLK=OSCCLK/512/1看门狗控制寄存器WDCR0x0028=0000000000101000B2.4.3定时器及其应用F2812有3个32位CPU定时器(TIMER0/1/2):√定时器0用户可以在应用程序中使用。√定时器1和定时器2预留给实时操作系统使用(例如DSPBIOS)。定时器计数寄存器定时器周期寄存器定时器控制寄存器定时器预定标寄存器1.定时器计数器

—TIMERxTIM/TIMERxTIMHTIMD15D0R/W-0TIMHD15D0R/W-0低16位高16位1.CPU定时器计数器寄存器TIMH:TIM。TIM寄存器保存当前定时器计数器的低16位,TIMH寄存器保存当前定时器计数器的高16位。2.每隔(TDDRH:TDDR+1)个时钟脉冲TIMH:TIM减1,直到减1为0时,被自动重装载(PRDH:PRD)寄存器保存的周期值,并产生定时器中断信号2.定时器周期寄存器

—TIMRxPRD/TIMRxPRDHPRDD15D0R/W-0PRDHD15D0R/W-0低16位高16位1.CPU定时器周期寄存器PRDH:PRD。PRD寄存器保存周期值的低16位,PRDH寄存器保存周期值的高16位。2.当TIMH:TIM递减到0时,在下次定时周期开始之前,TIMH:TIM寄存器将自动重新装载PRDH:PRD寄存器保存的周期值。3。定时器控制寄存器

——TIMERxTCR0TCR功

温馨提示

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

评论

0/150

提交评论