12603|4

3

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

静电干扰后STM32处于怎样的情况?(以及USB如何恢复) [复制链接]

本人刚用STM32不到一年,因为这次遇到的问题实在不知道要如何解决,故上来求助。



问题如下:

产品功能是一个USB-HID键盘设备,外壳是金属的,已与主机电源的地线相接。



在干燥天气时,人体对键盘的金属外壳放静电,会导致键盘输入功能失效,已测试遇到的情况有如下几种:

(以下情况是同一种电路板,焊接了多块测试出的,每一块都会产生所有的情况)

1、对键盘外壳放静电,导致无法输入内容,windows系统里没有USB断开的声音。

2、对键盘外壳放静电,导致无法输入内容,windows系统里有USB断开的声音,过了大约1秒之后又有USB连上,然后恢复输入。

3、对主机电源外壳放电,也会产生如上的两种情形。

(主机上同时插有雷柏和logit的键鼠,静电产生后仍然能正常使用)



使用bus hound检测USB的时候,产生静电时会提示以下内容:


13  USTS   04 00 00 c0                pid stalled    4.0ms    123906.1.0        

13  USTS   00 70 00 c0                error          9.4ms    123907.1.0        




使用SWD在板子上进行监控,当静电释放到外壳后,产生如上情况,此时想看MCU运行到哪里时,SWD提示找不到设备……





程序中没有使用看门狗。

在main程序的开始增加了一个LED闪烁0.2秒的程序,当静电释放后原以为MCU会进行复位,但实际上静电后,输入失效,灯并没有闪烁,也就是并没有进行复位动作。





原理图和电路板如下:











总结:

静电后有时候USB会自动重连,有时候USB会卡住没有反应。

SWD在静电后无法查看MCU运行到哪里,每次都会失去连接……

MCU并没有复位到main函数的开头(因为启动文件里直接指向main,可以说是没有进行复位动作)



疑问:

MCU在地线遇到静电之后运行到了哪里?(不知道这个静电问题是需要从硬件上避免,还是从软件上去解决)

现在希望避免USB失去连接(希望不要断开重连,因为上位机对应的游戏程序不支持),要如何在USB出错后,不重新检测设备的情况下恢复到正常状态?





万分感谢各位!


此帖出自stm32/stm8论坛

最新回复

静电可能打坏芯片,当然也有可能导致程序跑飞。一般来说,会再设备的输入端口上加入静电防护芯片,例如:D+和D-之间连接静电芯片,在外壳到底之间并联电容和电阻等。再就看你的单片机旁路电容,好像完全没有,这几个电容应该在每一个VDD与地之间连接,而且要尽快能的靠近VDD,否则没有任何意义。  详情 回复 发表于 2015-6-2 07:56
点赞 关注
 

回复
举报

2

帖子

1

TA的资源

一粒金砂(初级)

沙发
 
学习下牛人的文章,增加夯实自己
此帖出自stm32/stm8论坛
 
 

回复

4996

帖子

19

TA的资源

裸片初长成(初级)

板凳
 
静电可能打坏芯片,当然也有可能导致程序跑飞。一般来说,会再设备的输入端口上加入静电防护芯片,例如:D+和D-之间连接静电芯片,在外壳到底之间并联电容和电阻等。再就看你的单片机旁路电容,好像完全没有,这几个电容应该在每一个VDD与地之间连接,而且要尽快能的靠近VDD,否则没有任何意义。
此帖出自stm32/stm8论坛
 
个人签名我的博客
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

4
 
zhaojun_xf 发表于 2015-6-2 07:56
静电可能打坏芯片,当然也有可能导致程序跑飞。一般来说,会再设备的输入端口上加入静电防护芯片,例如:D+和D-之间连接静电芯片,在外壳到底之间并联电容和电阻等。再就看你的单片机旁路电容,好像完全没有,这几个电容应该在每一个VDD与地之间连接,而且要尽快能的靠近VDD,否则没有任何意义。

感谢!旁路电容确实布置有问题,以及没有对D+ D-做任何保护……我改进这两点之后再试试看
此帖出自stm32/stm8论坛
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

5
 
zhaojun_xf 发表于 2015-6-2 07:56
静电可能打坏芯片,当然也有可能导致程序跑飞。一般来说,会再设备的输入端口上加入静电防护芯片,例如:D+和D-之间连接静电芯片,在外壳到底之间并联电容和电阻等。再就看你的单片机旁路电容,好像完全没有,这几个电容应该在每一个VDD与地之间连接,而且要尽快能的靠近VDD,否则没有任何意义。

经过测试静电打上去程序并没有跑飞,但是USB寄存器的RESET置1了,尝试加了USB信号线的保护芯片还是如此……有点奇怪
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表