打印

STM32串口ISP的一次非主流调试经历

[复制链接]
19522|56
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sujianli|  楼主 | 2009-1-3 04:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32串口ISP的一次非主流调试经历
(原创,首发http://www.itmcu.com/  )

引子
元旦无事,翻出下线时有问题的STM32开发板来逐一检修。大部分都迎刃而解,但最后一块却调到吐血。
尽管最后查出来的故障问也许很弱智,很不典型。整个检修过程的思维也许也有点贻笑方家,但对初学者,可能还是有点参考价值。
且常在网上看到有关ISP下载问题等讨论,也想到有人遇到问题常不加分析,就怀疑到MCU本身的质量问题。觉得还是花点心思写出来和大家分享一下。也许对大家有所启发和帮助。也尽一点增值服务商的义务。
要调试的板子如下:
(http://www.u-easytech.com/chinese/product.asp?id=110)
沙发
sujianli|  楼主 | 2009-1-3 04:43 | 只看该作者

写得有点罗嗦 不过还是随心好了 不想改了

检测员 的问题记录:
用ULINK- ME 可下载和运行程序,但串口ISP功能不正常,无法下载。
调试过程
串口ISP不行,我第一反应就是:232芯片问题还是电容焊错了(焊成103的)?动手:
1.    拉过万用表,测试232芯片的2脚:+8V多,再测6脚:-8V多。
(和9V是有点距离,照平时经验,芯片应该也算合格,也不至于通信不上啊?)
2.    会不会是线路不通?打到通断档,找两个电阻,一镊子 。分别测:
1)从串口延长线PC侧到板子上DB9的2、3脚,到232芯片的13、14脚,都响
2)再测5脚和地,也叫了。
3)测232芯片的11、12到MCU的PA9和PA10,也通的!
3.    难道是短路了?仔细反复测232两侧的所有TXD、RXD线及连接点,没有短路的!
(硬件看来都是好的啊,怎么会这样?怎么办?)
4.    还是再打开串口调试助手来试下,自动发送数据 。
1)    先在DB9的2、3脚用镊子短一下,PC能收到正确值。
2)    再在232芯片的13-14脚短了一下,PC能收到正确值。
3)    最后在MCU的PA9和PA10短了一下,还是能收到正确的值。
(这就怪了,看来232的整个回路是正常的啊!)
5.    难道是MCU的串口坏了(不禁又想起网上的流言“STM32很脆弱的”)。幸好,这板子是核心板+底板结构,我们板子又多。逐拿来一套标示完好的,不放心,再用ST的ISP软件download了一下,没有问题。
1)于是,我拔下怀疑故障核心板,换上一块已经经证实没有问题的核心板。
2)满怀信心的上电,download,那该死的提示还是出现!还是不能下载。
3)再来一招:把怀疑故障核心板的核心板换到那没有问题的底板上。download,居然通过了,下载程序,正常!
(神了,底板就是一个232芯片相关的东东,我的1~4步已经可以说是完全排除底板的问题了啊! 可是。。。核心板居然也是没有问题的。那问题在那里呢?)
4)不会是接触问题吧?打一下通断。测232芯片的11、12到MCU的PA9和PA10,通的!
6.    问题在那里呢?看来不亮出法宝都不行了。。于是,搬来安捷伦的数字示波器。
1)    先测232的1、5脚,振荡中规中矩,再测2、8脚,电压+-8.6V,纹波小,OK。
2)    再把串口调试助手的自动发送打开,测:232的13、14脚。13有接收到数据波形,记录下来,分析了一下,和发送的数据吻合。14脚没波形。
3)    再测232的11、12脚,PA9、PA10,在PA10在也有正确数据波形。
4)    镊子,短路PA9和PA10,PC有收到正确数据,示波器上也有正常波形。
(怪怪怪,难道是有干扰?)
5)    加长示波器记录时间,并观测调试助手上数据,一分多钟,没有一个错的。
(????)
6)    咦,ISP工具的波特率默认值比助手高多了。。难道?试!再将助手的波特率一路上调到极限。再观察一分钟,还是没有错误数据!
(想起了自己曾在21IC某个讨论STM32  ISP的贴子里写了必杀“三板斧”,技尽已!可故障范围都还没有圈出来!!)
(神啊,救救我吧!!!)

