1时钟发生器定时器中断多通道缓冲串口(McBSP)主机接口(HPI)直接存储器访问控制器(DMA)通用I/O外部总线第三章TMS320C54xDSP片内外设23.1时钟发生器时钟发生器芯片33.1时钟发生器作用?为DSP的内部各单元和外部器件提供时钟组成?一个内部振荡器和一个锁相环(PLL)电路驱动方式?用一个参考时钟输入驱动,有两种方式提供:①在X1和X2/CLKIN引脚外接晶振,然后通过内部晶体振荡器产生时钟②在X2/CLKIN引脚直接引入外部参考时钟,X1引脚悬空43.1时钟发生器VC5416与时钟有关的内部单元有哪些?①内部振荡器及锁相环(PLL)产生CPU运行主时钟,同时受BSCR(分区转换寄存器,地址0x29)的DIVFCT位分频控制,通过引脚CLKOUT对外输出主时钟。②内部时钟通过定时器为定时中断产生中断脉冲,并可通过引脚TOUT对外输出定时时钟。③内部时钟通过McBSP等多通道缓冲串口相关寄存器设置,产生串口所需的各类时钟。53.1时钟发生器(两种锁相环电路)1、硬件配置锁相环VC5416硬件复位后,通过读取CLKMD1~CLKMD3这三个引脚电位配置,确定锁相环的初始配置CLKMD1CLKMD2CLKMD3复位时CLKMD的值时钟模式0000000h1/2,PLL不工作0019007hPLL×100104007hPLL×51001007hPLL×2110F007hPLL×11110000h1/2,PLL不工作101F000h1/4,PLL不工作011---保留VC5416复位时的时钟配置63.1时钟发生器(两种锁相环电路)1、硬件配置锁相环解释:CLKMD1CLKMD2CLKMD3复位时CLKMD的值时钟模式0000000h1/2,PLL不工作指CPU的时钟频率等于晶体振荡器频率或外部时钟频率的一半,此时锁相环PLL不工作CLKMD1CLKMD2CLKMD3复位时CLKMD的值时钟模式0019007hPLL×10指CPU的时钟频率等于晶体振荡器频率或外部时钟频率乘以系数10,此时PLL工作73.1时钟发生器(两种锁相环电路)1、硬件配置锁相环举例实验指导书P165-166,实验六中的部分内容#defineCLKMD*(unsignedint*)0x58CLKMD=0;//初始化时钟寄存器在二分频状态,晶振为16MHz,则CPU时钟在8MHz83.1时钟发生器(两种锁相环电路)2、软件配置锁相环若需要改变硬件配置的时钟频率,可用软件编程方式修改CLKMD的值,使PLL输出所需的CPU时钟如何修改?认识CLKMDCLKMD的结构内容一93.1时钟发生器(两种锁相环电路)2、软件配置锁相环认识CLKMDCLKMD各个位的功能比特位名称说明15-12PLLMULPLL倍频因子,与PLLDIV及PLLNDIV共同确定频率系数,见表3.3。11PLLDIV分频因子,与PLLDIV及PLLNDIV共同确定频率系数,见表3.3。10-3PLLCOUNTPLL延时计数器,PLLCOUNT是一个减法计数器,每输入16个CLKIN时钟,计数器的值减1。当PLLCOUNT减到0时,PLL锁定输出时钟。这时,CPU可以按新的时钟频率工作。2PLLON/OFFPLL打开或关闭控制。与PLLNDIV共同决定PLL是否工作,当两者均为0时,PLL关闭,否则PLL工作。1PLLNDIVPLL工作选择位。为0时为分频(DIV)方式,为1时为PLL方式。0PLLSTATUSPLL状态位,指示PLL工作状态(只读),为0时表示PLL工作在DIV方式,为1时工作在PLL方式。103.1时钟发生器(两种锁相环电路)2、软件配置锁相环配置输出时钟计算公式CLKOUT=CLKIN×倍频因子倍频因子的决定因素PLLNDIVPLLDIVPLLMUL倍频因子0×0-140.50×150.25100-14PLLMUL+110151110或偶数(PLLMUL+1)/211奇数PLLMUL/4倍频因子与PLLNDIV、PLLDIV和PLLMUL之间的关系113.1时钟发生器(两种锁相环电路)2、软件配置锁相环举例如果时钟设置为PLL×2模式,则CLKMD的值应为多少?参照倍频因子与PLLNDIV、PLLDIV和PLLMUL之间的关系,很显然应选择如下关系:PLLNDIVPLLDIVPLLMUL倍频因子100-14PLLMUL+1分析如下10111工作在PLL模式PLL锁定时间123.1时钟发生器(两种锁相环电路)2、软件配置锁相环(0-255)×16×CLKINPLL锁定时间的计算方法?内容二注:不同的CLKOUT时钟,锁定时间不同。最简单的方法是设定在最大值,PLLCOUNT=0xFF133.1时钟发生器(两种锁相环电路)2、软件配置锁相环时钟发生器可以直接从PLL模式切换到DIV模式,没有PLLCOUNT延时,只需短暂延时即可,CPU运行不受影响。时钟发生器的模式转换?内容三从DIV切换到PLL方式的过程中,仍工作在DIV方式,直到PLLCOUNT减为0,且CLKMD的PLLSTATUS为1时,才输出新时钟供CPU使用。从一个PLL方式切换到另一个PLL方式(倍频因子不同),不允许直接切换,中间需经过DIV状态,即先切换到DIV模式,再切换到新PLL模式。143.1时钟发生器(两种锁相环电路)2、软件配置锁相环例如:一个PLL模式转换为DIV=0模式时钟发生器的模式转换?内容三C语言实现方式#defineCLKMD*(unsignedint*)0x58CLKMD=0;//2分频汇编语言实现方式STM#0,CLKMD153.1时钟发生器(两种锁相环电路)2、软件配置锁相环例如:将DIV模式切换到PLL×2模式时钟发生器的模式转换?内容三C语言实现方式#defineCLKMD*(unsignedint*)0x58CLKMD=0;//2分频for(i=0;i5:i++)CLKMD=0x17FF;//2倍频,提高可靠性for(i=0;i255:i++);//等待汇编语言实现方式RPT#4STM#0x17FF,CLKMDSTM#255,AR1WAIT:BANZWAIT*AR1-161.初步认识定时器可采样时钟、定时控制或作计数器使用减1计数器且是一个软件可编程定时器其定时间隔与CPU的时钟有关。VC5416有一个片上定时器,C5402和C5420有2个片上定时器。3.2定时器172.定时器的组成框图PSC:预定标计数器TDDR:预定标分频系数TIM:定时器寄存器PRD:定时器周期寄存器3.2定时器183.定时器相关寄存器(3个)3.2定时器193.2定时器204.定时器工作过程TSS=0时,开启定时器,PSC在CPU时钟(CLKOUT)作用下作减1计数PSC减为0时,产生借位信号,使TIM减1,同时TDDR的值装载到PSC,开始下一次预计数;重复步骤(2),反复驱动TIM减1计数,直到TIM减为0时,TIM产生借位信号,此借位信号作CPU的定时中断TINT和定时脉冲输出TOUT,同时PRD的值装载到TIM开始下一个定时周期;3.2定时器2196PSC30TDDR15……0PRD15……0TIM150TCR96PSC30TDDR定时器工作过程的示意图:TDDR和PRD的范围:TDDR为4bit:Max=16PRD为16bit:Max=655363.2定时器22定时中断周期:定时中断频率:5.定时中断周期和频率3.2定时器23例1:设CLKOUT的频率为8MHz,现要求A/D采样频率为4kHz,用定时器中断产生定时信号,问如何设计PRD和TDDR?说明:TDDR的设置有多种,可以PRD=1999=0x7CF,PRD=03.2定时器24例2:设CLKOUT的频率为8MHz,现有一个发光管,要求每秒闪烁1次(即每秒亮一次,暗一次,频率为2Hz),用定时器产生定时信号控制这个发光管,问如何设计PRD和TDDR?3.2定时器255.定时器的初始化步骤:2)设置PRD1)对TCR的TSS位置1,停止定时器3)设置TCR,包括对TDDR的初始化、TRB位置1(使TIM减到0后,重新加载定时器时间常数)、TSS位清0(启动定时器)3.2定时器26main(){port8000=0;//初始化ICETEK-CTRport8007=0;//关闭东西方向的交通灯port8007=0x40;//关闭南北方向的交通灯nCount=0;nCountLed=0;asm(“ssbxINTM”);//关中断uWork=PMST;//设置PMST寄存器PMST=uWork&0xff;//中断向量表起始地址=80H6.定时器中断举例3.2定时器27IMR=0x8;//使能TINTTCR=0x041f;//预分频系数//(TDDR+1)=0xf+1=16TIM=0;//定时器计数器清0PRD=0xf423;//周期寄存器//(PRD+1)=0xf423+1=62500TCR=0x042f;//复位、启动IFR=0x0;//清中断标志位asm(rsbxINTM);//开中断while(1);//等待状态}3.2定时器28voidinterrupttime(void){nCount++;if(nCount=4){nCount=0;port8007=uLed[nCountLed][0];port8007=uLed[nCountLed][1];nCountLed++;nCountLed%=12;}}3.2定时器29VECTORS.asm………….RESET:BD_c_int00STM#200,SP…………tint:B_time.ref_timeNOPNOP3.2定时器