Board logo

标题: 如下S12X的PLL设置是否正确? [打印本页]

作者: liulx    时间: 2009-8-12 17:01     标题: 如下S12X的PLL设置是否正确?

main()函数中依此执行如下PLL设置命令:

DisableInterrupts ;
CLKSEL &= 0x7f;//set OSCCLK as sysclk
PLLCTL =PLLCTL&0x8F;//Disable PLL circuit
CRGINT &= 0xDF;
SYNR=3; //PLLCLK=2*16M*(1+SYNR)/(1+REFDV)
REFDV=3;
PLLCTL |= 0x70;//Enable PLL circuit
while(!(CRGFLG&0x08)); //PLLCLK is Locked already?
CLKSEL |= 0x80;//set PLLCLK as sysclk

硬件上已经将Vregen上拉,因此VDDPLL使用内部2.5V供电(已测电压正常),外接电容阻分别为0.47nF,4.7K,5nF(稳定度28ppm,抑制1.21),分频值SYNR=3,REFDV=3,外接16M晶振(22pf),并将PE7上拉。

现在情况是 while(!(CRGFLG&0x08)); //PLLCLK is Locked already? 无法跳出,即LOCK始终为0,不能正常锁住该倍频时钟。

有接触这方面的XDJM帮忙指点问题出在什么地方。

[此贴子已经被作者于2009-8-12 17:01:00编辑过]


作者: chiusir    时间: 2009-8-15 23:15

没头没尾的,什么芯片啊?
作者: slyang1314    时间: 2009-8-20 16:17

没见过你说的情况,过几天我也要调板子,看我的成不成。程序大家都差不多的。


作者: whc1223    时间: 2009-11-19 11:34

3# slyang1314
  void Set_PLL(void)              //初始化PLL子程序,总线时钟为PLL的2分频
{
   
   SYNR=0x02;
   REFDV=0x01;
   while (!(CRGFLG & 0x08));     //等待时钟频率已稳定锁相环频率已锁定
   CLKSEL_PLLSEL=1;              //选定所相环时钟
作者: qnbs1    时间: 2010-3-1 18:50

晶振是外部加入的时钟,系统内部有个锁相环可以倍频你的晶振频率。
倍数由SYNR和REFDV寄存器的值来控制


根据公式PLLCLK = 2 x OSCCLK x [SYNR + 1]/[REFDV + 1]
PLLCLK(锁相环频率)
OSCCLK(振荡器频率,即你的晶振)


而BUS CLOCK是由PLLCLK二分频得到的,即BUS CLOCK = PLLCLK/2

当你选择倍频时(PLLSEL=1),你的系统频率是等于锁相环频率(PLLCLK),

当你不选择倍频时(PLLSEL=0),你的系统频率是等于振荡器频率(OSCCLK),而你的总线频率(Bus Clock)是始终等于你系统频率的1/2




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0