打印

关于STM32的USB使用,在使用虚拟串口时会断开

[复制链接]
5939|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
signal1|  楼主 | 2010-1-20 21:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人设计了USB转串口电路,其硬件连接为:底层目标板(A板)---------UART-------usb转串口板(使用STM32芯片,B板)----------USB线---------PC机。
A板使用220V供电;B板使用PC机的USB供电;A、B板的连接为三线(Tx、Rx、GND,未隔离); A、B板、pc机三者共地;在PC机上使用了ST官方提供的驱动;
调试过程:用串口调试助手打开虚拟串口,PC机向A板发送数据,并能接收到A板发送的数据。保持虚拟串口打开,对A板进行断电处理,理论上来说,应该是能够继续收发数据。
问题产生:尝试多次后,串口调试助手会提示:串口打开失败,然后,虚拟串口就一直无法打开。观察设备管理器,发现虚拟串口还能识别(设为com2),可以确定STM32芯片没有重启,或者跑飞。
重新插拔USB之后,串口可以打开,与A板通信正常,再将A板断电多次后,会再次出现串口打开失败。
问题分析:可能是地线对PC机产生干扰信号,导致电脑虚拟串口断开(不知道是否分析正确),曾经做过实验,发现在A、B板之间加光耦隔离后效果会好很多
请教:有没有方法在PC机软件上操作,使得USB断开后重新连接(对驱动程序或者操作系统?)。或者硬件上解决这个干扰?我的USB硬件设计部分见附件 USB.rar (54.54 KB)
沙发
juelang| | 2010-1-21 05:00 | 只看该作者
xiexiele

使用特权

评论回复
板凳
香水城| | 2010-1-22 11:09 | 只看该作者
一般造成这个问题的原因是你的电源系统中的滤波电容太大,而你试验中断电和上电之间的间隔较短,结果电源电压没有掉下来,造成芯片不能正常复位。

使用特权

评论回复
地板
signal1|  楼主 | 2010-1-22 14:11 | 只看该作者
3# 香水城
这样会导致电脑上虚拟串口断开么?

使用特权

评论回复
5
香水城| | 2010-1-22 15:04 | 只看该作者
我不知道这是否这就是导致电脑上虚拟串口断开的根本原因,因为虚拟串口的驱动是来自微软的,我不知道具体它的内部是如何工作的。

但是我说的情况会造成下位机工作的不正常,下位机工作的不正常时虚拟串口的操作肯定也有问题。

使用特权

评论回复
6
signal1|  楼主 | 2010-1-22 19:41 | 只看该作者
5# 香水城
现在我可以确定的是A 板和B板都能正常工作的,我在程序里加了指示灯。B板可以确定是没重启

使用特权

评论回复
7
seawwh| | 2010-1-23 10:39 | 只看该作者
建议:
   将A板的电源换成电池,试验一下看看220V供电的影响。

使用特权

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

本版积分规则

2

主题

5

帖子

1

粉丝