智能车制作

标题: 跪求高手指导PLL模块 [打印本页]

作者: shineamnys    时间: 2010-7-14 19:28
标题: 跪求高手指导PLL模块
本人接触智能车不久,前面写的代码中,都涉及到了PLL锁相环超频,每次都是照搬别人的代码。今天想把这个模块搞清楚,网上搜了一下发现几乎没有具体的教程介绍PLL模块,现在求大牛指导是否有好的学习资料~
作者: GhostStalker    时间: 2010-7-15 10:53
... 刚开始以为这个帖子 审核很久了呢... 呵呵
关键的公式 DataSheet里 239页  CRG寄存器 一章都有
主要 配置 SYNR REFDV POSTDIV 寄存器 根据公式算出来就行了 然后等待 CRGFLG_LOCK置位使PLL稳定   再在CLKSEL选择PLL  使能输出 一般就行了...   超频 没试过 我们一般弄到80M核心 40M总线 看有的弄到80M的 总线 真不知道怎么弄的~
作者: fanfankaka123    时间: 2010-10-7 13:22
同求指导,头都晕了。
作者: harry1874    时间: 2010-10-17 15:33
在网上找的一份关于锁相环的资料,很容易明白   

什么是锁相环呢?
              MCU的支撑电路一般需要外部时钟来给MCU提供时钟信号,而外部时钟的频率可能偏低,为了使系统更加快速稳定运行,需要提升系统所需要的时钟频率。这就得用到锁相环了。例如MCU用的外部晶振是16M的无源晶振,则可以通过锁相环PLL把系统时钟倍频到24M,从而给系统提供更高的时钟信号,提高程序的运行速度。 51单片机,AVR单片机内部没有锁相环电路,其系统时钟直接由外部晶振提供。而XS128内部集成了锁相环电路,其系统时钟既可由外部晶振直接提供,也可以通过锁相环倍频后提供,当然,还有由XS128内部的时钟电路来提供(当其它来源提供的系统时钟不稳定时,内部时钟电路就起作用了,也就是自时钟模式)。
              锁相环作为一个提供系统时钟的模块,是一个基本的模块,几乎每次编程序都得用到。下面记一下怎样配置锁相环来设定想要的系统时钟。
              锁相环PLL、自时钟模式和前面说的实时中断RTI、看门狗COP都属于系统时钟与复位CRG中的模块,固前面用到的寄存器,这里有些会再用到。
              在程序中配置锁相环的步骤如下:
              第一、禁止总中断;
              第二、寄存器CLKSEL的第七位置0,即CLKSEL_PLLSEL=0。选择时钟源为外部晶振OSCCLK,在PLL程序执行前,内部总线频率为OSCCLK/2。
              CLKSEL_PLLSEL=0时,系统时钟由外部晶振直接提供,系统内部总线频率=OSCCLK/2(OSCCLK为外部晶振频率)。CLKSEL_PLLSEL=1时,系统时钟由锁相环提供,此时系统内部总线频率=PLLCLK/2 (PLLCLK为锁相环倍频后的频率)。
              第三、禁止锁相环PLL,即PLLCTL_PLLON=0。
              当PLLCTL_PLLON=0时,关闭PLL电路。当PLLCTL_PLLON=1时,打开PLL电路。
               第四、根据想要的时钟频率设置SYNR和REFDV两个寄存器。
                SYNR和REFDV两个寄存器专用于锁相环时钟PLLCLK的频率计算,计算公式是:
                                             PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)
