金牌会员
 
- 积分
- 1332
- 金钱
- 1332
- 注册时间
- 2021-1-2
- 在线时间
- 121 小时
|
发表于 2021-1-2 15:19:11
|
显示全部楼层
本帖最后由 tongzhihong 于 2021-1-2 15:30 编辑
1:2020年底,我最近遇到更奇怪的相似问题。学了买的战舰V3,B、C盘视频后,我自做了一个开发板练手。共6块板,第一次焊贴片,更是第一次焊LQFP144,焊废2块,有块焊好,用了焊锡膏(买焊锡丝送的),误以为助焊剂,上电开始运行显示正常,正在狂喜,突听到丝丝声,板子全黑,电源指示灯都灭了。忙关掉开关检查,没看出什么,就又加电,这次电源指示灯亮了10秒左右,就又灭了,我就没关电,准备用万用表排查,只见几股轻飘飘的烟,带点焊膏的香味,从stm32f103zet6焊盘处飘出来,我正奇怪,没回过神来,1分钟左右就看见叭叭地连续放电,在stm32f103zet6焊盘四周多处,这下知道坏事了,以为管脚短路了,赶快关电。
2:用放大镜仔细查看板子,stm32f103zet6管脚没短路,虽说是我自己手工焊的,但焊得好好的。由于是小白,又急于找到短路原因,也觉得这块stm32f103zet6肯定报废了;就干脆又上电,到底是为什么短路。这一回,好看了,时间也比较久,一会以这为主,一会以那为主,在stm32f103zet6四周管脚处,冒烟,放电,第一次这么真切,这么近,这么关注地看着管脚处的红红的放电丝,好细。直到看到有几处焊盘出现焦糊了,我才关电。我此时仍然茫然,按说短路,一下就完了,它却是连绵不断,无休无止,此起彼伏。 第二天上网搜索,才知道贴片焊接的助焊剂要用洗板水洗干净,不然会短路。再一细看,我用的还不止是助焊剂,是上海的金鸡牌焊锡膏,再上网一搜,焊锡膏主要成份是焊锡,才明白原因。至此废了3块开发板,不少的器件,2块stm32f103zet6,代价有点大。
3:在网上,买了洗板水后,我又手工焊了一块开发板,这次基本完美,上电运行一切正常,只是CH340G, USB不能识别。第四块开发板能正常跑程序了,且很稳定。算是个小安慰。
4:上网查了CH340G后,感到是CH340G的排板走线问题,主要就是CH340G的GND,应该在CH340G自身会聚后,再与系统地相连,减小干扰。就开始焊第5块开发板,准备走飞线搞定CH340G。哪知,问题比想的多,这次大的SD卡座,我没用焊锡膏,焊得比较费劲。板子上电后,复位慢得像窝牛,查原因,费了大劲,JLink调试,最终定位在SD卡。为了能运行程序,在SD卡的程序处作了显示标记,上电初始化时,当显示对应标记时,便人为拔出SD卡,程序就正常往下运行了,再把SD卡插上去。我这个小项目,在某种异常时,需写SD卡,作记录。由于写SD卡也是这个问题,慢得像窝牛,实际上不能用,(第四块开发板SD卡正常)。我在换这个板子的大SD卡座时,把焊盘搞掉一个。第5块开发板就不能用SD卡,就自好改程序,让文件系统的记录写在W25Q128上。至此,第5块开发板也正常运行,只是不用SD卡,改用W25Q128代替SD卡做文件系统的记录。没有机会搞定CH340G,USB不识别问题。
5:第6块开发板,是这次做的最后一块,把CH340G的所有GND,在板子上走飞线汇于一点后,测试,正常,USB能识别了,为了测试一键下载,先下载跑马灯,一切正常。第二天又下载了一个ADCC程序,也正常。就挂在电脑上每3s 一次通过CH340G往USB送数据。电脑上的串口调试助手显示一切正常。大约10分钟左右,串口调试助手挂起了,开始几次没在意,关电脑,重上电又来。多搞几次,发觉不对劲,一查,是因为USB工作几分钟后,就又不识别CH340G了。我就找出网上买的一个最小系统板,做同样测试,人家跑一天也没问题。我分析找原因,1可能是板子本身走线问题,虽飞线汇聚GND能被USB识别,但毕竟存在问题,没根本解决;2可能由于买器件时,商家列表中,没10uF电容,我不想为一种10uF电容,又找一家,加上我想CH340G16脚VCC上的10uF电容,用47uF电容代没问题,故这次CH340G16脚VCC上电容,不是104+10uF电容,而是104+47uF电容. 在此我把47uF换成手上有的1uF电容,USB能识别CH340G。 我出于好奇,把先前在CH340G上走的GND飞线全部取掉,CH340G16脚VCC上的104+10uF电容,用CH340G16脚VCC上的104+1uF电容代,居然USB仍能识别CH340G,并且反复在第6块开发板上,交替下载跑马灯,ADC程序,都能成功,并且程序运行正常,唯一的缺陷是USB能识别CH340G不超过10分钟。我终于把CH340G16脚VCC上的10uF电容处焊盘搞掉,并且这个地方与GND短路,短路可能是LQFP144的原因,我自动布线时,把安全间距设成了8mil,造成整块板子焊接麻烦。我只好用刀片断开短路,准备用JTAG下载程序。
6:第二天我上电第6的块开发板,跑上面的跑马灯,程序运行正常。我看了一会,正准备后面的工作,也就几分钟,我发现程序停下来了。反复多次都这样,开始以为是虚焊,就把关注放在了stm32f103zet6的8MHz晶振电路上,多次折腾后发觉,程序明显变慢了。3s的跑马灯,变成了25s左右的跑马灯,多次更换晶振电路104电容,1M电阻,8MHz晶振。一个明显的特点,刚换完器件的头几分钟,跑马灯是3s, 之后,就变成25s左右的跑马灯。在故障时多次用万用表查stm32f103ze的OSC_OUT、stm32f103ze的OSC_IN处电压,有1.x V~0.x V 电压;百思不得其解,觉得不可能,但又是实实在在的现时,这段过程还有一个特点,换下来的电阻,阻值由原来的1M,变成了几百K了。桃子找到耙的捏,无法去动stm32f103ze,只好扭到外围晶振电路费,最终,再换不起作用了,开机都从本该3s 的跑马灯,直接就是25s左右的跑马灯。此时,换下来的1M电阻仍是1M,用万用表查stm32f103ze的OSC_OUT处电压,3.2V左右,stm32f103ze的OSC_IN处电压,0V。稳定得很,不像先前是跳变的。
7:上网查,才知是stm32f103ze外接8M晶振没起振,stm32f103ze内部的固件程序,直接开启了内部振荡时钟,造成本该3s 的跑马灯,变成25s左右的跑马灯。 那么,先前那种正常运行几分钟的3s 的跑马灯,再变成25s左右的跑马灯,就是先stm32f103ze正常起振,再stm32f103ze停振,最后stm32f103ze内部固件程序起动内部振荡时钟。
8:我要问的问题: 为什么这片stm32f103ze,在已经正常起振,工作几分钟后,会停振。原因是什么? |
|