搜索
bottom↓
回复: 41

请大家帮忙分析STM32上电复位不成功的问题

[复制链接]

出0入0汤圆

发表于 2017-5-25 09:27:43 | 显示全部楼层 |阅读模式
最近做了一块STM32F103R8T6的小板,遇到了挠头的硬件复位程序不运行问题,现象就是使用J-LINK仿真下载运行都没问题,把J-LINK彻底拔下来,板子上电程序不运行,自己分析是复位电路的问题,检查:
1.BOOT0 BOOT1下拉10K接地没问题。
2.VDDA VSSA直接接了VDD和VSS。
3.复位部分10K上拉后接0.1uF电容到地,测试拆掉10K和将0.1uF换为1uF结果也没变化。
4.STM32电源部分所有三组VDD VSS都已就近接了0.1uF去耦电容。
5.换了三种开关电源,现象没有变化。
6.怀疑8M晶振部分,程序改为内部8M也无果。

实在是想不到还有什么地方能够影响上电复位了,四五天了也没有找到具体的原因,焊了两块板,现象都一样,板子是嘉立创打样直接贴的阻容,三极管和STM32,请大家帮忙分析一下,这种外部复位不成功的情况,还会有什么能够产生这个问题的原因呢?

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2017-5-25 09:40:13 | 显示全部楼层
检查一下boot0 boot1下拉电阻,改小成1K看看

另外,在别的开发板上试,来验证你的结论。

出0入0汤圆

发表于 2017-5-25 09:53:44 | 显示全部楼层
检查一下上电时序,看电源上的波形,也不要让其它IO漏电过来。

出0入0汤圆

 楼主| 发表于 2017-5-25 10:05:25 | 显示全部楼层
TBG3 发表于 2017-5-25 09:40
检查一下boot0 boot1下拉电阻,改小成1K看看

另外,在别的开发板上试,来验证你的结论。 ...

boot0换过100欧姆下拉,没有效果,程序在开发板上能正常跑,应该不是程序的问题。

出0入0汤圆

 楼主| 发表于 2017-5-25 10:08:15 | 显示全部楼层
aozima 发表于 2017-5-25 09:53
检查一下上电时序,看电源上的波形,也不要让其它IO漏电过来。

嗯,今天找个示波器看一下,其它IO漏电过来倒是没有想到,外围的东西基本上都没有焊接,我再检查检查IO连线是否有问题。

出0入0汤圆

发表于 2017-5-25 10:12:11 | 显示全部楼层
程序不会有问题?

出0入0汤圆

发表于 2017-5-25 10:12:25 来自手机 | 显示全部楼层
有没有用内部RTC?

出0入0汤圆

发表于 2017-5-25 10:12:58 | 显示全部楼层
caoxuedong 发表于 2017-5-25 10:05
boot0换过100欧姆下拉,没有效果,程序在开发板上能正常跑,应该不是程序的问题。 ...

看一下RESET波形吧。

出0入0汤圆

发表于 2017-5-25 10:18:38 | 显示全部楼层
仔细检查原理图和layout,看有什么错误。

出0入0汤圆

 楼主| 发表于 2017-5-25 10:22:01 | 显示全部楼层
bad_fpga 发表于 2017-5-25 10:12
程序不会有问题?

程序在开发板上是可以正常跑的。

出0入0汤圆

 楼主| 发表于 2017-5-25 10:24:09 | 显示全部楼层
dadatou 发表于 2017-5-25 10:12
有没有用内部RTC?

没有使用内部RTC,但是外围电路设计了RTC晶振,嘉立创贴片顺便贴上了,也怀疑过RTC震荡干扰复位的可能性,就把这些贴好的RTC晶振部分都焊了下来,发现不是RTC相关的问题。

出0入0汤圆

 楼主| 发表于 2017-5-25 10:27:18 | 显示全部楼层
TBG3 发表于 2017-5-25 10:12
看一下RESET波形吧。

确实排查后感觉一定是外部复位的问题,因为J-LINK仿真是好好的,两个的最大区别应该就是复位,J-LINK是通过SWD实现软复位,所以怎么试都正常,直接上电后,是硬件复位,有问题造成程序不能运行。

出0入0汤圆

发表于 2017-5-25 10:55:35 | 显示全部楼层
caoxuedong 发表于 2017-5-25 10:27
确实排查后感觉一定是外部复位的问题,因为J-LINK仿真是好好的,两个的最大区别应该就是复位,J-LINK是通 ...

把RESET口用按键引出来,用按键复位试下

出0入0汤圆

发表于 2017-5-25 10:56:39 | 显示全部楼层
caoxuedong 发表于 2017-5-25 10:27
确实排查后感觉一定是外部复位的问题,因为J-LINK仿真是好好的,两个的最大区别应该就是复位,J-LINK是通 ...

芯片本身是有POR的。所以,即使你没有外接RESET电路,也应该能够自动RESET的。

芯片坏
或者BOOT0被强制为高
或者RESET管脚被强制为高

