打印
[STM32F1]

硬件复位STM32,导致CPU直接死机

[复制链接]
11337|36
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fengyun2351|  楼主 | 2014-11-17 23:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 fengyun2351 于 2014-12-3 15:29 编辑

我这出现了个比较奇怪的问题,有时候给芯片硬件复位,即NRST管脚拉低后,CPU直接死机了,再按复位键也不好使了,应该不是软件的问题,我用过最简单的程序试过,也是一样,也应该不是复位电路的问题;我之前的电路是将VDDA直接与VDD相连,VSSA直接与VSS相连,没出现过这个问题。我初步判断是VDDA及VSSA管脚的接法及去耦电容匹配问题,VDD经过磁珠连接到VDDA,VSSA经过磁珠与VSS隔开,VDDA与VSSA之间加一个1uf的电容,或者加(1uf+1nf)电容时,外部硬件复位时,容易直接死机,再按复位键也不管用了;如果在VDDA与VSSA之间加一个1nf的电容,或者不加电容,外部复位基本不死机了,但是在受到干扰时,容易直接死机,硬件复位还管用,能够复位回来。它们之间只加一个0.1uf的电容,效果会好一点,出现死机的概率比较低了,但我没有来得及试试加(1uf+0.1uf)的情况。想请版主及各位大虾帮我分析下,外部电路怎么影响到了内部的复位电路,导致按下外部复位键直接死机有哪几个方面原因?(以上操作时,在现场有干扰的环境下比在实验室内出现问题的概率大)。
沙发
xlsbz| | 2014-11-18 08:39 | 只看该作者
既然没找到问题,就不能断然下结论是软件没问题。软硬不分家。

使用特权

评论回复
板凳
bear1| | 2014-11-18 08:58 | 只看该作者
什么型号?

使用特权

评论回复
地板
zhaoyu2005| | 2014-11-18 09:57 | 只看该作者
换质量好的磁珠试试,以前见过LPC2214因为电源的电感(0805封装)问题,造成启动不正常,不能连接jlink,最诡异的是 外接晶振,倍频后本应该是24M,但是有时显示是48MHz,这个晶振值我忘了,不过不符合nxp个一个文档上面说的值,后来买了一批好的电感,就好了
我stm32f103,VDDA 和 VDD通过0805电感连接,VDDA接10uF+104,正常

使用特权

评论回复
5
fengyun2351|  楼主 | 2014-11-18 11:07 | 只看该作者
xlsbz 发表于 2014-11-18 08:39
既然没找到问题,就不能断然下结论是软件没问题。软硬不分家。

之前没有将VDDA和VDD分开时,一样的程序,从来没出现这个问题,还没有关注过控制电源的寄存器,请问下哪几个电源方面的寄存器会影响这个呢

使用特权

评论回复
6
fengyun2351|  楼主 | 2014-11-18 11:09 | 只看该作者
bear1 发表于 2014-11-18 08:58
什么型号?

stm32f103vbt6

使用特权

评论回复
7
小班儿| | 2014-11-18 11:12 | 只看该作者
你说的死机是什么现象?

使用特权

评论回复
8
anjf163| | 2014-11-18 11:36 | 只看该作者
磁珠不要随意添加,加的位置不对会带来干扰。
VSSA 和 VSS 最好最短的导线接在地上。
VDDA 和 VSSA、VDD 和 VSS 分别并的 0.1uF 电容尽量靠近相应引脚。电容用最常见的 0805 层叠陶瓷电容就好了。
VDDA 和 3.3V、VDD 和 3.3V 分别串一个大点的磁珠(例如:1k欧/100MHz的)。

使用特权

评论回复
9
fengyun2351|  楼主 | 2014-11-18 12:40 | 只看该作者
小班儿 发表于 2014-11-18 11:12
你说的死机是什么现象?

所有的IO都变成开漏输出了 ,连接在上面的灯也都不亮了,就是一点反应也没有了,中断肯定也死了

使用特权

