原创 晶振起振问题分析

2013-7-16 23:49 4214 15 44 分类: 消费电子
晶振起振问题,晶振的负载电容匹配可能不合适,导致晶振不起振。
现象:
系统工作偶尔不正常。
 
最近在一个项目中,遇到一个很奇怪的问题。
系统偶尔会不工作。
而且跑了四个周的系统,中间出现过一次。后来不知道怎么恢复了。
当今天再次遇到,感觉这种情况,肯定是哪里有问题,不可能是运气使然。
 
这里将问题最终归结到晶振上,是因为问题的可重复性。
在第一次出现时,尽管在其他地方都进行过测量,但是没有怀疑到晶振上,所以一直没有将问题再次重现(后来莫名系统恢复了正常)。
如果,问题没有重现,就无法分析问题。因为可能的地方太多。
而这次问题再次出现时,只有当在晶振上触碰时,问题得到了重现,因此证明跟晶振这里有问题。
 
测试分析过程:
  1. 首先万用表测量AD输出引脚(串行输出,连接MCU),AD输出端没有转换完成信号(一个下降沿)出现。
  2. 这个时候,如果人为将AD输出端拉低,系统工作正常。
  3. 所以,MCU端应该没有出现异常。
  4. 但是,AD端很长一段时间都是工作正常的,为什么突然工作出现了异常。
  5. 在用示波器测试了各个地方之后,最终怀疑到了晶振上。
  6. 当将示波器探头放到XTAL1上时,系统恢复正常工作。如果将探头拿下,则系统不再工作。
  7. 由此断定,系统工作异常的原因,出现在晶振起振上。
  8. 后来先将负载电容调大一些,发现依然无法起振。
  9. 之后将负载电容调小了一些,晶振起振。系统恢复正常工作。
 
注:
对于晶振引起的问题很多时候很难发现,
这个要十分注意。
当其他地方,都检测过没有之后,可能就要考虑晶振问题了。
并联电容,
接地,
晶振不良率,都有可能导致晶振起振出现问题。
 

文章评论29条评论)

登录后参与讨论

用户1678053 2015-5-4 18:31

看看

用户1678053 2015-4-29 19:42

看看

用户1702231 2013-12-26 10:19

晶振的匹配电容是值得研究的。

用户1639928 2013-12-2 10:19

估计是电容不匹配,以前遇到过~

用户1681862 2013-9-3 14:08

要根据晶体的自身负载电容大小去选择外挂匹配电容大小

270594695_599241505 2013-8-5 10:08

應該是5倍最保險

270594695_599241505 2013-8-5 10:04

對的

270594695_599241505 2013-8-5 10:01

晶振兩邊的電容需要匹配晶振才會振在標稱頻率上,在晶振發生的問題中出現最多的問題就是因為晶振兩邊的電容不匹配造成的。

用户1685381 2013-8-5 09:00

Dip问题,即频率跳变的问题,也会引起停振。在某一个温度点振荡停止过了这个温度点又恢复正常。这种现象具有可重现性。注意观察下停振时的温度。仅供参考。

1989tie_959541171 2013-7-30 23:24

谢谢提醒,以后会注意这个地方。
相关推荐阅读
catch2000 2015-07-19 11:44
信号线小电阻的作用
在一块新的PCB上,测试系统能否正常运行的时候,发现系统上电后没有正常启动。  系统框图如下:   在上电的时刻,CPU A(GPIO电平2.6V)会向串口发送启动日志数据,CPU A启动后,...
catch2000 2015-07-05 17:04
协议设计中ACK机制的影响
在TCP/IP中,延时ACK和Nagle算法。  TCP为了同时处理成块数据(通常为512字节的用户数据)和交互数据(通常用户数据比较少,例如不大于10个字节),采用了延时ACK和Nagle算法...
catch2000 2015-05-23 15:48
话说物联网操作系统
最近好多家都宣布推出自己的物联网操作系统。   1. Google将要在Google I/O大会发布的Brillo; 2. 三星推出的Artik芯片搭载Mentor Graphics的...
catch2000 2015-03-31 23:52
不要采用异或来交换两个变量
在进行两个变量的时候,经常会看到有些书误人子弟的推荐使用异或的方式: 方式一 {   x = x ^ y;   y = x ^ y;   x = x ^ y; } 而不是...
catch2000 2014-10-09 07:28
为什么要测试先行
在产品的研发过程中,测试一项至关重要。不论是软件还是硬件。   软件的测试先行,在研发过程中,就做到质量的保证,因为在出现Bug的时候,容易定位Bug,而且即使是在客户端出现Bug,也能够...
catch2000 2014-10-09 07:26
C语言的面向对象编程(一)
一、前言 对于编程而言,重要的是解决问题的方式,而不是语言本身。面向对象与面向过程是解决问题和思考问题的方式。C语言常说是面向过程开发的语言,因为其缺少很多对于面向对象特性的支持。但,这并不影...
我要评论
29
15
关闭 站长推荐上一条 /2 下一条