这些原因更有可能。

出0入0汤圆

 楼主| 发表于 2017-5-25 11:29:00 | 显示全部楼层
本帖最后由 caoxuedong 于 2017-5-25 11:40 编辑

刚刚用示波器看了一下上电复位引脚的波形,也没看出什么问题来,复位脚单独引出来接地手工复位,也是没反应,手上没有现成的STM32芯片,难道真是芯片坏了吗,总感觉应该片子没有坏

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2017-5-25 11:47:06 | 显示全部楼层
caoxuedong 发表于 2017-5-25 11:29
刚刚用示波器看了一下上电复位引脚的波形,也没看出什么问题来,复位脚单独引出来接地手工复位,也是没反应 ...

和开发板的信号做一下做对比

出0入0汤圆

发表于 2017-5-25 12:14:07 来自手机 | 显示全部楼层
程序的开始地址不是0x8000000吧?

出0入0汤圆

 楼主| 发表于 2017-5-25 12:23:12 | 显示全部楼层
开始地址是0x8000000,没有自己的BootLoder。

出0入0汤圆

发表于 2017-5-25 12:24:15 来自手机 | 显示全部楼层
jlink彻底拔下来是什么意思?jlink只拔USB线,不拔联电路板的线可能会出现这样的情况。

出0入0汤圆

发表于 2017-5-25 12:35:04 | 显示全部楼层
本帖最后由 cemi 于 2017-5-25 12:36 编辑

我也遇到了一个跟你类似的问题,板子上电复位后某些外设工作不正常, 之前是UART1不工作, 现在变成TIM8不工作, 但是连着调试器重新下载一下程序或者手动复位后就一切正常,现在都还没有找到原因。

我已经排除了是电源和复位电路的问题了。

出0入4汤圆

发表于 2017-5-25 13:22:22 | 显示全部楼层
你还是好好看看代码吧,你下个例程看看跑步跑

出0入0汤圆

 楼主| 发表于 2017-5-25 14:22:34 | 显示全部楼层
xzhiwei 发表于 2017-5-25 12:24
jlink彻底拔下来是什么意思?jlink只拔USB线,不拔联电路板的线可能会出现这样的情况。 ...

J-LINK彻底拔下来就是从板子那端拔下来,不是只从USB那端,郁闷的是,调试状态怎么虐都没问题,拔掉再上电,就是没反应。

出5入14汤圆

发表于 2017-5-25 15:13:28 | 显示全部楼层
感觉楼主把硬件上的问题排查的差不多了 —— 检查检查配置字,再试试用原来可以运行的程序烧到这个芯片上试试,会不会是程序哪里死了导致的“假”死机现象!如果没有,就先把程序简化简化再简化,看看是不是程序的问题!(不能因为J-LINK可以运行就表示没问题 ,,,,,, 当然我从来没用过J-LINK,都是直接烧程序试,所以也没遇到过楼主的问题)

出0入31汤圆

发表于 2017-5-26 07:48:43 来自手机 | 显示全部楼层
确定boot管脚电平正常,有没有搞错位置?vbat接了没有?多试验几块板子

出0入0汤圆

 楼主| 发表于 2017-5-27 12:20:28 | 显示全部楼层
本帖最后由 caoxuedong 于 2017-5-27 12:21 编辑

左思右想实在是没有什么地方可以排查了,突发奇想,找了四节5号镍氢电池,实测串联电压5.2V,用这个直接给板子供电,上电竟然复位完全正常了,我试了三种开关电源板,都不行,用电池,是死马当作活马医,竟然发现了问题的大概原因。不知道是这三种开关电源都是上电电压上升慢,还是纹波的问题,下面是我板子电源部分的图,再请大家帮忙分析下,试过了将L1拆掉直通,发现没有影响。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2017-5-27 12:35:11 | 显示全部楼层
一般 的1117,是好是加电解,而不是瓷片电容,这样容易自激

出0入0汤圆

 楼主| 发表于 2017-5-27 12:37:49 | 显示全部楼层
rogerllg 发表于 2017-5-27 12:35
一般 的1117,是好是加电解,而不是瓷片电容,这样容易自激

两个10uF/16V的,都是贴片钽电解。

出5入14汤圆

发表于 2017-5-27 15:54:09 | 显示全部楼层
caoxuedong 发表于 2017-5-27 12:20
左思右想实在是没有什么地方可以排查了,突发奇想,找了四节5号镍氢电池,实测串联电压5.2V,用这个直接给板 ...


呃,一般情况下,我还真不会用 10uF 这么小的电解,都是至少输入 470,输出 220 这种(不过开关电压里应该有不小的电解,所以这个应该不是问题) ,,,,,, 如果不是电容的问题,那只能说你这开关电源也太渣了,要么就是板子的布线太渣了,,,,,,

出0入0汤圆

发表于 2017-5-27 15:55:16 | 显示全部楼层
方便的额话,电路图来一个大全套

出0入0汤圆