其中,PLLCLK为PLL模块输出的时钟频率;OSCCLK为晶振频率;SYNR、REFDV分别为寄存器SYNR、REFDV中的值。这两个寄存器只有在PLLSEL=0时才能够写入(这里就是第二步的设置原因所在了)。
                第五、打开PLL,即PLLCTL_PLLON=1。
                第六、CRGFLG_LOCK位,确定PLL是否稳定。
                 当锁相环PLL电路输出的频率达到目标频率的足够小的误差范围内时,LOCK位置1,此时说明PLLCLK已经稳定,可以作为系统的时钟了。该位在正常情况下为只读位。
                  第七、PLLCLK稳定后,允许锁相环时钟源PLLCLK为系统提供时钟,即CLKSEL_PLLSEL=1。
                 到这里,锁相环的设置就完毕了。
               如果想更灵活地配置系统时钟,就还得用到下面的寄存器了,下面逐一说说:
               1、CRGFLG_LOCKIF 锁相环的中断标志位。当系统时钟因为稳定或不稳定而导致LOCK位(上面已提到)变化时,该位置1。此时,如果CRGINT_LOCKIE=1,则产生中断。CRGINT_LOCKIE=1时,则允许产生锁相环锁定中断。CRGINT_LOCKIE=0时,则不允许。
              2、CLKSEL_PLLWAI是等待模式PLL停止位。当CLKSEL_PLLWAI=1时,系统进入等待模式时,锁相环PLL停止工作。当CLKSEL_PLLWAI=0时,系统进入等待模式时,锁相环PLL仍然工作。
             下面顺便说一下与自时钟模式相关的几个寄存器:
              CRGFLG_SCMIF 自时钟模式中断标志位。当SCM位变化时,该位置1。此时,如果CRGINT_SCMIE=1,则产生中断。
               CRGFLG_SCM     自时钟模式状态位。当晶振频率不稳定时,该位置1,系统会进入自时钟模式,系统的时钟将由自时钟模式下的时钟提供。
               CRGINT_SCMIE 自时钟模式中断的使能位。当CRGINT_SCMIE=1时,允许产生自时钟模式中断。当CRGINT_SCMIE=0时,不能产生自时钟模式中断。
              PLLCTL_SCME 自时钟模式使能位。在自时钟模式下,该位不能被清0。PLLCTL_SCME=1时,晶振时钟失灵系统将强制进入自时钟模式。当PLLCTL_SCME=0时,晶振失灵将导致时钟监控器复位。
               下面附一条锁相环的初始化程序;
void MCUInit()
{
       DISABLE_INTERRUPTS;              //(1)禁止总中断
        CLKSEL &= 0x7f;                 //(2)CLKSEL的第7位置0,选择系统时钟源为OSCCLK
       PLLCTL &= 0xbf;                 // (3)禁止PLL   ,   PLLCTL.6(pllon)设为0;先关闭PLL
        SYNR = 0x01;                   //(4)根据需要的时钟频率设置SYNR和REFDV寄存器
        REFDV = 0x00;               
       PLLCTL |= (1<<6);             //(5)打开PLL     , PLLCTL.6(pllon)设为1;开PLL
       while (( CRGFLG&0x08) == 0x00);           //(6)通过判断LOCK位,
                                                                               //确定PLL是否稳定
       CLKSEL |= (1<<7);           //(7)时钟频率稳定后,允许锁相环时钟源作为系统时钟源;
                                                            //本句 执行后:BusClock=PLLCLK/2
    }
作者: 妮妮轰轰    时间: 2010-11-4 17:50
楼上的 太感激你了
作者: 吴与伦比    时间: 2010-11-13 12:10
非常感谢!!!
作者: guozhili    时间: 2010-11-14 22:09
...再次学习了
作者: zhangjiarui    时间: 2010-11-16 16:13
学习
作者: 梧桐1209    时间: 2010-11-28 10:43
回复 4# harry1874


   分析的很透彻,很容易接受, 多谢指导哈。
作者: Sheryl_1    时间: 2010-12-9 15:10
xuexile
作者: 李子yue    时间: 2010-12-11 10:01
楼上的你太帅了
呵呵
作者: fanfankaka123    时间: 2010-12-12 12:00
感谢
作者: 张合富    时间: 2011-1-1 18:04

作者: meijj1990    时间: 2011-1-17 16:38
本帖最后由 meijj1990 于 2011-1-17 16:39 编辑

学习
作者: meijj1990    时间: 2011-1-17 16:41
回复 4# harry1874


    请问SYNR 和 REFDV是不是SYNR只取低6位,REFDV只取低4位?
作者: tutufanfan    时间: 2011-1-18 16:00
非常感谢!!!
作者: 147leslie    时间: 2011-2-6 16:07

作者: lzsxtree    时间: 2011-2-7 01:01
多谢四楼分享
作者: 星梦追影    时间: 2011-2-10 14:56
很好,感谢!
作者: chen90sky    时间: 2011-2-14 22:58
回复 4# harry1874


    呵呵,受益匪浅。不过有点好奇锁相环是怎么做到让MCU中主频比晶振频率高的,能简单解释一下吗?我是初学者,不很懂这个~
