DSP

DSP之时钟与定时器之一时钟发生器

2019-07-13 10:11发布

    时钟与定时器包括时钟产生器、通用定时器、实时时钟以及看门狗定时器等。     时钟产生器的功能是产生CPU的工作时钟,并提供CLKOUT时钟输出;通用定时器、实时时钟及看门狗定时器的功能是通过计数器为系统提供定时时钟和年、月、日、时、分、秒等时钟信号,以及监控系统正常运行的看门狗时钟,并能发出相应中断。     1 . 时钟发生器      1.1 时钟模式寄存器 CLKMD            时钟发生器可以从CLKIN引脚接收输入的时钟,将其变换为CPU及其外设所需要的工作时钟,工作时钟经过分频也能够通过引脚CLKOUT输出,供其他器件使用,如图1所示。时钟发生器内有一个数字锁相环(Digital Phase Lock LoopDPLL)和一个时钟模式寄存器(CLKMD)。时钟模式寄存器用于控制时钟发生器的工作状态 在时钟模式寄存器中的PLL ENABLE位控制PLL的两种工作模式 1.旁路模式(BYPASS 如果PLL ENABLE=0PLL工作于旁路模式,PLL对输入时钟信号进行分频,分频值由BYPASS DIV确定:                如果BYPASS DIV=00,输出时钟信号的频率与输入信号的频率相同,即一分频。         如果BYPASS DIV=01,输出时钟信号的频率是输入信号频率一半,即二分频。         如果BYPASS DIV=1x,输出时钟信号的频率是输入信号频率1/4,即四分频。 2.锁定模式(LOCK 如果PLL ENABLE=1PLL工作于锁定模式,输出的时钟频率由下面公式确定:          输入时钟即可乘以或者除以一个系数来获得期望的输出频率,并且输出时钟相位与输入信号锁定。   为了降低功耗,时钟发生器也有Idle模式,可以通过关闭CLKGEN Idle模块,使时钟发生器工作在Idle模式。 1.2 CLKOUT引脚 CPU时钟也可以通过一个时钟分频器提供CLKOUT信号,CLKOUT的频率由系统寄存器(SYSR)中的CLKDIV确定: 如果CLKDIV=000b CLKOUT的频率等于CPU时钟的频率。 如果CLKDIV=001b CLKOUT的频率等于CPU时钟的频率的1/2 如果CLKDIV=010b CLKOUT的频率等于CPU时钟的频率的1/3 如果CLKDIV=011b CLKOUT的频率等于CPU时钟的频率的1/4 如果CLKDIV=100b CLKOUT的频率等于CPU时钟的频率的1/5 如果CLKDIV=101b CLKOUT的频率等于CPU时钟的频率的1/6 如果CLKDIV=110b CLKOUT的频率等于CPU时钟的频率的1/7 如果CLKDIV=111b CLKOUT的频率等于CPU时钟的频率的1/8   1.3 使用方法:
通过对时钟模式寄存器的操作,可以根据需要设定时钟发生器的工作模式和输出频率,在设置过程中除了工作模式、分频值和倍频值以外,还要注意其他因素对PLL的影响。 1.省电(IDLE 为了节省功耗,可以使时钟发生器处于省电状态,当时钟发生器退出省电状态时,PLL自动切换到旁路模式,进行跟踪锁定,锁定后返回到锁定模式, 时钟模式寄存器中与省电有关的位是IAI 2DSP复位         DSP复位期间和复位之后,PLL工作于旁路模式,输出的时钟频率由CLKMD引脚上的电平确定。 如果CLKMD引脚为低电平,输出频率等于输入频率; 如果CLKMD引脚为高电平,输出频率等于输入频率的一半。 3.失锁         锁相环对输入时钟跟踪锁定之后,由于其他原因使其输出时钟发生偏移,即失锁。出现失锁现象后,PLL的动作由时钟模式寄存器中的IOB确定   调用时钟发生器库函数首先要在头文件中包含csl_pll.h文件,接下来介绍利用库函数配置时钟发生器的方法。         首先要声明PLL配置结构,具体声明如下: PLL_Config Config_PLL = { 1, /*iai 休眠后重新锁相 */ 1, /*iob 失锁后进入旁路模式并重新锁相 */ 6, /*pllmult   CLKIN * pllmult = DSP主时钟*/ 0   /*div   CLKOUT= DSP主时钟/div+1 */ };         之后运行配置函数: PLL_config&Config_PLL;         也可以通过函数设置PLL频率:        PLL_setFreq6, 1;          通过PLL_setFreq函数可以复位PLL锁相环,并改变倍频和分频数从而得到所需的频率。   1.4 时钟发生器的调试 时钟发生器所产生的DSP工作时钟,如果时钟产生器没有正常工作,DSP将无法正常运行,而调试DSP也是不可能的。         调试时钟发生器应遵循以下步骤:       1)检查DSP的时钟输入引脚CLKIN、时钟输出引脚CLKOUT和时钟模式引脚CLKMD连接是否正确,正常情况下CLKIN应接时钟源,而CLKMD应拉高或降低, CLKOUT应是信号输出引脚。       2)系统加电后测量CLKIN引脚时钟输入是否正常,信号的高低电平及占空比是否满足需要。       3)在没有进行软件设置的情况下,DSP在复位后CLKOUT的输出直接受CLKMD控制,当CLKMD为高,CLKOUT的输出频率将等于CLKIN的频率,CLKMD为低, CLKOUT输出将等于CLKIN的频率的1/2       4)如果以上步骤运行正常,则利用软件设置CLKMD寄存器,使时钟产生器工作于PLL锁相环模式下,此时再检测CLKOUT信号,查看锁相环是否正常工作。