使用特权

评论回复
评论
帆鹿不凡 2018-12-28 11:24 回复TA
可以 
板凳
sujianli|  楼主 | 2009-1-3 04:44 | 只看该作者

接2

7.    不可能啊。。。我有点急了!换。。。换。。。换。。。好的核心板已经换过了,那干脆把底板上的232连电容全套交换一下。
1)    烧起铬铁、架起热风枪折腾一番的,把好的换过来了!Down,失败!!!!
2)    再把1~4步的检测,耐起性子再做了一次。都没有问题啊!
3)    拆下的怀疑有问题的,换到好的上面。Down,通过了!!
(残酷的现实再次表明,底板和核心板(MCU)都是没有问题的,可是就是ISP不行!。。。。。。。。。。。。。。。。。。。)
8.    哎呀,都晚上八点了,怎么办?我平时常说:“没有修不好的东西,只是设备和时间问题。”放弃吗?!


9.    无计可施了!走吧!边走,边口里念念有词:
10.     “232是好的,底板PCB又没有断和短,核心板与底板接解良好,该核心板又是被证实是好的,也就是MCU也是好的,ST的官方下载程序,一直在用,并且刚在另一块板上也正常下载了的,也就是说:电脑和软件也是好的。。。。。”
11.    “都是好的,那怎么又不能ISP?肯定有坏的。要有坏的话,既然不是232,又不是ZET6,那还会有什么?”

使用特权

评论回复
地板
香水城| | 2009-1-3 10:33 | 只看该作者

先给条裤子,翘首以盼结尾篇

使用特权

评论回复
5
pheavecn| | 2009-1-3 12:10 | 只看该作者

呵呵,要看看写保护位的设置。

更正:核心板没问题,不是写保护位。
请各位bypass此贴

使用特权

评论回复
6
w75815895| | 2009-1-3 16:17 | 只看该作者

RE

STM32F的ISP确实不太厚道。我用相同的原理图布了两块不同走线的板,一块可以ISP,另一块不可以ISP。走线没有连接上的问题。也用楼主的方法试过。怀疑它的ISP对布线很敏感。
期待楼主的解决方法。

使用特权

评论回复
7
pheavecn| | 2009-1-3 16:41 | 只看该作者

少怀疑stm32f芯片的问题。

我在使用过程中也发现很多貌似芯片的问题,最后都发现是用法不对,或其他环节的问题。

使用特权

评论回复
8
香水城| | 2009-1-3 17:11 | 只看该作者

是不是BOOT跳线没有接好?

不然就是复位电路或模拟供电的问题?

使用特权

评论回复
9
simon21ic| | 2009-1-3 20:48 | 只看该作者

难道是。。。。。。

传说中的。。。。。。

使用特权

评论回复
10
sujianli|  楼主 | 2009-1-3 23:29 | 只看该作者

呵呵,谢谢大家支持

我放到这坛子上的时候 手都是抖的  生怕被众高手拍砖
我再写一些  
明晚结贴
---------
最后结果表明不是香主说的问题
(毕竟天天用ISP的 boot跳线肯定会先查)
应该类似6楼的说法
但是最后的解决方法很简单

使用特权

评论回复
11
sujianli|  楼主 | 2009-1-3 23:30 | 只看该作者

接3

