智能车制作

标题: xs128的锁相环设置 [打印本页]

作者: 倾城☆北辰★强    时间: 2013-11-23 17:47
标题: xs128的锁相环设置
void SetBusClock(void)
{   
                              //函数作用:设置总线时钟

    CLKSEL=0X00;                              //disengage PLL to system
    PLLCTL_PLLON=1;                           //turn on PLL
    SYNR =0xc0 | 0x09;     // Fvco=2*osc*(1+SYNRDIV)/(1+REFDIV)   c0=11000000   09= 00001001  11001001
                           //Fpll=Fvco/(2*POSTDIV) Fbus=Fpll/2     80=10000000  01=00000001   10000001
    REFDV=0x80 | 0x01;
    POSTDIV=0x00;              //pllclock=2*osc*(1+SYNRDIV)/(1+REFDIV)=160MHz;
    _asm(nop);                 //BUS CLOCK=80M
    _asm(nop);
    while(!(CRGFLG_LOCK==1));         //when pll is steady ,then use it;
    CLKSEL_PLLSEL =1;                       //engage PLL to system;
    PLLCTL_PCE=1;  
             
} 程序里面的160M怎么计算出来的


作者: feichelong    时间: 2013-11-23 18:01
有同样的疑问?
作者: A紫晶    时间: 2013-11-23 18:02
好清楚的公式....
作者: 倾城☆北辰★强    时间: 2013-11-23 18:22
A紫晶 发表于 2013-11-23 18:02
好清楚的公式....

根据公式pllclock=2*osc*(1+SYNRDIV)/(1+REFDIV)
SYNR= SYNR =0xc0 | 0x09; REFDV=0x80 | 0x01; 那么算出来的应该是SYNR=OXC9;REFDV=OX81;
需要化成十进制计算还是??求教

作者: rubick    时间: 2013-11-23 19:10
倾城☆北辰★强 发表于 2013-11-23 18:22
根据公式pllclock=2*osc*(1+SYNRDIV)/(1+REFDIV)
SYNR= SYNR =0xc0 | 0x09; REFDV=0x80 | 0x01; 那么算出 ...

任何进制下计算的结构都是一样的。

作者: 倾城☆北辰★强    时间: 2013-11-23 19:27
rubick 发表于 2013-11-23 19:10
任何进制下计算的结构都是一样的。

我用十进制计算的话SYNR=OXC9=十进制的201;REFDV=OX81=129
这样算的话pllclock=2*16*(1+201)/(1+129)=49.7230.。。。这样算对不?


作者: caixianneng    时间: 2013-11-23 22:34
这个。。。。
作者: 小杨木叶    时间: 2013-11-23 23:01
公式说的很清楚,就是160MHZ
作者: 什么你说    时间: 2013-11-24 00:13
倾城☆北辰★强 发表于 2013-11-23 19:27
我用十进制计算的话SYNR=OXC9=十进制的201;REFDV=OX81=129
这样算的话pllclock=2*16*(1+201)/(1+129)=49 ...

公式里是REFDIV哦!
作者: 倾城☆北辰★强    时间: 2013-11-24 08:56
什么你说 发表于 2013-11-24 00:13
公式里是REFDIV哦!

REFDIV和REFDV是什么关系啊??

作者: 倾城☆北辰★强    时间: 2013-11-24 08:58
小杨木叶 发表于 2013-11-23 23:01
公式说的很清楚,就是160MHZ

我想知道具体怎么计算出来的,公式对应的值是多少

作者: 倾城☆北辰★强    时间: 2013-11-24 08:58
caixianneng 发表于 2013-11-23 22:34
这个。。。。

这个会不,求教啊

作者: 小杨木叶    时间: 2013-11-24 10:14
倾城☆北辰★强 发表于 2013-11-24 08:58
我想知道具体怎么计算出来的,公式对应的值是多少

在设定PLL陪频时,寄存器SYNR的低五位时有效的,寄存器REVDV也是低五位有效。而外部晶振是16MHZ,所以160MHZ=2*16*(9+1)/(1+1)   OK!

作者: update    时间: 2013-11-24 10:49
这个里面SYNR和REFDV两个寄存器的最高两位,是用来设置频率范围的,有计算的时候是取前六位,数据手册上讲的很清楚
作者: 倾城☆北辰★强    时间: 2013-11-24 11:41
小杨木叶 发表于 2013-11-24 10:14
在设定PLL陪频时,寄存器SYNR的低五位时有效的,寄存器REVDV也是低五位有效。而外部晶振是16MHZ,所以160 ...

ok!谢谢啊

作者: 倾城☆北辰★强    时间: 2013-11-24 11:41
update 发表于 2013-11-24 10:49
这个里面SYNR和REFDV两个寄存器的最高两位,是用来设置频率范围的,有计算的时候是取前六位,数据手册上讲的 ...

嗯嗯,知道了,谢谢

作者: ludlee    时间: 2013-11-24 11:52
倾城☆北辰★强 发表于 2013-11-23 19:27
我用十进制计算的话SYNR=OXC9=十进制的201;REFDV=OX81=129
这样算的话pllclock=2*16*(1+201)/(1+129)=49 ...

不对,记得高位算是频率段选项,低位是基数

作者: ludlee    时间: 2013-11-24 11:53
ludlee 发表于 2013-11-24 11:52
不对,记得高位算是频率段选项,低位是基数

2*16*(9+1)/(1+1)

作者: ludlee    时间: 2013-11-24 11:54
倾城☆北辰★强 发表于 2013-11-24 08:58
我想知道具体怎么计算出来的,公式对应的值是多少

2*16*(9+1)/(1+1)

作者: anyangyuxin    时间: 2013-11-24 13:30

作者: rubick    时间: 2013-11-24 21:36
倾城☆北辰★强 发表于 2013-11-23 19:27
我用十进制计算的话SYNR=OXC9=十进制的201;REFDV=OX81=129
这样算的话pllclock=2*16*(1+201)/(1+129)=49 ...

计算结果跟进制完全没有关系,
例如(。。。)这么多个句号,加上,(。。。。)这么多个句号,
一定等于(。。。。。。。)这么多个句号。
用十进制写就是3+4==7
用二进制写就是11+100=111

作者: 什么你说    时间: 2013-11-30 14:21
倾城☆北辰★强 发表于 2013-11-24 08:56
REFDIV和REFDV是什么关系啊??

这是看的参考手册,很清楚的。
作者: 坚持是一种品位    时间: 2013-11-30 14:54





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