打印

stm32f103rbt6, 手机放在50MM内, 电话打进来进入HADRFAULT

[复制链接]
4394|26
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shanggzq|  楼主 | 2011-10-25 20:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
stm32f103rbt6, 手机放在50MM内, 电话打进来进入HADRFAULT, 请教高手,怎么解决,谢谢!
沙发
香水城| | 2011-10-25 21:41 | 只看该作者
开个玩笑——换个手机啦。

虽说是个玩笑,也有一定道理:现在不少手机的辐射水平都很高,你的手机不知道怎么样?

建议:在STM32芯片的电源和地之间加一个小电容,比如100nF或10nF的,要尽可能地靠近芯片;另外要注意其他滤波电容也要遵循尽可能地靠近芯片的原则。

使用特权

评论回复
板凳
shanggzq|  楼主 | 2011-10-25 21:46 | 只看该作者
换过的好几种了(IPHON, NOKIA,杂牌的),都是一样, 在4个输入电源边上都已经有104电容了,完全按照ST提供的资料布置的, 特别是进入中断(SYSTICK, EXTI)就死, 顺序执行不会HARDFAULT.

使用特权

评论回复
地板
香水城| | 2011-10-25 21:51 | 只看该作者
104电容不是100nF,也不是10nF,ST提供的资料没有考虑这种近距离的手机干扰。

以前有客户在STR9上也出现过类似问题,就是通过在电源和地之间加小电容解决的,这个电容一定要非常靠近芯片,甚至可以直接焊在芯片的引脚上。

使用特权

评论回复
5
mxh0506| | 2011-10-25 21:51 | 只看该作者
我调试的时候手机经常放在板子旁边, 从未出过问题, 也许真的是手机不同吧.

使用特权

评论回复
6
香水城| | 2011-10-25 21:55 | 只看该作者
我调试的时候手机经常放在板子旁边, 从未出过问题, 也许真的是手机不同吧.
mxh0506 发表于 2011-10-25 21:51


其实LZ这种问题与板子的布线也有很大关系。

使用特权

评论回复
7
香水城| | 2011-10-25 21:58 | 只看该作者
画外音:我的Thinkpad电脑,也有LZ说的类似问题,手机放在键盘下方手托的位置,有外来电话时,电脑出现蓝屏。

使用特权

评论回复
8
shanggzq|  楼主 | 2011-10-25 22:04 | 只看该作者
104 !=100NF 吗?   NF != 10^3 PF吗?, 香版主请指教. 原来用 AVR  TI TMSDSP的都没有问题的, 现在找布线原因, 电容放置距离芯片VDD VSS在5MM 以内的.

使用特权

评论回复
9
香水城| | 2011-10-25 22:06 | 只看该作者
不好意思,应该是100pF或10pF;俺没有学过电子线路课程,只在中学时知道了电阻电容,:L

使用特权

评论回复
10
shanggzq|  楼主 | 2011-10-25 22:13 | 只看该作者
谢了!明天再试一下吧.

使用特权

评论回复
11
sjnh| | 2011-10-26 07:50 | 只看该作者
检查看看其它CPU链接的线,有没有特别长的、高阻的,没发现CPU有这么脆弱,
或许别的引线吸收干扰,而芯片配置了相关的中断,造成中断频繁,没有时间喂狗死机

使用特权

评论回复
12
午夜霓虹| | 2011-10-26 08:54 | 只看该作者
只能说楼主很不幸,这种问题很棘手。

使用特权

评论回复
13
shanggzq|  楼主 | 2011-10-26 09:49 | 只看该作者
狗已经关闭了,  是进入HARDFAULT; 观察进入HARDFAULT后的堆栈, 是随机的,但是在中断内死机概率高很多.顺序执行,基本没有问题.

使用特权

评论回复
14
Kitty99| | 2011-10-26 10:24 | 只看该作者
104就是0.1uF的电容

使用特权

评论回复
15
clever0725| | 2011-10-26 11:46 | 只看该作者
104 = 100nf 啊 难道错了 我都这样用了几年了

使用特权

评论回复
16
梦爱琴所| | 2011-10-26 11:58 | 只看该作者
104=10*10^4PF

使用特权

评论回复
17
mxh0506| | 2011-10-26 13:53 | 只看该作者
如果进入中断时才出问题,有必要检查一下程序。
hardfault大多源于非法的数据访问(访问无效的地址空间或跳转的目标地址不符合ARM指令体系的要求)
常见的错误引发方式是写局部数组时越界,这样会错误地改写堆栈内容,后果是灾难性的。想想看,堆栈中不仅有局部变量,还有返回地址,它们出错了不引发异常才怪.

使用特权

评论回复
18
mxh0506| | 2011-10-26 14:02 | 只看该作者
顺序执行没问题的原因可能是程序指针寄存器没有与内存交换数据(没有压栈/弹栈操作),一直在寄存器内部做增量可能会更稳定些。

使用特权

评论回复
19
shanggzq|  楼主 | 2011-10-26 14:33 | 只看该作者
修改程序, 测试EXTI, 在EXIT中断服务程序执行时,再次发生相同的中断,容易进入HARDFAULT,  但是资料上找不到这个说明 EXTI 没有响应 会升级成HARDFAULT. 不知道其他同学是否有发生这样的情况.

使用特权

评论回复
20
gaoxe| | 2011-10-26 17:49 | 只看该作者
reast受干扰 ?加100-1000p对地?

使用特权

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

本版积分规则

18

主题

71

帖子

1

粉丝