首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

PLL的怪问题

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,程序有多大影响呢?

非常感谢!

siLjS0Xv.jpg

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

个人BLOG:http://blog.eccn.com/u/107300/index.htm

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

多谢楼上两位!

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

S12的标准频率是25M,是是超频带到24M试,
个人BLOG:http://blog.eccn.com/u/107300/index.htm

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

试了我说的将这句PLLCTL &= 0x40; 改写吗??

改过了,不行....

什么原因呢?

注意晶振有两种不同的接法,要与寄存器的设置相对应。
海纳百川  有容乃大
返回列表