Board logo

标题: [求助]XD256时钟信号问题求助 [打印本页]

作者: wangnan16    时间: 2009-6-22 13:21     标题: [求助]XD256时钟信号问题求助

统一个PCB文件生产出两个板,烧写同样的程序,其中一块正常运行A板,另一块则无法正常运行B板。采用10M外部有源晶振输入,设置了clkout 4分频输出,PLL设置倍频为24M。用示波器观察发现B板的clkout引脚输出为1.25MHz,A板clkout为6MHz。显然有B板的PLL没有工作。连BDM查看,发现程序运行到

while(!CRGFLG_LOCK) ; /* Wait until the PLL is within the desired tolerance of the target frequency */

时无法跳出此循环,也就是说应该是自检时钟输入信号没通过。

但是看我附件附上用示波器测量两块板的时钟信号,几乎完全一样啊!!!请高人指点一二!!!

8mypmpgC.jpg


图片附件: [[求助]XD256时钟信号问题求助] 8mypmpgC.jpg (2009-6-22 12:55, 446.97 KB) / 下载次数 281
http://bbs.eccn.com/attachment.php?aid=6992&k=64d01653c30408d71b43b907fb10f426&t=1732488461&sid=p5P0pq


作者: kf.beyond    时间: 2009-6-22 18:15

我碰到过和你差不多情况问题,我是如下方法解决,你可以试试:
1.上电后,用for做几十毫秒的延时,等待晶振稳定(此条不一定有效,但不防加上)
2.在主循环中加入如下查询:
if (!CRGFLG_LOCK)
{
CLKSEL_PLLSEL = 0;
}
else
{
CLKSEL_PLLSEL = 1;
}
你说你无法跳出while(!CRGFLG_LOCK) ; 死循环,我想不至于,如果是,先确认PLL配置是否有问题。可参如下:
void SetBusCLK_40M(void)
{
CLKSEL=0X00; //disengage PLL to system
PLLCTL_PLLON=1; //turn on PLL
SYNR=9;
REFDV=3; //pllclock=2*osc*(1+SYNR)/(1+REFDV)=80MHz;
_asm(nop); //BUS CLOCK=40M
_asm(nop);
while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it;
CLKSEL_PLLSEL =1; //engage PLL to system;
}

作者: fish1330    时间: 2009-6-23 08:49

查查 振荡电路的电容.
作者: wangnan16    时间: 2009-6-23 22:14

首先,感谢两位回复。

回2楼:

程序应该没问题,同一PCB文件生产出的另一块板烧同样程序后一切正常。关于你说的先加延时再来判断CRGFLG_LOCK也试过了无效。感觉是上电就进行了时钟品质检测,此位已经被操作,延时对它无效。

回3楼:

该如何检查呢?请稍微具体点?


作者: fish1330    时间: 2009-6-26 16:56

查查PE7引脚连接的方式及高低电平。


作者: fish1330    时间: 2009-6-26 16:58

还要检查下 XFC引脚的配置。
作者: wangnan16    时间: 2009-7-1 11:22

首先感谢fish1330的回复!!!

检查了PE7,我通过跳线将其通过下拉电阻3.3K接地了。

XFC脚配置请看看我的电路图。

tcpCZl0b.jpg

请再帮我分析下。谢谢!!!



图片附件: [[求助]XD256时钟信号问题求助] tcpCZl0b.jpg (2009-7-1 10:57, 159.29 KB) / 下载次数 276
http://bbs.eccn.com/attachment.php?aid=7027&k=5bcbcec728f25dc387431c53cef1f140&t=1732488461&sid=p5P0pq


作者: wangnan16    时间: 2009-7-3 13:47

恳请各位帮帮忙看下,俺实在是无计可施,不知道怎么下手了。急啊!!!
作者: strongchen    时间: 2009-7-3 16:46

可以互换一下有源晶振试试,也可以互换一下MCU芯片试试。之前可以测量一下两个板子的上电和起振时间是否有较大的差别。
作者: wangnan16    时间: 2009-7-6 11:37

QUOTE:
以下是引用strongchen在2009-7-3 16:46:00的发言:
可以互换一下有源晶振试试,也可以互换一下MCU芯片试试。之前可以测量一下两个板子的上电和起振时间是否有较大的差别。

MCU已经换过一块了,还是一样。考虑换下晶振看看吧。

另外,俺也估计原来测的波形是稳定后的,差别不大,最有可能就是上电到起振到稳定的过程可能有问题。

这里俺引出一个问题就是,MCU自检时钟信号是上电后立刻开始的吗?能不能通过寄存器设置让他延时一点再检测时钟信号质量,然后操作CRGFLG_LOCK位。或者说可以屏蔽时钟信号质量检测?


作者: strongchen    时间: 2009-7-9 15:30

可以对RESET信号进行控制,从而控制MCU的启动时间。
作者: wangnan16    时间: 2009-7-14 10:05

strongchen,你说的控制reset信号,延时启动MCU,会不会对仿真和烧写有影响呢?好像BDM通讯也要用到reset信号的吧。
作者: fish1330    时间: 2009-7-15 10:50

试试这个:XFC连接的电容换22pF电容(2个电容都换)

[此贴子已经被作者于2009-7-15 10:49:53编辑过]






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