智能车制作

标题: 锁相环计算 [打印本页]

作者: 572013615    时间: 2016-3-20 16:09
标题: 锁相环计算
像锁相环的这种计算是怎么具体算出来的
void PLL_Init(void) {

    CLKSEL=0X00;                                                //disengage PLL to system
    PLLCTL_PLLON=1;                                        //turn on PLL
    SYNR =0xc0 | 0x09;                        
    REFDV=0x80 | 0x01;
    POSTDIV=0x00;                       //pllclock=2*osc*(1+SYNR)/(1+REFDV)=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;

}  

PKKCLOCK的数值具体是怎么出来的,怎么乘出160的。。。

作者: turf456    时间: 2016-3-20 23:05
后面公式都有,还有哪里不明白?
作者: 572013615    时间: 2016-3-27 21:41
turf456 发表于 2016-3-20 23:05
后面公式都有,还有哪里不明白?

额,就是根据公式算不出来,那些什么80,32,可奇怪了
作者: turf456    时间: 2016-3-28 18:26
80 32?咋得出来的
作者: 想飞的猪    时间: 2016-3-29 12:34
pllclock=2*osc*(1+SYNR)/(1+REFDV)=160MHz;这一句中的  osc==16M(128),SYNR就是“SYNR =0xc0 | 0x09;  ”中的0x09,REFDV就是 “  REFDV=0x80 | 0x01; ”中的0x01,“|”前面的东西是PLL寄存器 不改的话 你就不用管 所以 pll clock ==2*16*(1+9)/(1+1)==160M,bus clock 为pll clock的一半
作者: 572013615    时间: 2016-3-29 16:47
想飞的猪 发表于 2016-3-29 12:34
pllclock=2*osc*(1+SYNR)/(1+REFDV)=160MHz;这一句中的  osc==16M(128),SYNR就是“SYNR =0xc0 | 0x09;   ...

谢谢啦~~~

作者: 想飞的猪    时间: 2016-3-31 11:15
572013615 发表于 2016-3-29 16:47
谢谢啦~~~

哈哈 同样是小白 互相支持吧





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