智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 11701|回复: 39
打印 上一主题 下一主题

谈谈个人对XS128上锁相环、频率的一些见解,抛砖引玉

  [复制链接]

12

主题

328

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1532
QQ
威望
708
贡献
426
兑换币
22
注册时间
2010-5-8
在线时间
199 小时
跳转到指定楼层
1#
发表于 2010-10-29 12:33:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
OSC、FOSC、OSCCLK:我认为这三者一样,是振荡器频率,即是我们外加晶振频率

SYNR 时钟合成寄存器
VCOFRQ[7:6]:不知道,跪求高人解答!!!
SYNDIV[5:0]:不知道,跪求高人解答!!!

REFDV时钟分频寄存器
REFFRQ[7:6]:不知道,跪求高人解答
REFDIV[5:0]:不知道,跪求高人解答

FVCO:应该是系统频率(有错请更正)

FPLL、PLLCLK:我认为是一样的,即锁相环频率

FBUS、Bus Clock:我认为是一样的,即总线频率

POSTDIV:貌似是分频控制,应该是控制FVCO和PLLCLK的分频比,一般设置为0,这时FPLL= FVCO/1=FVCO

初步设想:
1、FVCO= 2*FOSC*(SYNDIV + 1)/(REFDIV + 1),我认为OSC、FOSC、OSCCLK都是一样的,即晶振频率
2、FPLL= FVCO/(2 × POSTDIV),FPLL应该和PLLCLK一样,都是锁相环频率,POSTDIV等于0时默认为分子为1,即FPLL= FVCO/1=FVCO
3、FBUS= FPLL/2,FBUS为总线时钟频率

所以综合起来就有:FBUS=[2*FOSC*(SYNDIV + 1)/(REFDIV + 1)]/2=FOSC*(SYNDIV + 1)/(REFDIV + 1)


再看看龙丘80MHz的超频源代码
void SetBusCLK_80M(void)
{  
    CLKSEL=0X00;     //disengage PLL to system
    PLLCTL_PLLON=1;    //开启锁相环
    SYNR =0xC0 | 0x09;  //我理解,SYNR只是低6位有效,所以经过运算后SYNR=9                    
    REFDV=0x80 | 0x01; //我理解,REFDV只是低4位有效,所以经过运算后REFDV=1
    POSTDIV=0x00;       //POSTDIV=0x00=0,则FPLL=FVCO=PLLCLK,所以PLLCLK=FVCO=2*16*(1+9)/(1+1)=160MHz;
    _asm(nop);          //所以总线时钟BUS CLOCK=PLLCLK/2=80MHz
    _asm(nop);
    while(!(CRGFLG_LOCK==1));   //when pll is steady ,then use it;
    CLKSEL_PLLSEL =1;           //engage PLL to system;
}

好了,个人意见发表完毕,有错误的请更正,别扔砖头哈

砖头我自己仍就行了

16

主题

192

帖子

1

精华

常驻嘉宾

船长

Rank: 8Rank: 8

积分
3238
QQ
威望
616
贡献
1930
兑换币
159
注册时间
2008-12-13
在线时间
346 小时
2#
发表于 2010-10-29 13:32:22 | 只看该作者
本帖最后由 小当 于 2010-10-29 13:47 编辑

synr和refdv都是低6位来设定所要超的频率,其高2位是根据你要超的频率来配置,通过合理的配置VCOFRQ,REFFRQ来提高系统时钟稳定性。具体可以看DATASHEET,如下图:Page239Page240

SYNR =0xC0 | 0x09;  //VCOFRQ[7:6]=0b11;SYNDIV[5:0]=0b001001              
REFDV=0x80 | 0x01; //REFFRQ[7:6]=0b10;REFDIV[5:0]=0b000001   
如:fREF=fOSC/(REFDIV + 1)=16/(1+1)=8;所以6MHz < fREF <= 12MHz   REFFRQ[7:6]为10
明白了吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

12

主题

328

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1532
QQ
威望
708
贡献
426
兑换币
22
注册时间
2010-5-8
在线时间
199 小时
3#
 楼主| 发表于 2010-10-29 15:34:33 | 只看该作者
回复 2# 小当


不好意思,由于英文文档看不太明白,再次问些问题:

1、你刚才说“如:fREF=fOSC/(REFDIV + 1)=16/(1+1)=8;所以6MHz < fREF <= 12MHz   REFFRQ[7:6]为10
明白了吗”,我纳闷fREF和我想要超到的频率有什么关系呢

2、你还说“synr和refdv都是低6位来设定所要超的频率,其高2位是根据你要超的频率来配置,通过合理的配置VCOFRQ,REFFRQ来提高系统时钟稳定性”,麻烦解释下VCOFRQ、REFFRQ和系统稳定性的关系,以及怎么样设置VCOFRQ,REFFRQ提高系统稳定性!


谢谢了
回复 支持 反对

使用道具 举报

16

主题

192

帖子

1

精华

常驻嘉宾

船长

Rank: 8Rank: 8

积分
3238
QQ
威望
616
贡献
1930
兑换币
159
注册时间
2008-12-13
在线时间
346 小时
4#
发表于 2010-10-29 21:15:39 | 只看该作者
回复 3# lsa4100


    再多的解释也比不过自己把DATASHEET看明白,去官网下,所在的页码我已经告诉你了。
回复 支持 反对

使用道具 举报

0

主题

33

帖子

0

精华

高级会员

Rank: 4

积分
666
威望
437
贡献
167
兑换币
9
注册时间
2010-9-3
在线时间
31 小时
5#
发表于 2011-2-10 21:07:20 | 只看该作者
明白了,谢谢二楼,谢谢楼主。
回复 支持 反对

使用道具 举报

12

主题

328

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1532
QQ
威望
708
贡献
426
兑换币
22
注册时间
2010-5-8
在线时间
199 小时
6#
 楼主| 发表于 2011-3-6 13:35:53 | 只看该作者
回复 5# vgonlan


   


  共同学习
回复 支持 反对

使用道具 举报

10

主题

393

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2616
威望
1303
贡献
589
兑换币
39
注册时间
2011-3-19
在线时间
362 小时
7#
发表于 2011-3-21 15:36:25 | 只看该作者
啊,谢谢啦
回复 支持 反对

使用道具 举报

15

主题

362

帖子

1

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4726
QQ
威望
1564
贡献
2808
兑换币
497
注册时间
2010-12-28
在线时间
177 小时
8#
发表于 2011-3-23 20:07:38 | 只看该作者
很容易看明白的,例如VCOFRQ[7:6]——表示XXXX寄存器中的高2位7,6,代表VCOFRQ功能设置的数据;SYNDIV[5:0]——表示XXXX寄存器中的低6位5,4,3,2,1,0,代表SYNDIV功能的设置参数。几乎所有厂家单片机的说明都是这样标示的。
回复 支持 反对

使用道具 举报

12

主题

328

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1532
QQ
威望
708
贡献
426
兑换币
22
注册时间
2010-5-8
在线时间
199 小时
9#
 楼主| 发表于 2011-3-26 16:13:59 | 只看该作者
回复 8# zhjb1


    谢谢  我自己再体会下
回复 支持 反对

使用道具 举报

6

主题

59

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
346
威望
256
贡献
24
兑换币
0
注册时间
2011-3-6
在线时间
33 小时
10#
发表于 2011-4-1 13:13:59 | 只看该作者
终于明白啦。。。谢谢大家
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-29 16:57 , Processed in 0.167053 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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