本帖最后由 mcuisp 于 2009-8-20 23:54 编辑
问题提出:
我用万用核心板焊了一个STM32F103CBT6的核心板,用来外出演示手持编程机的功能。
但演示的时候,偶尔出现找不到芯片,需要用手碰一下连接线或者插座,才找到芯片,开始下载。
问题分析:
首先,没有怀疑手持机的硬件问题,或者软件处理的问题,因为已经有客户用在生产线上批量烧录,未返回任何问题(不可能有问题不找偶,一千多块钱呢!!!)。
直观的分析,得出的结论是连接线与插座接触不好。于是更换连接线,粗略测试,貌似未出现不良现象。
不料,又一次现场演示,连接仍不灵敏,那个汗呀:L ,这次可是当着业界有力人士的面。好彩此兄似乎未注意到;P ,偷偷用手碰下,“蒙混过关”。
回到家,立下决心,要拔除此隐患。
把核心板的连线全部焊掉,重新焊接,结果依旧有故障现象。
难道知名的“复位时TXD浮空导致发送乱码”的处理逻辑存在Bug?这个逻辑,手持机与已经广泛使用的"mcuisp.exe"是一样的呀!
通过软件跟踪,发现有问题的时候,芯片没有任何发送,而不是发送了乱码。
使用了“秘制”的干扰发生器--一个负离子模块贴在芯片施加干扰,故障现象并无明显改变。
最后,调出stm32 datasheet,一个管脚一个管脚查过去,最后发现一个大问题:本该接到20脚PB2(BOOT1)的下拉电阻被我焊到21脚PB10了,造成BOOT1实际上是浮空的。如此一来,复位后,芯片随机的从System Bootloader或SRAM引导。当然会导致连接不良。
解决方案:
把下拉电阻焊到20脚PB2(BOOT1),测试了一下午,非常稳定了(有点心疼,虽然有10k次寿命,那也是测一次少一次呀)。
经验教训:
自己用的演示板也是产品,发现问题要一查到底,确诊问题所在。
要抽时间改进一下万用核心板,增加一些丝印,减少出错几率。
经常有兄弟找我咨询STM32 ISP的问题,大都发现是目标板硬件不稳定,没想到我自己也在此栽了次跟头。 |