评论回复
10
fengyun2351|  楼主 | 2014-11-18 12:41 | 只看该作者
还有一个现象,复位管脚接了一个MAX706S,MAX706S的/RESET端接的CPU的NRST管脚,CPU的NRST管脚有上拉10k电阻和0.1uf对地电容,在复位按键经过MAX706S的MR管脚接入,死机时候,MR管脚电平由高变低时,/RESET端从3.04V变为0V,会不会是/RESET端的3.04V有问题呢?

使用特权

评论回复
11
小班儿| | 2014-11-18 12:46 | 只看该作者
fengyun2351 发表于 2014-11-18 12:41
还有一个现象,复位管脚接了一个MAX706S,MAX706S的/RESET端接的CPU的NRST管脚,CPU的NRST管脚有上拉10k电 ...

不太清楚你做的什么东西,感觉跟外围的设备有很大的关系!

使用特权

评论回复
12
fengyun2351|  楼主 | 2014-11-18 12:49 | 只看该作者
anjf163 发表于 2014-11-18 11:36
磁珠不要随意添加,加的位置不对会带来干扰。
VSSA 和 VSS 最好最短的导线接在地上。
VDDA 和 VSSA、VDD 和 ...

这个问题偶尔会出现,比较难试出来,这些确实都是需要注意的地方,但不知道是不是最终解决办法,感觉问题根源没找到

使用特权

评论回复
13
xlsbz| | 2014-11-18 12:52 | 只看该作者
fengyun2351 发表于 2014-11-18 11:07
之前没有将VDDA和VDD分开时,一样的程序,从来没出现这个问题,还没有关注过控制电源的寄存器,请问下哪 ...

源头应该有可能就是 晶振质量啊  电容啊  电路啊 之类的。

不知道你是哪个库?
用HSE_STARTUP_TIMEOUT,搜搜宏定义HSE_STARTUP_TIMEOUT,把值改大点试试


使用特权

评论回复
14
fengyun2351|  楼主 | 2014-11-18 13:08 | 只看该作者
fengyun2351 发表于 2014-11-18 12:49
这个问题偶尔会出现,比较难试出来,这些确实都是需要注意的地方,但不知道是不是最终解决办法,感觉问题 ...

有没有可能是很多小问题凑在一起,导致这个死机,但是为啥只是在按下复位键时才死呢

使用特权

评论回复
15
fengyun2351|  楼主 | 2014-11-18 13:19 | 只看该作者
anjf163 发表于 2014-11-18 11:36
磁珠不要随意添加,加的位置不对会带来干扰。
VSSA 和 VSS 最好最短的导线接在地上。
VDDA 和 VSSA、VDD 和 ...

为啥是在按下复位键之后死机呢,内部哪个电路有问题死掉了呢???

使用特权

评论回复
16
Chocee| | 2014-11-18 16:31 | 只看该作者
用GD32F103VBT6试试,没有这个问题

使用特权

评论回复
17
icecut| | 2014-11-18 18:14 | 只看该作者
LS高级黑

使用特权

评论回复
18
anjf163| | 2014-11-18 18:53 | 只看该作者
fengyun2351 发表于 2014-11-18 13:19
为啥是在按下复位键之后死机呢,内部哪个电路有问题死掉了呢???

把你 MCU 的 VDDA、VDD、VSSA、VSS 供电部分的电路图贴上来看下吧。
看你最后总结的那句话,应该还是硬件干扰的问题。

使用特权

评论回复
19
handlike| | 2014-11-18 21:03 | 只看该作者
把MAX706S去掉利用MCU内部的复位看一看。

使用特权

评论回复
20
mmuuss586| | 2014-11-18 21:23 | 只看该作者
1、阻容复位的话,可以用10K电阻,106的电容;
2、用了复位芯片的话,建议用示波器看下复位的波形;
   STM的对复位芯片的,内部输出结构有要求的,最好是漏极开路输出形式;

使用特权

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

本版积分规则

1

主题

22

帖子

1

粉丝