作者: 似曾相识    时间: 2011-2-20 09:06
多谢指导
作者: mingfengzhige    时间: 2011-2-21 00:12
还没看……但有点小激动……
作者: kui13575728208    时间: 2011-2-21 10:25
学习了
作者: hlqz2010    时间: 2011-3-15 20:50
4#的太有才了~~~
作者: zouzhiting35    时间: 2011-3-17 13:44
3q
作者: feidegenggaojc    时间: 2011-3-20 18:51
必须顶啊!
作者: 诗雨依然    时间: 2011-4-27 09:43
又学习了。。。3Q
作者: chunfenghuayu    时间: 2011-5-9 09:19
好东西,很需要啊
作者: 枫007    时间: 2011-10-10 16:24
顶一下
作者: 飞思卡尔835    时间: 2011-10-12 21:42
好东西呀
作者: longcha    时间: 2011-10-22 14:25
学习了!!
作者: longcha    时间: 2011-10-22 14:25
学习了!!
作者: vkort    时间: 2012-1-6 13:32

作者: 木头    时间: 2012-1-7 10:39
学习啊!
作者: 月光疾風    时间: 2012-2-3 14:51
harry1874 发表于 2010-10-17 15:33
在网上找的一份关于锁相环的资料,很容易明白   

什么是锁相环呢?

很好,很详细,学习了~~
作者: yzf    时间: 2012-2-3 19:46
飘过
作者: Stillycx    时间: 2012-2-8 18:23
harry1874 发表于 2010-10-17 15:33
在网上找的一份关于锁相环的资料,很容易明白   

什么是锁相环呢?

能不能把具体的网址发给我?
作者: 波涛澎湃    时间: 2012-2-9 16:15
算是领教了!
作者: longli    时间: 2012-2-21 23:28
好东西  收藏
作者: StearArre    时间: 2012-3-2 16:04
meijj1990 发表于 2011-1-17 16:41
回复 4# harry1874

SYNR 和REFDV都是低6 位来设定所要超的频率,其高2 位是根据你要超的频率来配置,通
过合理的配置VCOFRQ,REFFRQ 来提高系统时钟稳定性
作者: 飞越太平洋    时间: 2012-3-24 16:15
好贴
作者: 飞越太平洋    时间: 2012-3-24 16:18
harry1874 发表于 2010-10-17 15:33
在网上找的一份关于锁相环的资料,很容易明白   

什么是锁相环呢?

你好。请问如果不用PLL锁相环,用16M的晶振,xs128的内部时钟是不是就是16/2=8M了?
作者: 馨凌紫瑗    时间: 2012-3-24 17:56
谢谢啦
作者: ljl1033835624    时间: 2012-3-24 20:31
受教了!!!
作者: wacsysys    时间: 2012-4-26 21:19
学习
作者: 迷失的人    时间: 2012-5-3 14:28

作者: lingdongwoxin    时间: 2012-5-17 17:04
学习 学习
作者: fly扬    时间: 2012-5-21 21:31
太感谢了,大哥
作者: 早安,徐威    时间: 2012-11-27 10:47
4楼帅死了
作者: Howland_Z    时间: 2012-11-27 11:31

作者: 得到伱_失呿世界    时间: 2013-1-6 20:06
学习了
作者: 萧逸    时间: 2013-1-26 08:28

作者: 飞鸿印雪    时间: 2013-2-27 16:27
有用  学习了
作者: 烽魔渣中渣    时间: 2013-11-16 09:45
harry1874 发表于 2010-10-17 15:33
在网上找的一份关于锁相环的资料,很容易明白   

什么是锁相环呢?

3Q

作者: mlhmxhabc    时间: 2013-11-17 10:28
谢谢谢谢谢谢
作者: 后天发货    时间: 2016-5-16 10:26
谢谢楼上!!
作者: cause    时间: 2017-2-16 14:47
harry1874 发表于 2010-10-17 15:33
在网上找的一份关于锁相环的资料,很容易明白   

什么是锁相环呢?

太6了

作者: znjqr    时间: 2017-2-17 12:14
回复 4# harry1874




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2