Board logo

标题: PLL的怪问题 [打印本页]

作者: jianw007    时间: 2008-5-23 11:45     标题: PLL的怪问题

CLKSEL = 0; /* Select clock source from XTAL and set bits in CLKSEL reg. */

PLLCTL &= 0x40; /* Disable the PLL */

SYNR = 7; /* Set the multiplier register */

REFDV = 3; /* Set the divider register */

PLLCTL = 0x70;
while(!CRGFLG_LOCK) {};

CLKSEL = 0x80; /* Select clock source from PLL */

程序就死在 while(!CRGFLG_LOCK) {};那了,这个是等待时钟同步锁定的.

程序很短没有问题,可能是硬件的原因,可是晶振和PLL都换过。有一块板子可以PLL,有两块板子都不行,用表笔打过,接线也没问题。

想请教一下:

1、哪位以前遇到过这种问题,要怎么解决,或者外围电路怎么改进.

2、CRGFLG_LOCK=1时,时钟同步误差很小,CRGFLG_LOCK=0时,很大.若不等到CRGFLG_LOCK=1,程序有多大影响呢?

非常感谢!


作者: jianw007    时间: 2008-5-23 11:46

siLjS0Xv.jpg


图片附件: [PLL的怪问题] siLjS0Xv.jpg (2008-5-23 11:31, 44.99 KB) / 下载次数 340
http://bbs.eccn.com/attachment.php?aid=4328&k=17a0a2f7a54a65d013aecd659d3d1402&t=1728202130&sid=JrjJj9


作者: 康桥人    时间: 2008-5-23 12:21

你的外部晶振接的是多少?如果不等到CRGFLG_LOCK=1,有可能PLL没有起作用的,还有你的PLL的总路线时钟是多少?


作者: kingcathy    时间: 2008-5-23 12:26

PLLCTL &= 0x40; /* Disable the PLL */这句并没有把PLLON清零,换成这句试试看:PLLCTL_PLLON = 0; ///* Disable the PLL */


作者: jianw007    时间: 2008-5-23 18:07

多谢楼上两位!

还是不行啊,外部晶振16M,PLL的总路线时钟64M,需要总线倍到32M


作者: 康桥人    时间: 2008-5-23 18:46

S12的标准频率是25M,是是超频带到24M试,
作者: jianw007    时间: 2008-5-24 22:59

小康,超到16M都不行......


作者: kingcathy    时间: 2008-5-25 18:54

试了我说的将这句PLLCTL &= 0x40; 改写吗??
作者: jianw007    时间: 2008-5-29 15:59

改过了,不行....

什么原因呢?


作者: strongchen    时间: 2008-5-29 17:05

注意晶振有两种不同的接法,要与寄存器的设置相对应。




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