你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32 USB虚拟串口 死掉的问题

[复制链接]
sanx 提问时间:2014-12-19 14:40 /
阅读主题, 点击返回1楼
收藏 1 评论40 发布时间:2014-12-19 14:40
40个回答
小贾-370388 回答时间:2014-12-23 14:19:15
这个应该跟st的硬件没有关系主要是跟驱动有关系
wjandsq 回答时间:2014-12-24 14:35:15
本帖最后由 wjandsq 于 2014-12-25 21:07 编辑

【原创】计算机中USB串口列表、友好名称及端点号的查找方法
一、获得计算机的串口列表,一般用两种方法:

1. 循环法 1-256, 用Windows API一个个打开,返回不存在信息的删掉,其它保留。
   这个方法很笨,但确定都是正确的。

2. 查询注册表,得到串口列表。
   这个方法很快,但有时不正确(可能会多,只多不少)。

   例如超级终端打开,占用了一个USB串口,你不关闭超级终端,但把USB串口强行拔掉。
   这时用查询注册表的方法,得到的串口列表,仍然包括已经不存在的USB串口。

   修正的方法也简单,再次使用windows API依次打开列表中的串口,发现不存在,更新下列表。


二、STM32组成的USB多路串口中设备端点号的搜索

   现在我们要掌握USB转多路串口的端点号,以便清楚地了解当前使用的STM32,是用哪个串口和
   外面的设备通讯的。这里我们安排的USB端点号和物理串口的对应关系如下:
   MI_00 <--> USART1
   MI_02 <--> USART2
   MI_04 <--> USART3

   STM32的多路串口对应的串口号是变化的,但3个端点号不会变。我们想要在上位机软件中找到诸如
   MI_00此类的信息,就要另外想办法。

   想要得到串口的具体信息,是比较麻烦的,以往程序员都采用根据设备GUID的特征进行查询,
   我发现用这个方法特别不靠谱,例如上面的串口列表,就发现了错误。

   端点信息的查询也是个麻烦事。参考Windows API相关的书,找到枚举设备的函数,
   枚举所有存在的设备,串口相关的信息如下:

(标准端口类型)
通信端口 (COM1)
通信端口 (COM1)
\Device\00000083

ELTIMA Software
ELTIMA Virtual Serial Port (COM2->COM3)
Eltima Virtual Serial Bus
\Device\00000092

ELTIMA Software
ELTIMA Virtual Serial Port (COM3->COM2)
Eltima Virtual Serial Bus
\Device\00000093

STMicroelectronics Virtual COM Port
USB\VID_0483&PID_5740&REV_0200&MI_00
USB\Class_02&SubClass_02&Prot_01
USB\Class_02&SubClass_02&Prot_01

STMicroelectronics.
STMicroelectronics Virtual COM Port (COM70)
0000.001d.0000.001.005.000.000.000.000
\Device\0000009c


  我们发现,在搜索到" STMicroelectronics Virtual COM Port "字符串时,下一行的信息是
   "USB\VID_0483&PID_5740&REV_0200&MI_00",可以根据这个信息,打开注册表,枚举这个
  注册表分支下键值的名称,友好名称的键值字符串是"STMicroelectronics Virtual COM Port (COM70)",
  然后我们分析下这个串口友好名称里的串口号,把这个串口号和实时串口列表中的号码匹配,如果一致,
  就可以确认MI_00是这个串口的端点。到此,任务完毕。

  如果只是搜索到" STMicroelectronics Virtual COM Port (COM70) "字符串,则不能确认MI_00就一定
  是它的端点号,因为其它USB设备也有可能使用MI_00,这里只能是根据MI_00信息打开注册表,
  匹配到友好名称及端口号,才可以确认MI_00就是该USB串口实际所使用的端点。

  这个功能会在以后新版本的USB Serial Tools软件中提供。

  备注: USB Serial Tools 自2012年启动开发,迄今为止,一直在成长。



回答时间:2014-12-25 10:50:04
wjandsq 发表于 2014-12-24 14:35
一、获得计算机的串口列表,一般用两种方法:

1. 循环法 1-256, 用Windows API一个个打开,返回不存在信息 ...

不用的,.NET可以直接读取到串口列表的。
AndyYau-268557 回答时间:2014-12-26 15:35:13
未遇见上述问题。建议还是从串口助手入手查找。如果是st硬件问题话,就不会现在只有你才发现。
沐紫 回答时间:2014-12-30 10:52:08
楼主哪去了呢?问题解决了不
数码小叶 回答时间:2015-1-4 10:04:32
晓枫VS枯叶 发表于 2014-12-22 12:07
楼主,串口没这么容易挂掉的吧,可能是串口助手上的串口号不能自动刷新,如果是串口运行的过程中拔掉了,有 ...

一样,突然拔掉就蓝屏
晓枫VS枯叶 回答时间:2015-1-4 11:53:33
no zuo no die ,没事别这样搞,小心电脑短命..
lkl0305 回答时间:2015-1-4 12:30:43
楼主是否安全退出了啊?
wjandsq 回答时间:2015-1-4 15:38:02
如果实在搞不定上位机,试试这个串口工具,看会不会引起蓝屏 USB_Serial_Tools.zip

sanx 回答时间:2015-1-5 11:08:00
wambob 发表于 2014-12-19 20:44
楼主的意思是使用虚拟串口,拔USB之前要关PC端串口,不关拔掉再插上USB,串口不能用? ...

重新插上之前一定要先关闭

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版