精华内容
下载资源
问答
  • 多核数字信号处理器(DSP)具有丰富的...本文介绍了多核数字信号处理器丁MS320C6678的时钟设计,通过时钟芯片CDCM6208提供多路不同工作频率的时钟信号DSP,文中介绍了时钟芯片的初始化和设置以及详细的软硬件设计方法。
  •  1、系统中要求多个不同频率的时钟信号时,首选可编程时钟芯片,这样有利于时钟信号的同步;  2、单一时钟信号时,一般的应用建议选择晶体时钟电路;  3、多个同频时钟信号时,可选择有源的晶振作为时钟电路;  ...
  • DSP335时钟

    2016-01-25 11:15:09
    在使用有源晶振作为外部的时钟源时,DSP片内的晶体振荡电路会被旁路,外部的时钟信号有XCLKIN管脚输入DSP。看门狗定时器取OSCCLK信号作为其输入。C28x的内核会将输入的CLKIN信号转换为SYSCLKOUT信号(这就是通常我们...

    1.系统时钟概述

    整个时钟电路的原理框图如图所示。

    图1 时钟电路的原理框图

    在使用有源晶振作为外部的时钟源时,DSP片内的晶体振荡电路会被旁路,外部的时钟信号有XCLKIN管脚输入DSP。看门狗定时器取OSCCLK信号作为其输入。C28x的内核会将输入的CLKIN信号转换为SYSCLKOUT信号(这就是通常我们提到的那些150MHz的信号)。SYSCLKOUT主要用来为DSP片上的一些外设提供时钟信号。按照外设的速率,一般分为需要高速时钟信号HSPCLK(顾名思义即high speed peripheral clock)的外设,如EPWM、ADC等等;以及仅需要较低的信号频率LSPCLK(顾名思义即low speed peripheral clock)的外设,主要是一些串行设备,如SCI、SPI、I2C、McBSP等。HSPCLK与LSPCLK都是通过对SYSCLKOUT进行分配得到的,主要是通过配置寄存器的控制位实现不同的分频因子。举例如下:

    HSPCLK/ LSPCLK

    外设时钟频率

    0 0 0

    SYSCLKOUT

    0 0 1

    SYSCLKOUT / 2

    0 1 0

    SYSCLKOUT / 4

    0 1 1

    SYSCLKOUT / 6

    1 0 0

    SYSCLKOUT / 8

    1 0 1

    SYSCLKOUT / 10

    1 1 0

    SYSCLKOUT / 12

    1 1 1

    SYSCLKOUT / 14

    HSPCLK的上电默认值是SYSCLKOUT / 2,即在SYSCLKOUT为150MHz的情况下,HSPCLK默认为75MHz,所以如果想让外设工作在最高频率下一定不能忘了设置这些位。此外,如果没有正确配置的话,那外设里面的定时器,如PWM定时器的周期都将与预想的产生倍数倍的错位。LSPCLK的默认值则为SYSCLKOUT / 4。

    在SysCtrlRegs.PCLKCR0、SysCtrlRegs.PCLKCR1、SysCtrlRegs.PCLKCR3寄存器中,有对各个外设时钟信号的单独的使能控制。比如,我们禁止掉SysCtrlRegs.PCLKCR0里面的ECANBENCLK,则ECANB模块没有时钟信号输入,其消耗的功率就近乎为0了。(为什么?因为CMOS电路的功耗主要是动态功耗啊!)

    展开全文
  • dsp28335时钟 总结

    千次阅读 2018-12-13 10:22:26
    30MHZ晶振信号OSCCLK经锁相环10倍频(PLLCR设置)然后经过2分频(PLLSTS设置)产生150MHZ时钟信号 2.150MHZ :1)LSPCLK(低速时钟)-----------------------------SPI,SCI,IIC,MCBSP 2) 1/2(75MHZ)------------------...

    1.dsp28355的最高频率为150MHZ
    30MHZ晶振信号OSCCLK经锁相环10倍频(PLLCR设置)然后经过2分频(PLLSTS设置)产生150MHZ时钟信号
    2.150MHZ :1)LSPCLK(低速时钟)-----------------------------SPI,SCI,IIC,MCBSP
    2) 1/2(75MHZ)-----------------------------------------ecan
    3) 150MHZ ---------------------------------------------EPWM,ECAP,EQEP,DMA,TIMER
    4) HSPCLK(高速时钟)------------------------------------ADC
    3.改变时钟时钟频率必须等待系统时钟稳定后,才能继续完成其他操作
    4.在PCLKCR0,PCLKCR1,PCLKCR3寄存器打开时钟模块(sysctrl();函数里)

    看门狗:
    1:看门狗:只要是一个定时器(8位计数器),当定时器时间到达最大值时会发出一个输出脉冲(看门狗复位信号(WDRST:将XRS拉低512个OSCCLK周期)和看门狗中断信号(WDINT))。
    在程序正常运行过程中每次在看门狗定时器到达最大值之前要清除看门狗定时器。
    清除看门狗计数器方法 
    1)WDKEY=0X55+0XAA
    2)XRS外部复位信号(低电平有效)
    3)看门狗自动复位信号WDRST
    触发复位信号
    1)看门狗计数器的输出
    2)WDCHK不等于101
    2.WDENINT: 1:使能看门狗中断信号WDINT,屏蔽看门狗复位信号WDRST
     0:使能看门狗复位信号WDRET,屏蔽看门狗中断信号WDINT

    CPU定时器TIMER0,1,2
    1.工作原理:首先将周期寄存器值(PRDH:PRD)装载到32位计数器(TIMH:TIM)中,接着每经过TDDR+1个系统时钟周期递减一次,当计数器等于0时,定时器产生中断信号。
    2.不用清除标志位,系统自动清除。
    3.寄存器
    1)TCR.TRB  1:TIM重载PRD,PSC重载TDDR
    2)TPR寄存器:(0~7位)TDDR, (8~15)PSC
    4.每个时钟周期源到来时,只要PSCH:PSC的值大于0,PSCH:PSC就会减1,当PSCH:PSC减少到0之后重新加载TDDRH:TDDR中的值,同时定时器计数器(TIMH:TIM)减1。
    5.定时器函数
    Configcputimer(&cputimer0,150,1 000 000) 
    哪个定时器     频率 周期
    时间=(频率*周期)/150 000 000  (150 000 000为时钟频率)
    --------------------- 
    转至原文作者:zhuangjianyu123
    来源:CSDN 
    原文:https://blog.csdn.net/zhuangjianyu123/article/details/53394470 
    版权声明:转载请附上博文链接!

    展开全文
  • DSP28335 外设时钟

    千次阅读 2016-11-21 15:06:43
    TMS320F28335通过外部时钟信号、OSC和PLL产生倍频时钟信号CLKIN后,CLKIN经过CPU后产生时钟SYSCLKOUT(CLKIN和SYSCLKOUT频率是一样的),SYSCLKOUT给各个片内外设提供时钟信号。为了实现低功耗和提供高低频率时钟信号...

    TMS320F28335通过外部时钟信号、OSC和PLL产生倍频时钟信号CLKIN后,CLKIN经过CPU后产生时钟SYSCLKOUT(CLKIN和SYSCLKOUT频率是一样的),SYSCLKOUT给各个片内外设提供时钟信号。为了实现低功耗和提供高低频率时钟信号,需要把SYSCLKOUT进一步分频,本章主要讲解了对SYSCLKOUT分频产生低频时钟信号和高频时钟信号,完成外设时钟初始化的过程。

    1.时钟系统

    时钟系统结构如图1所示。 
    时钟系统结构如图1所示 
    从图1可以看出,时钟CLKIN经过CPU后产生时钟SYSCLKOUT(CLKIN和SYSCLKOUT频率是一样的),SYSCLKOUT给各个片内外设提供时钟;除了SPI、SCI、McBSP模块使用低频时钟,ADC使用高频时钟外,其他外设模块都是采用SYSCLKOUT时钟。为了实现低功耗,必须对每个片内外设时钟进行开关控制;为了实现高低频率时钟,必须对SYSCLKOUT进行不同的分频处理,因此与外设时钟配置相关的寄存器主要有两类:外设时钟控制寄存器PCLKCR和高低频外设时钟分频寄存器SPCP。

    第一类寄存器是外设时钟控制寄存器PCLKCR,它包括16位的PCLKCR0、PCLKCR1、PCLKCR3(不知道为什么跳过了PCLKCR2??),主要是控制使能和禁用外设时钟; 
    第二类寄存器是高低频外设时钟分频寄存器,它包括高频外设时钟分频寄存器16位的HISPCP(High-Speed Peripheral Clock Prescaler Register)和低频外设时钟分频寄存器16位的LOSPCP(Low-Speed Peripheral Clock Prescaler Register)

    2.与外设时钟配置相关的寄存器

    控制片内外设时钟开关的外设时钟控制寄存器PCLKCR0、PCLKCR1、PCLKCR3如表1、表2、表3所示。 
    外设时钟控制寄存器PCLKCR0

    外设时钟控制寄存器PCLKCR1

    外设时钟控制寄存器PCLKCR3

    从表1、表2、表3可以看出,默认情况下,除了3个CPU定时器和GPIO口输入采样时钟使能外,其他所有外设的时钟是禁用的。 
    **注: 
    - PCLKCR0、PCLKCR1、PCLKCR3均受ELLOW保护。 
    - 不使用某外设模块时,可以禁用该时钟模块的时钟以省电。 **

    产生高低频外设时钟的分频寄存器HISPCP和LOSPCP分别如表4和表5所示。 
    高频外设时钟分频寄存器HISPCP 
    高频外设时钟分频寄存器LOSPCP

    两个寄存器具体位域描述分别如表6和表7所示。 
    高频外设时钟分频寄存器HISPCP位域描述
    低频外设时钟分频寄存器LOSPCP位域描述
    从表4到表7可以看出,16位的高频外设时钟分频寄存器HISPCP和低频外设时钟分频寄存器LOSPCP都只用了低3位;两个寄存器都受ELLOW保护;分频计算方法:当分频系数为0,表示时钟等于SYSCLKOUT/1,当分频系数不为0时,CLK=SYSCLKOUT/(n×2)。

    3.时钟输出

    SYSCLKOUT可以按1、2、4分频从TMS320F28335的XCLKOUT引脚输出,SYSCLKOUT输出示意图如2所示。 
    SYSCLKOUT输出示意图

    从图2可以看出,上电或复位默认情况下,SYSCLK2分频产生XTIMCLK,XTIMCLK再通过2分频产生XCLKOUT时钟,该时钟信号通过引脚XCLKOUT输出,即默认情况下XCLKOUT=SYSCLK/4=OSCCLK/16,调试时可以观察该引脚的信号以判断设备是否在正确的时钟下工作。 
    注: 
    - XCLKOUT引脚上电或者复位默认情况下是激活状态的。 
    - XCLKOUT引脚没有上拉或者下拉电阻。 
    - 如果XCLKOUT引脚不使用时,可以通过XINTCNF2[CLKOFF]=1关闭。 
    - 默认情况下,XTIMCLK=SYSCLKOUT/2,它是外扩模块(外扩FLASH、SRAM等)的时钟

    4.外设时钟初始化代码

    此初始化代码主要来自TI官方例程,注释是个人理解。

    /*
    *函数名称:InitPeripheralClocks
    *输入参数:无
    *输出参数:无
    *函数功能:初始化外设时钟模块,主要包括产生高低速时钟、开关所需片内外设模块时*钟等
    */
    void InitPeripheralClocks(void)
    {
       EALLOW;
    
    // 高低频外设时钟分频寄存器HISPCP/LOSPCP设置,正常情况下采用默认值,即高频时钟为SYSCLKOUT/2,低速时钟为SYSCLKOUT/4
       SysCtrlRegs.HISPCP.all = 0x0001;
       SysCtrlRegs.LOSPCP.all = 0x0002;
    
    // 时钟输出引脚XCLKOUT设置,默认情况XCLKOUT = SYSCLKOUT/4 
       // XTIMCLK = SYSCLKOUT/2
       XintfRegs.XINTCNF2.bit.XTIMCLK = 1;//extern interface clock<->XinfCLK
       // XCLKOUT = XTIMCLK/2
       XintfRegs.XINTCNF2.bit.CLKMODE = 1;
       // Enable XCLKOUT
       XintfRegs.XINTCNF2.bit.CLKOFF = 0;
    
    // 给所选用外设使能外设时钟
    // 如果不使用某外设模块,禁用它的时钟以省电
    // 下面代码要根据自己使用的外设模块进行相应的修改
    
       SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1;    // ADC
    
       // *重要提醒*
       // ADC_cal()函数, 可以从TI保留的OTP中复制ADC校验值,并将校验值赋值给ADCREFSEL和ADCOFFTRIM寄存器,该过程在BOOT ROM中自动地完成
       //如果在调试过程中,BOOT ROM代码旁路未使用,那么必须显示调用下面 ADC_cal()函数(推荐显示调用)
       //在调用 ADC_cal()前,必须使能ADC时钟
       // 有关ADC更多的信息参见设备数据手册
    
       ADC_cal();
    
    //本例中使能了所有片内外设模块时钟
       SysCtrlRegs.PCLKCR0.bit.I2CAENCLK = 1;   // I2C
       SysCtrlRegs.PCLKCR0.bit.SCIAENCLK = 1;   // SCI-A
       SysCtrlRegs.PCLKCR0.bit.SCIBENCLK = 1;   // SCI-B
       SysCtrlRegs.PCLKCR0.bit.SCICENCLK = 1;   // SCI-C
       SysCtrlRegs.PCLKCR0.bit.SPIAENCLK = 1;   // SPI-A
       SysCtrlRegs.PCLKCR0.bit.MCBSPAENCLK = 1; // McBSP-A
       SysCtrlRegs.PCLKCR0.bit.MCBSPBENCLK = 1; // McBSP-B
       SysCtrlRegs.PCLKCR0.bit.ECANAENCLK=1;    // eCAN-A
       SysCtrlRegs.PCLKCR0.bit.ECANBENCLK=1;    // eCAN-B
    
       SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;   // Disable TBCLK within the ePWM
       SysCtrlRegs.PCLKCR1.bit.EPWM1ENCLK = 1;  // ePWM1
       SysCtrlRegs.PCLKCR1.bit.EPWM2ENCLK = 1;  // ePWM2
       SysCtrlRegs.PCLKCR1.bit.EPWM3ENCLK = 1;  // ePWM3
       SysCtrlRegs.PCLKCR1.bit.EPWM4ENCLK = 1;  // ePWM4
       SysCtrlRegs.PCLKCR1.bit.EPWM5ENCLK = 1;  // ePWM5
       SysCtrlRegs.PCLKCR1.bit.EPWM6ENCLK = 1;  // ePWM6
       SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;   // Enable TBCLK within the ePWM
    
       SysCtrlRegs.PCLKCR1.bit.ECAP3ENCLK = 1;  // eCAP3
       SysCtrlRegs.PCLKCR1.bit.ECAP4ENCLK = 1;  // eCAP4
       SysCtrlRegs.PCLKCR1.bit.ECAP5ENCLK = 1;  // eCAP5
       SysCtrlRegs.PCLKCR1.bit.ECAP6ENCLK = 1;  // eCAP6
       SysCtrlRegs.PCLKCR1.bit.ECAP1ENCLK = 1;  // eCAP1
       SysCtrlRegs.PCLKCR1.bit.ECAP2ENCLK = 1;  // eCAP2
       SysCtrlRegs.PCLKCR1.bit.EQEP1ENCLK = 1;  // eQEP1
       SysCtrlRegs.PCLKCR1.bit.EQEP2ENCLK = 1;  // eQEP2
    
       SysCtrlRegs.PCLKCR3.bit.CPUTIMER0ENCLK = 1; // CPU Timer 0
       SysCtrlRegs.PCLKCR3.bit.CPUTIMER1ENCLK = 1; // CPU Timer 1
       SysCtrlRegs.PCLKCR3.bit.CPUTIMER2ENCLK = 1; // CPU Timer 2
    
       SysCtrlRegs.PCLKCR3.bit.DMAENCLK = 1;       // DMA Clock
       SysCtrlRegs.PCLKCR3.bit.XINTFENCLK = 1;     // XTIMCLK
       SysCtrlRegs.PCLKCR3.bit.GPIOINENCLK = 1;    // GPIO input clock
    
       EDIS;
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75

    5.本章小结

    本章主要讲解了对SYSCLKOUT分频产生低频时钟信号和高频时钟信号,完成外设时钟初始化的过程。

    展开全文
  • DSP28335时钟PLL

    千次阅读 2016-11-21 15:03:34
    PLL作用就是对外部时钟进行倍频,降低产生高频时钟信号的成本。但是倍频配置的时候,需要在特定的条件下更改,因此需要检测PLL工作的各种状态信号,因此PLL有两个配置相关寄存器,PLL状态寄存器PLLSTS和PLL控制...

    PLL作用就是对外部时钟进行倍频,降低产生高频时钟信号的成本。但是倍频配置的时候,需要在特定的条件下更改,因此需要检测PLL工作的各种状态信号,因此PLL有两个配置相关寄存器,PLL状态寄存器PLLSTS和PLL控制寄存器PLLCR。通过对状态寄存器PLLSTS的判断,可以判断PLL的工作状态,在特定的工作状态下,对PLL控制寄存器PLLCR进行配置,最后产生合适的时钟信号CLKIN输入给CPU,完成整个过程的倍频。本文详细介绍了PLL模块,并对初始化过程和初始化代码进行了分析。

    1.OSC和PLL模块

    OSC和PLL模块方框图如图1所示。 
    OSC和PLL模块方框图如图1所示。

    基于 PLL 的时钟模块提供两种操作模式: 
    • 晶振操作模式:允许使用一个外部晶振/谐振器来提供到器件的时基。 
    • 外部时钟源操作模式:允许旁通内部振荡器被,时钟由一个 X1 或者 XCLKIN 引脚上的外部时钟源输入生成。

    三种输入时钟配置如图2、图3、图4所示 
    三种输入时钟配置如图2、图3、图4所示

    30MHz 外部石英晶振的典型技术规范如下: 
    • 基本模式、 并联谐振 
    • CL( 负载电容) =12pF 
    • CL1=CL2=24pF 
    • C并联=6pF 
    • ESR 范围 = 25 至 40Ω

    2.基于 PLL 的时钟模块

    TMS320F23885上有一个片载、基于PLL倍频器的时钟模块,它提供所有的时钟信号以及实现对低功耗模式的控制。

    PLL作为DSP的时钟重要组成部分,它除了提高系统内部SYSCLKOUT的频率之外,还有一个重要的用途就是监视外部时钟是不是很好的为DSP内部提供系统时钟。 
    如果PLL处于使能状态,需要监视PPLSTS寄存器中的MCLKSTS位的状态。如果MCLKSTS被置位,则软件要采集恰当的措施保证系统不出现事故,该措施包括使系统停机、复位等。

    与PLL配置相关的寄存器有两个:PLL状态寄存器PLLSTS和PLL控制寄存器PLLCR,两个寄存器具体的讲解参见第3节。

    两个寄存器中最关键的位域分别为 2位的PLLSTS[DIVSEL]和4位的PLLCR[DIV]。 
    PLLSTS[DIVSEL]选择CPU时钟的分频系数(/4,/2,/1),PLLCR[DIV] 选择CPU时钟的倍频系数(*1,*2,……,*10)。

    比如TMS320F23885最大工作时钟为150MHz,通常外部晶振频率为30MHz,先将30MHz进行10倍频变成300MHz,再对300MHz进行2分频得到150MHz的时钟。(官方例程里产生150MHz的方式)

    PLL的设置如表1所示。 
    PLL的设置如表1所示

    分频系数的选择如表2所示。 
    分频系数的选择如表2所示

    PLL可能的配置模式如表3所示。 
    PLL可能的配置模式如表3所示

    注: 
    (1)默认情况下,分频系数为4 
    (2)在改变PLLCR[DIV]倍频系数前,必须满足两个条件:

    • PLLSTS[DIVSEL]必须为0,而PLLSTS[DIVSEL]改变时,PLL必须完成锁定状态,即PLLSTS[PLLOCKS]必须为1
    • DSP不能工作在limp mode下,即PLLSTS[MCLKSTS]必须为0

    (3)一旦PLL稳定之后,会锁定在新的频率下工作,PLLSTS[PLLLOCKS] = 1,可以改变PLLSTS[DIVSEL]。 
    (4)在写入 PLLCR 寄存器之前, 安全装置模块(看门狗)应该被禁用。 
    (5)在 PLL 模块稳定后,重新启用安全装置模块(看门狗),重启的时间为 131072 个 OSCCLK 周期。 
    (6)在 PLL (VCOCLK) 的输出频率不超过300MHz 时候,选择输入时钟和 PLLCR[DIV] 位。 
    (7)当PLL激活时,即PLL不是旁路(PLLCR[DIV]!=0),必须需要分频器,即分频系数不能为1(PLLSTS[DIVSEL]!=3),这是因为确保反馈给内核的时钟具有正确的占空比。 
    (8)只有外部复位信号RST和安全装置(看门狗)产生复位信号时,PLLCR和PLLSTS才会复位到默认值,而调试器和Missing clock detect logic产生的复位信号不会使两者复位到默认值。 
    (9)PLLCR和PLLSTS是受ELLOW保护的。 
    特别注意:倍频时一定要分频,不倍频时才允许不分频。

    3.PLL配置相关的寄存器

    PLL控制寄存器PLLCR如表4所示。 
    PLL控制寄存器PLLCR如表4所示

    PLL状态寄存器PLLSTS如表5所示。 
    PLL状态寄存器PLLSTS如表5所示

    PLLSTS各位的描述如表6所示 
    PLLSTS各位的描述如表6所示

    注:跛行模式(limp mode)系统出现问题的时候,控制逻辑能够根据对应的条件进行判断,安排另外的一套控制电平,使得必须控制的负载按照既定的逻辑运行。

    4.PLL的初始化

    PLL初始化流程图如图2所示。 
    PLL初始化流程图如图2所示 
    根据流程图,大致可以描述PLL的初始化过程为: 
    (1)确保存在OSCCLK,系统能正常工作,即判断PLLSTS[MCLKSTS]==1? 
    (2)改变PLLCR[DIV]前,确保PLLSTS[DIVSEL]==0 
    (3)改变PLLCR[DIV]前,禁用主振荡器故障检测逻辑模块,即PLLCR[MCLKOFF]=1 
    (4)根据需要,改变PLLCR[DIV] 
    (5)判断PLL是否稳定锁定,即PLLSTS[PLLLOCKS]==1? 
    (6)使能主振荡器故障检测逻辑模块,即PLLCR[MCLKOFF]=0 
    (7)根据需要,改变PLLSTS[DIVSEL]

    PLL初始化的代码如下(来自官方例程,主要对其注释分析和讲解)。

    /*
     * 函数名称:InitPll
     * 函数输入:倍频参数val,分频参数divsel
     *            val取值为0到10,表示倍频数;divsel取值0到4,0和1表示4分频,2表示2分频,3表示不分频
     * 函数输出:无
     * 函数调用:InitPll(10,2);
     * 先将外部时钟倍频10倍,在分频1/2,最后产生的时钟CLKIN输入CPU28x
     */
    void InitPll(unsigned short div, unsigned short divsel)
    {
    
       // 确保PLL不是工作在limp mode下,即有外部时钟进入PLL
       if (SysCtrlRegs.PLLSTS.bit.MCLKSTS != 0)
       {
          //检测到无外部时钟,软件要采集恰当的措施保证系统不出现事故,该措施包括
          //使系统停机、复位等
          //用适合的函数替换下面一行
          // SystemShutdown(); function.
          asm("        ESTOP0");
       }
    
       // PLLCR从0x0000改变前,PLLSTS[DIVSEL]必须为0
       // 外部RST复位信号会使PLLSTS[DIVSEL]复位
       // 此时分频为1/4
       if (SysCtrlRegs.PLLSTS.bit.DIVSEL != 0)
       {
           EALLOW;
           SysCtrlRegs.PLLSTS.bit.DIVSEL = 0;
           EDIS;
       }
    
       // 前面条件都满足后,可以改变PLLCR[DIV]
       if (SysCtrlRegs.PLLCR.bit.DIV != val)
       {
    
          EALLOW;
          // 在设置PLLCR[DIV]前,要禁用主振荡器检测逻辑
          //Missing clock detect logic
          SysCtrlRegs.PLLSTS.bit.MCLKOFF = 1;
          SysCtrlRegs.PLLCR.bit.DIV = div;
          EDIS;
    
          //等待PLL稳定且处于锁定状态,即PLLSTS[LOCKS]置位
          //等待稳定的时间可能略长,需要禁用看门狗或者循环喂狗
    
          //屏蔽注释,禁用看门够
          DisableDog();
    
          while(SysCtrlRegs.PLLSTS.bit.PLLLOCKS != 1)
          {
              //屏蔽注释,喂狗
              // ServiceDog();
          }
    
          EALLOW;
          SysCtrlRegs.PLLSTS.bit.MCLKOFF = 0;
          EDIS;
        }
    
        // 如果需要分频1/2
        if((divsel == 1)||(divsel == 2))
        {
            EALLOW;
            SysCtrlRegs.PLLSTS.bit.DIVSEL = divsel;
            EDIS;
        }
    
        //注意:下面代码只有在PLL是旁路或者关闭模式时,才可被执行,其他模式禁止。
        //倍频时一定要分频,不倍频时才允许不分频
        //如果需要切换分频到1/1
        // * 首先从默认1/4分频切换到1/2分频,让电源稳定
        //   稳定所需要的时间依赖于系统运行速度,此处延时50us只是作为一个特例
        // * 稳定后,再切换到1/1
        if(divsel == 3)
        {
            EALLOW;
            SysCtrlRegs.PLLSTS.bit.DIVSEL = 2;
            DELAY_US(50L);
            SysCtrlRegs.PLLSTS.bit.DIVSEL = 3;
            EDIS;
        }
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82

    5.本章小结

    本章介绍OSC和PLL模块,阐述了二种外部时钟输入的操作模式,然后对外部时钟进行倍频分析,即PLL模块,对PLL模块的寄存器和操作进行了详细的分析,最后给出了PLL初始化代码并对代码进行了注释分析。对基本设置特别要强调的是PLL倍频时一定要分频,不倍频时才允许不分频。

    参考文献

    官方资料《TMS320x2833x, 2823x System Control and Interrupts》 
    http://www.ti.com.cn/cn/lit/ug/sprufb0d/sprufb0d.pdf

    0
    展开全文
  • 多核数字信号处理器(DSP)具有丰富的...本文介绍了多核数字信号处理器丁MS320C6678的时钟设计,通过时钟芯片CDCM6208提供多路不同工作频率的时钟信号DSP,文中介绍了时钟芯片的初始化和设置以及详细的软硬件设计方法。
  • DSP28335系统时钟

    2020-11-30 15:16:49
    譬如当30MHz的OSCCLK信号经锁相环倍频后,倍频倍数可通过PLLCR[DIV]设置,可设置为10,经过PLL后的信号变为300MHz,因为28335的时钟频率为150MHz,所以需要将PLLSTS[DIVSEL]设置为2,可得300/2=150MHz时钟信号。...
  • 时钟采集满时钟很好处理,但是当信号处理完成后需要跳转状态机到初始态,状态机是慢时钟跳转状态,而DSP_OVER信号是满时钟,而且频率相差时间较长,因此需要对他进行慢时钟同步。 解决方案如下: clka是快时钟,...
  • DSP时钟与定时器之一时钟发生器

    万次阅读 2012-08-15 09:43:29
    通用定时器、实时时钟及看门狗定时器的功能是通过计数器为系统提供定时时钟和年、月、日、时、分、秒等时钟信号,以及监控系统正常运行的看门狗时钟,并能发出相应中断。  1 . 时钟发生器  1.1 时钟模式...
  • 主频是由时钟信号产生,同时,时钟信号是所有运算能力与处理的源头。DSP28335工作的最高主频为150MHZ,对应的时间为6.67ns。 **一、28335的时钟源** 如图1所示: 图1 时钟与锁相环电路 从上图可以看出,28335的时...
  • 基于BF531 DSP时钟及电源

    千次阅读 2012-02-22 13:45:14
    一、 时钟及锁相环  ADSP-BF531处理器使用来自外部晶体的正弦输入,或...如果使用外部时钟,该时钟信号应是TTL兼容信号,而且正常运行时,此时钟不能停止、改变、或低于指定的频率。 此外部时钟应连到DSP的CLKI
  • DSP28335 时钟、外设及寄存器配置

    千次阅读 2019-05-14 11:53:12
    外部时钟或者外部晶振给F28335提供时钟源OSCCLK,使能F28335片上PLL电路,PLL电路对时钟源信号进行倍频,产生时钟CLKIN,CLKIN通过CPU产生时钟SYSCLKOUT,SYSCLKOUT经过分频可以产生低速时钟LOSPCLK和高速时钟...
  • DSP时钟与定时器之二通用定时器

    万次阅读 2012-08-15 10:20:55
    C55x DSP片内有两个2通用定时器,利用定时器可向CPU产生周期性中断或向DSP片外的器件提供周期信号。其中TMS320VC5503/5507/5509/5510 DSP提供的是2个20位通用定时器. 1 结构框图 20位的定时器由两部分组成:...
  • 为满足宽带侦察接收机对密集雷达信号实时处理的需求,设计一种基于FPGA和多片多核DSP的并行实时信号处理平台,芯片之间通过高速串行总线互联,使用FPGA对多核DSP进行调度。本文从硬件系统架构、电源供给、时钟同步、...
  •  在数字信号处理器的工作过程中有时会发生一些异常情况,这可能是在软件执行时发生错误,如堆栈溢出、内存溢出等软件编写时没有预料到的错误,也可能是DSP在运行时受到外界干扰而使得程序运行不正常,在这些情况下...
  • 摘要:本应用笔记介绍如何对Maxim的DS314xx时钟同步IC进行现场升级,使其接受并锁定至1Hz输入时钟信号。文章探讨了少数情况下对1Hz时钟监测功能及系统软件支持的需求。基于这些考虑,系统利用DS314xx器件构建标准的...
  • 8个辅助寄存器及一个软件栈,允许使用的定点DSP的C语言编译器,内置可编程等待状态发生器、锁相环(PLL)时钟产生器、两个多通道缓冲串行口、一个8位并行与外部处理器通信的HPI口、2个16位定时器以及6通道DMA控制器
  • VPX303 是一款基于 3U ...每个 DSP 均引出 1 路 X4 SRIO 到VPX 背板,板载一片 CPLD 进行电源和时钟复位管理。板载一片STM32 单片机进行总线监控,健康管理。一般应用于雷达与中频信号采集、视频图像采集等场景。 实物
  • 随着电子系统中逻辑和系统时钟频率的迅速提高和信号边沿不断变陡,印刷电路板(PCB)的线迹互连和板层特性对系统电气性能的影响也越发重要。对于低频设计线迹互连和板层的影响可以不考虑;当频率超过50MHz时...
  • 1.将从CLKIN引脚输入的时钟信号变换为适当频率的CPU时钟,提供给CPU、外设和其他模块使用; 2.将CPU时钟通过可编程分频器输出到CLKOUT引脚。 时钟发生器内部有数字锁相环PLL(phaselockring)和时钟模式寄存器(CLKMD...
  • 遵循SDR应用的基带数字信号处理功能,本文提出了一种数据驱动和任务驱动的门控时钟架构。 可以在适当的时候使用此架构打开和关闭多核DSP中的DSP内核。 实验表明,提出的低功耗门控时钟架构可以为SDR平台中的多核DSP...
  • 随着电子系统中逻辑和系统时钟频率的迅速提高和信号边沿不断变陡,印刷电路板(PCB)的线迹互连和板层特性对系统电气性能的影响也越发重要。对于低频设计线迹互连和板层的影响可以不考虑;当频率超过50MHz时...
  • 该信号发生器的硬件设计中TMS3205410和TLC320AD50C的连接采用SPI协议,TLC320AD50C作为SPI主器件,提供帧同步和时钟信号,多通道缓冲串口作为SPI从器件。 该信号发生器的软件编程主要采用模块化的设计思想,把程序...
  • 时钟信号通过一系列配置后决定F28335的CPU工作主频,主频决定着CPU的指令周期(处理一条基本指令所花费的时间),所有的模块都需要用到时钟才能工作,时钟的重要性毋庸置疑,了解时钟是怎么来的非常重要,后续所有的...
  •  TMS320C55X在C54x的基础上发展起来的新一代低功耗、高性能数字信号处理器。  1) 软件具有C54兼容模式。  2) 工作时钟大大超过了C54x系列处理器。  3) CPU内部通过增加功能单元增强了DSP运算能力。  具有更...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 660
精华内容 264
关键字:

dsp时钟信号