智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 19771|回复: 57
打印 上一主题 下一主题

跪求高手指导PLL模块

  [复制链接]

7

主题

24

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
386
威望
279
贡献
55
兑换币
16
注册时间
2010-5-18
在线时间
26 小时
跳转到指定楼层
1#
发表于 2010-7-14 19:28:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人接触智能车不久,前面写的代码中,都涉及到了PLL锁相环超频,每次都是照搬别人的代码。今天想把这个模块搞清楚,网上搜了一下发现几乎没有具体的教程介绍PLL模块,现在求大牛指导是否有好的学习资料~

2

主题

31

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
345
QQ
威望
259
贡献
46
兑换币
0
注册时间
2010-4-11
在线时间
20 小时
2#
发表于 2010-7-15 10:53:45 | 只看该作者
... 刚开始以为这个帖子 审核很久了呢... 呵呵
关键的公式 DataSheet里 239页  CRG寄存器 一章都有
主要 配置 SYNR REFDV POSTDIV 寄存器 根据公式算出来就行了 然后等待 CRGFLG_LOCK置位使PLL稳定   再在CLKSEL选择PLL  使能输出 一般就行了...   超频 没试过 我们一般弄到80M核心 40M总线 看有的弄到80M的 总线 真不知道怎么弄的~
回复 支持 反对

使用道具 举报

12

主题

110

帖子

0

精华

高级会员

Rank: 4

积分
661
威望
354
贡献
95
兑换币
4
注册时间
2010-9-29
在线时间
106 小时
3#
发表于 2010-10-7 13:22:44 | 只看该作者
同求指导,头都晕了。
回复 支持 反对

使用道具 举报

3

主题

52

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
397
威望
283
贡献
56
兑换币
2
注册时间
2010-10-6
在线时间
29 小时
4#
发表于 2010-10-17 15:33:50 | 只看该作者
在网上找的一份关于锁相环的资料,很容易明白   

什么是锁相环呢?
              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
    }
回复 支持 反对

使用道具 举报

5

主题

72

帖子

0

精华

高级会员

Rank: 4

积分
868
QQ
威望
504
贡献
142
兑换币
2
注册时间
2010-5-4
在线时间
111 小时
5#
发表于 2010-11-4 17:50:10 | 只看该作者
楼上的 太感激你了
回复 支持 反对

使用道具 举报

1

主题

98

帖子

0

精华

高级会员

Rank: 4

积分
699
威望
342
贡献
99
兑换币
0
注册时间
2010-6-30
在线时间
129 小时
6#
发表于 2010-11-13 12:10:57 | 只看该作者
非常感谢!!!
回复 支持 反对

使用道具 举报

0

主题

10

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
218
威望
180
贡献
36
兑换币
0
注册时间
2010-11-14
在线时间
1 小时
7#
发表于 2010-11-14 22:09:29 | 只看该作者
...再次学习了
回复 支持 反对

使用道具 举报

2

主题

203

帖子

0

精华

高级会员

Rank: 4

积分
741
QQ
威望
434
贡献
249
兑换币
0
注册时间
2010-11-1
在线时间
29 小时
8#
发表于 2010-11-16 16:13:53 | 只看该作者
学习
回复 支持 反对

使用道具 举报

4

主题

114

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1487
威望
360
贡献
1085
兑换币
0
注册时间
2010-7-24
在线时间
21 小时
9#
发表于 2010-11-28 10:43:14 | 只看该作者
回复 4# harry1874


   分析的很透彻,很容易接受, 多谢指导哈。
回复 支持 反对

使用道具 举报

2

主题

6

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
286
威望
233
贡献
39
兑换币
0
注册时间
2010-10-30
在线时间
7 小时
10#
发表于 2010-12-9 15:10:33 | 只看该作者
xuexile
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-26 15:31 , Processed in 0.050501 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表