• DSP5509的时钟发生器(翻译总结自TI官方文档)


    一、C5509时钟发生器的两个功能

    1.将从CLKIN引脚输入的时钟信号变换为适当频率的CPU时钟,提供给CPU、外设和其他模块使用;

    2.将CPU时钟通过可编程分频器输出到CLKOUT引脚。

    时钟发生器内部有数字锁相环PLL(phase lock ring)和时钟模式寄存器(CLKMD)。

    二、时钟发生器的工作模式

    1.旁路模式Bypass Mode

      时钟模式寄存器CLKMD中的PLL ENABLE位为0,此时锁相环(PLL)被禁用,输出时钟信号频率为输入时钟信号频率的一分频、二分频或者四分频。分频值由BYPASS DIV确定:

    BYPASS DIV

    分频值

    00

    1

    01

    2

    1X

    4

    旁路模式下LOCK位为0。

    2.锁定模式Lock Mode

      时钟模式寄存器CLKMD中的PLL ENABLE位为1,此时锁相环(PLL)进入锁相程序,当PLL产生所需输出频率,并且输出时钟信号的相位被锁定在输入信号相位之后,时钟发生器进入锁定模式(Lock Mode)。在那之前,时钟发生器一直处于旁路模式(Bypass Mode)。

      如果时钟发生器处于锁定模式,并且PLL需要重新进行相位锁定时 (IOB = 1 in CLKMD),时钟发生器会进入旁路模式直到相位被再次锁定为止。

      输出时钟频率的计算:

     

      PLL MULT:2~31

      PLL DIV:0~3

      最大时钟频率:31*input frequency

      最小时钟频率:1/2*input frequency

      此外锁定模式中遇到的相关寄存器位还包括:

      IAI(initialize after idle):时钟发生器退出空闲模式时锁相环是否需要重启锁相程序。0:不重启;1:重启。

      BREAKLN:指示锁相状态是否中断。0:已中断;1:已修复或向CLKMD写入了新值。

      IOB(initialize on break):相位失锁时是否需要重新锁相。0:不需要;1:需要。

      LOCK:锁定模式下该值为1。

    3.空闲模式Idle(Low-Power) Mode

      为了节省电量,可以通过加载Idle Configuration使时钟发生器进入空闲模式。空闲模式下,输出时钟停止,时钟保持在高电平。

      如果进入空闲模式之前,时钟发生器为旁路模式,则在退出空闲模式之后,时钟发生器仍为旁路模式;如果进入空闲模式之前,时钟发生器为锁定模式,则在退出空闲模式之后,时钟发生器先进入旁路模式,进行重新锁相,再进入锁定模式。重新锁相的方式与IAI位有关。IAI=0:不重启锁相程序,使用之前的锁相设置进行锁相;IAI=1:重启锁相程序,适用于空闲模式下输入时钟改变或者可能改变的情况。

    三、CLKOUT引脚和相关的分频器

      时钟产生器产生的CPU时钟除了供CPU,外设和其他模块使用之外,还可以通过分频器传送给CLKOUT引脚。CLKOUT的频率值由系统寄存器SYSR中的CLKDIV位决定。

    四、DSP复位过程中时钟发生器的情况

      复位时(during reset):(此时复位信号保持为低电平)

      1.时钟发生器处于旁路模式;

      2.输出时钟频率由输入引脚CLKMD的电平决定。CLKMD为低电平时,输出时钟频率等于输入时钟频率;CLKMD为高电平时,输出时钟频率等于输入时钟频率的1/2。

      复位后(after reset):(复位信号的上升沿)

      时钟模式寄存器CLKMD的预设值由输入引脚CLKMD的电平决定。CLKMD为低电平时,时钟模式寄存器CLKMD的值为2002H;CLKMD为高电平时,时钟模式寄存器CLKMD的值为2006H。根据此值计算得知:复位之后时钟发生器也处于旁路模式,输出时钟频率也由输入引脚CLKMD的电平决定。

    五、时钟模式寄存器CLKMD

     

     

    六、使用方法和实例

      利用库函数配置时钟发生器的方法:

      1.在头文件中包含csl_pll.h文件;

      2.声明PLL配置结构体:

      PLL_Config Config_PLL={

      1,  //IAI

      1,  //IOB

      6,  //PLL MULT

      0   //PLL DIV

      };

      3.运行配置函数:

      PLL_config(&Config_PLL);

      也可以通过函数设置PLL频率:PLL_setFreq(6,1);

  • 相关阅读:
    python学习-33 max和min函数的高级使用
    XML--XSL
    XML--XML概览
    Linux|Zookeeper--CentOS7开机启动Zookeeper
    VMWare WorkStation15--Win10下开机启动虚拟机
    Zookeeper--命令介绍
    Zookeeper--复制模式安装
    Zookeeper--Zookeeper单机安装
    soupui--替换整个case的url
    Git--cherry-pick
  • 原文地址:https://www.cnblogs.com/Camilo/p/3493240.html
Copyright © 2020-2023  润新知