|
最近做东西用到STM32F103,初期一切进展顺利,但是,到了最终调试的时候发现
程序烧写到MCU里没问题,但是运行不起来???!!!
偶尔能跑起来,但是动不动就死机???排查半天,把问题锁定在MCU的32.768KHz低频晶振上
经过仔细检查发现,这个晶振不启振。话说STM32低频晶振不爱启振似乎有这毛病
于是,按网上的方法逐一解决:
1、换晶振,无效,为此跑了4趟电子市场,32.768KHz的晶振就买了6种近50只,花费20大洋有余......
2、改负载电容,无效,负载电容从6pF-33pF的一样50只,花费10大洋有余......
3、晶振上面串电阻并电阻......无果,依旧不振
4、Vbat加电容,换电池,改善供电,折腾下来一圈,3.3V LDO又买了多种10余只,还是不行.....
5、最后祭出法宝,无源的你不是不振吗,我来有源的,用信号发生器产生32.768KHz的信号,发现偶尔能工作了!
但是很有意思的是,信号发生器要一定强度的输出才行,至少要5dbm强度的信号,才能驱动MCU正常运转,这真是什么鬼!!
不过好歹确定了是低频晶振的问题,于是,再次杀去电子市场,买有源晶振:sweat::sweat:,惹不起我躲不起吗!
不幸的是,有源晶振买回来依旧无法工作,经过多次努力,真的要准备放弃了,打算换MCU大改电路了
结果,用万用表胡乱捅发现了问题:有源晶振工作时时钟脚直流电压是1.6V,但是到了MCU只有0.1V,这是怎么回事????
再次检查,发现MCU时钟脚,到晶振焊盘那根线,居然不通,补焊MCU无济于事,刮开阻焊发现,在阻焊下面居然有一处断点!
顿时有种云开雾散的感觉,把有源晶振输出接在断点处,上电,工作正常!
反复启动都正常,再也不死机了
话说这里怎么会有个断点呢?打开PCB源文件,发现是自己画线失误,少画了那短短的一条线
这样,相当于晶振和MCU断路,所以啊,不管怎么换晶振,时钟信号都送不进MCU,
而程序正好需要使用RTC功能,没有时钟信号,自然程序会卡死不能运行
这也解释了为什么信号发生器必须要一定强度的信号才能驱动MCU正常工作
因为局部断路,相当于形成极大阻抗,输入信号够强大后“跨”过这个断点进入了MCU
这么一个简单的故障,近10天下班后的时间都花费在上面了,还花费不少钱,浪费不少元件
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
打赏
-
查看全部打赏
|