发表于 2017-5-27 15:56:03 | 显示全部楼层
1117最好配100uF

出0入0汤圆

 楼主| 发表于 2017-5-27 16:22:18 | 显示全部楼层
本帖最后由 caoxuedong 于 2017-5-27 16:27 编辑
EMC菜鸟 发表于 2017-5-27 15:54
呃,一般情况下,我还真不会用 10uF 这么小的电解,都是至少输入 470,输出 220 这种(不过开关电压里应 ...


那我再在原先贴片钽电解两端各并联一个大电解电容试试看,小开关电源质量确实很一般,我看了两种电源输出滤波电容分别是390uF和1000uF!

出0入0汤圆

发表于 2017-5-27 16:26:29 | 显示全部楼层
上电的波形 用示波器测试一下 之前也遇到类似的

出0入0汤圆

 楼主| 发表于 2017-5-27 16:29:17 | 显示全部楼层
gyd0317 发表于 2017-5-27 16:26
上电的波形 用示波器测试一下 之前也遇到类似的


如果确实是电源上电缓慢造成不能复位的话,除了更换电源模块,就只能使用专用外部复位芯片的办法了吧?

出0入0汤圆

发表于 2017-5-27 16:30:52 | 显示全部楼层
caoxuedong 发表于 2017-5-27 16:29
如果确实是电源上电缓慢造成不能复位的话,除了更换电源模块,就只能使用专用外部复位芯片的办法了吧? ...

刚才没看到你后面的回答,你手工复位都不行那就是其他问题了

出0入16汤圆

发表于 2017-5-27 18:30:01 | 显示全部楼层
楼主可以看下这个《STM32F0启动模式相关问题探讨》

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入8汤圆

发表于 2017-5-27 22:15:11 来自手机 | 显示全部楼层
确定芯片的电源地都连了吗

出0入0汤圆

发表于 2017-5-28 01:50:30 | 显示全部楼层
如果手动复位都不行,我怀疑就不是上电慢的问题,而是软件问题,关于某个外设的。
建议先跑个最简单的程序试试。

出0入0汤圆

发表于 2017-5-29 08:45:53 | 显示全部楼层
还没结论吗?

出0入0汤圆

 楼主| 发表于 2017-5-29 09:58:31 | 显示全部楼层
    因为使用电池供电可以正常复位,无论试多少次都没有上电复位运行不成功的情况。所认为应该是两种可能,一是电源模块纹波比较大,二是上电慢。电源滤波电容使用两个10uF钽电解,EMC菜鸟大神说一般用470uF和220uF,我选的确实有点小,当时是参考一些开发板的电路图,有一部分开发板是使用的这样的两个10uF电容,刚好板子在外壳内高度空间也有点小,使用容量大的贴片铝电解高度放不下,容量大的钽电解贵很多,就没有用大的。看电路部分,唯一当时没有在意的是STM32三组电源和模拟部分电源引脚的去耦电容,都只是在就近位置各放了一个0.1uF的,这几天看ST的参考设计说明,要求所有电源引脚都要放0.1+4.7uF各一个,这个当时确实没看到,特别是提到VDD3和VSS3之间,一定要有,我原先没看过这个参考设计部分,就一个大一点的电容都没放,仅仅放了四个0.1uF,感觉这部分可能有问题。现在手上没有合适的电容,准备节后从力创商城买一些4.7和10uF 0603的电容,叠焊在原先0.1uF电容上面,看看有没有效果,有了结果,一定告知大家!

出0入0汤圆

发表于 2017-5-30 12:52:57 | 显示全部楼层
你用的是什么开发工具?keil吗?如果是keil,你用的库是多少版本的?我以前遇到过类似的问题能调试,但是偶发性的单片机正常运行上电不运行程序,后面在工程设置里面勾选了使用微库就没问题了!!

出0入0汤圆

 楼主| 发表于 2017-5-31 10:21:12 | 显示全部楼层
用的是KEIL,选了使用微库了,怀疑自己STM32电源周边的电容值选的偏小,容量大一点的0603电容买了还没有到,到了并联几个试试,就知道结果了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2017-6-23 11:49:17 | 显示全部楼层
前些天有点忙,没有时间再次测试,现在问题已经解决,不是硬件的问题。
原因是悬空的USART RXD的问题,在论坛里挖坟找到这个帖子:
https://www.amobbs.com/forum.php ... =%E5%A4%8D%E4%BD%8D
11楼有一个提示,和我的情况相同,我的TXR,RXD接WiFi模块,但是调试的时候没有焊接,按11楼的方法将启用的usart:
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
                          // GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
                   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//上拉输入
                    GPIO_Init(GPIOA, &GPIO_InitStructure);  //初始化PA10
然后再反复上电几十次,完全正常,没有任何问题了,在这里谢谢大家的支持,也希望遇到同样问题的朋友们,看到此贴,能少走一些弯路。
只是有些想不明白,浮空的RXD竟然影响到上电复位,而且还这么严重,直接就是不启动,实在是不理解呀!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 06:47

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表