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

szhengxindz   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)

回复评论 (6)

                                 xiexiele
点赞  2010-1-21 05:00
                                 一般造成这个问题的原因是你的电源系统中的滤波电容太大,而你试验中断电和上电之间的间隔较短,结果电源电压没有掉下来,造成芯片不能正常复位。
点赞  2010-1-22 11:09

这样会导致电脑上虚拟串口断开么?
点赞  2010-1-22 14:11
我不知道这是否这就是导致电脑上虚拟串口断开的根本原因,因为虚拟串口的驱动是来自微软的,我不知道具体它的内部是如何工作的。

但是我说的情况会造成下位机工作的不正常,下位机工作的不正常时虚拟串口的操作肯定也有问题。
点赞  2010-1-22 15:04

现在我可以确定的是A 板和B板都能正常工作的,我在程序里加了指示灯。B板可以确定是没重启
点赞  2010-1-22 19:41
建议:
   将A板的电源换成电池,试验一下看看220V供电的影响。
点赞  2010-1-23 10:39
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复