11.    “都是好的,那怎么又不能ISP?肯定有坏的。要有坏的话,既然不是232,又不是ZET6,那还会有什么?”
12.    “如果非要在这些里选一个坏的,我会赌那一个是坏的呢?232,ZET6,PCB?”“对!PCB有可能哟!以前碰到这样莫明其妙的问题的嘛!最后不是发现,原来是PCB走线间上有微短路啊!”
13.    我又兴冲冲的折返回实验台。微短路怎么对付啊?那些细丝丝,可能躲在丝印下,也可能在元件下,也可能就在你眼前,但如果你企图用放大镜找出来,那绝对不可能!幸好,重庆的PCB板工艺水平,已经使我练就对付绝招。(看来深圳PCB板也有微短路的时候,下次得好好检查才能入库了。我暗想)
14.    废话少说,搬出茂迪数控电源,设到5V,1A输出。对照着PROTEL的PCB,把和通讯相关的两两挨着的线加上电源,挨过烧了一下。最后还把核心板拔下,加到12V,把底板的TXD、RXD挨着的线重点关照了一下。
——准备好了,Down!  Next->,还是失败了!
(看来,不是微短路的问题啊!)
(对啊,怎么可能是微短路,如果有微短路,串口调试助手怎么可能正确收到数据呢?看来我是急病乱抓药了!)

使用特权

评论回复
12
sujianli|  楼主 | 2009-1-3 23:30 | 只看该作者

接4

(正确收到数据?对啊,如果我让MCU运行个通讯程序,用串口助手来收发控制,那不就可以100%证明MCU?刚好,我们不是有一个时钟程序,是通过和串口调试助手交互数据的吗?)
15.    慎重起见,还是用公司正版的MDK+ULINK 2 来下载一下例程。
对了!!!通讯居然是完全正常的!可以通过助手收到MCU来的时钟数据,也可通用助手把新设定的时间发到MCU中。
。。。。。。。。。。。。。。。。
想不抓狂都不行了!抓狂!
。。。。。。。。。。。。。。。。。
16.    “可以通讯,但不能ISP。ISP软件好像又没有问题吧!”“我还是再来证实一下,免得刚头晕晕没搞清楚”
1)    先把标记为“OK”的板子连接好,next->,下载正常!
2)    把这疑惑不解的板子同样办法连接好,next->,shit ! 还是失败!
17.    “板子通讯程序正常,ISP也正常?”那我再找些板子来验证一下。抱出10多块开发板,逐一下载,都OK!
18.    示波器,示波器再来分析一下!看ISP软件怎么收发的。
1)    先把不正常的板子接好,点”next”。 PA10上抓到了一个波,PA9没有。下载失败。
2)    换上OK的板子,点”next”。 PA10上抓到了一个波,PA9上也抓到了一个波。可居然提示:下载失败!!
3)    去掉示波器探头,OK板下载,正常!
4)    反复若干次,依然如故!
(天啊,想抓个波分析一下都行!)
(唯一可以看出的是,不正常的板子没有MCU到PC的数据波形!可是,第15点时的实验又表明:可以通过助手收到MCU来的时钟数据,也可通用助手把新设定的时间发到MCU中。)
怪哉啊!!!!

使用特权

评论回复
13
pheavecn| | 2009-1-3 23:45 | 只看该作者

我猜是stm32复位时的高阻状态导致的。

使用特权

评论回复
14
w75815895| | 2009-1-4 00:36 | 只看该作者

RE

楼主快点上你最后的解决方法吧!我还想试下我那不能ISP的呢。

使用特权

评论回复
15
香水城| | 2009-1-4 09:48 | 只看该作者

STM32的所有外设管脚复位后默认为高阻输入状态

记得以前讨论这个问题时,有人已经总结出一个方案:需要在USART1的TX脚接一个上拉电阻,因为STM32的所有外设管脚复位后默认为高阻输入状态。

找到一个精华帖与此有关:
相关链接:https://bbs.21ic.com/club/bbs/list.asp?Page=&boardid=49&t=3079720&p=2&tp=%D5%E2%B8%F6%C8%B7%CA%B5%D3%D0ST%B5%C4%B8%C9%CF%B5

使用特权

评论回复
16
Tiger5| | 2009-1-4 11:54 | 只看该作者

