金牌会员
- 积分
- 1532
- 威望
- 708
- 贡献
- 426
- 兑换币
- 22
- 注册时间
- 2010-5-8
- 在线时间
- 199 小时
|
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;
}
好了,个人意见发表完毕,有错误的请更正,别扔砖头哈
砖头我自己仍就行了 |
|