感觉ISP不如LPC2XXX的好用....

这个问题需要耗费时间,真是浪费时间啊。....

使用特权

评论回复
17
simon21ic| | 2009-1-4 15:46 | 只看该作者

不正常的板子没有MCU到PC的数据波形?

如果是那个传说中的0x00数据的问题的话,应该有波形的。
还好偶的工具站在前人的经验上,少走不少弯路。

还是用自己做的ISP工具好,可以给出很详细的出错信息,一看就能知道应该去哪里找错误

使用特权

评论回复
18
sujianli|  楼主 | 2009-1-5 01:19 | 只看该作者

原来的结局

19.    忽然,脑中**闪过!冥冥中好像模糊记得21IC上香水城或是那位高人讲过,ISP软件有新版要用新版的!看了一下自己的版本:1.0。 上ST.com,一番点击,找到了个1.2版的。下载下来,安装好,试,居然顺利next了,不敢相信自己眼睛,赶紧选了个GUI的例程,下载下去,OK了!!

真有点想不明白啊。我们一直用1.0版的,生产测试了那么多同样的板子,却偏偏只有这一块ISP不起!却能用1.2的下载!奇啊!
九点多了。。改天再来抓包分析一下这两个版本有什么不同。

---------------------------------------------------------------------

使用特权

评论回复
19
sujianli|  楼主 | 2009-1-5 01:29 | 只看该作者

本来以为这样是个完美结局

也许是大家太热情了
所以老天还要再继续折磨我一下
今天(4号)下午,负责检测的同事说,那个板子他用1.2版本测试了。的早上的时候试了两次都是好。下午使用起来,发现有时候行,有时候又不行。再后来就又完全不行了.

今天晚上又整到11点,都还是和前面说的18条结果一样!!!

使用特权

评论回复
20
sujianli|  楼主 | 2009-1-5 02:30 | 只看该作者

看来要写成调试手记了

但愿能找到问题的所在。。。
我今晚

1.    先下载5楼“pheavecn”的免费stm32f ISP下载软件(下简称“MCU ISP软件”---建议“pheavecn”给他起一个中文名号,英文记不住啊!)。试了,还是不能下载。监测PA10可以看到连续发下去的数据(0x7f)波形,可是PA9脚,没有返回波形。
2.    通过示波器分析了ST下载软件V1.0、V1.2及MCU ISP软件的异同。
1)    V1.0的,点next时只发了一个起始信号(0X7f)
2)    V1.2的,发了一串起始信号,(大概数了是11个数据,没具体分析,但看起来是一串不一样的数)
3)    MCU ISP 软件是在计时的时间里,连续发0X7f。(Pheavecn兄,不知是不是40个啊?我没数。)
(论坛传图太麻烦,等我调好了写个手记,生成PDF的,就附上波形图)
3.    在可以下载的板子上测试返回信号(PA9脚)
1)    用ST的软件:无论V1.0 还是V1.2,发现只要示波器的探头置于PA9到232间的线路任一位置探测信号,示波器上只捕获得到一个下降沿,然后下载失败。只要移开探头,重新复位,就能正常下载。
2)    用MCU ISP软件,随便在A9到232间的线路任一位置探测信号,均不会影响下载,ISP成功,并且监测到正常的一连串返回信号。
(很奇怪的!想不到ST的软件为什么会这样,MCU ISP的是要强悍些!)

(忽然想到一个细节!!!当我不用示波器监测PA9时,MCU ISP软件一般一点下载就开始正常工作。但是,当我用示波器监测时,好像计数器都开始计了好几个数了,下载才连机工作。Pheavecn兄,你的软件是不是就像当年国产的VCD一样,都是智能超强纠错的?!)

4.    仔细看了香主在15楼推荐的那个贴子,觉得有一定的道理,并作了试验:在核心板插头的PA9引线脚上,上拉了一个10K的电阻。结果,还是下载失败。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

256

帖子

4

粉丝