多个USB转串口设备区分方法

概述

当计算机或者其他USB主机上使用多个USB转串口设备时,会遇到多个串口无法与具体的串口设备对应起来的问题,包括更换不同USB端口串口序号发生改变,多个设备USB插拔顺序不同导致串口序号改变等问题。

本文提出几种常见解决方式,用于解决开发及使用过程中遇到的问题。部分方法同样适用于单个USB串口设备连接的场景。

一、USB设备硬件信息不同

当使用不同厂家的USB转串口芯片或同一厂家不同系列的USB转串口芯片,可使用以下几种常用方法用于区分多个设备。

  • 通过USB设备描述符中设备信息

USB厂商ID、USB产品PID、USB厂商字符串、USB产品字符串、串行序列号等
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8jXNw4Ly-1617787981278)(多个USB转串口设备区分方法.assets/wps1.jpg)]

  • 通过虚拟串口驱动生成的设备名称

当使用不同的VCP厂商驱动或类驱动时,串口设备名称会有区别。如:

Windows操作系统使用USB转串口芯片CH340和CH343时,设备管理器信息:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LkoWJYrY-1617787981281)(多个USB转串口设备区分方法.assets/wps2.jpg)]
Linux操作系统下分别生成ttyUSB设备和ttyACM设备(当CH343使用系统自带CDC串口驱动时)。
在这里插入图片描述
Android系统下进行免驱USB应用开发,可直接调用UsbDevice类提供的接口函数。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BB4CMDr6-1617787981288)(多个USB转串口设备区分方法.assets/wps4.jpg)]

  • 通过VCP厂商驱动提供的应用层接口

如使用CH340芯片及驱动时,可通过沁恒提供的动态库及API接口函数来判断当前操作的串口是否为CH340或CH341。

Windows系统下动态库CH341PT.DLL,接口函数:CH341PtNameIsCH341、CH341PtHandleIsCH341。除此之外,该动态库还提供USB热插拔检测等功能。当使用新一代USB转串口芯片CH342/CH343/CH344/CH9101/CH9102/CH9103时可使用CH343PT.DLL进行设备识别以及获取芯片相关信息等。

二、USB设备硬件信息相同时

当使用USB硬件信息完全相同的USB转串口芯片,可使用以下几种常用方法用于区分多个设备。

  • 通过串口MODEM信号线

通常USB转串口芯片,除提供TXD和RXD异步串口信号,还支持MODEM联络信号RTS、DTR、DCD、RI、DSR、CTS等。其中RTS与DTR信号可用作通用输出信号,CTS、DSR、RI、DCD信号可用作通用输入信号。可利用输入信号或输入与输出信号的组合来区分不同串口设备。

除了可以作为通用输出输入功能的MODEM信号引脚外,一些USB转串口芯片还额外提供了GPIO引脚,也可以用于如上组合检测,比如:CH9102、CH9101、CH9103、CH9344等。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HhbsYY9f-1617787981289)(多个USB转串口设备区分方法.assets/image-20210322134313551.png)]

  • 使用输入信号

在设备上电工作前根据需要将相应输入信号置高或拉低。操作串口时,主动获取MODEM输入信号的电平状态,根据状态区分串口设备。如:当使用4路输入信号的组合,最多可以区分2的4次方 = 16种串口外设。

  • 使用输出与输入信号的组合

在设备上电工作前根据需要将输出信号与输入信号短接(可1对1,也可以1对多)。操作串口时,置高或拉低MODEM输出信号,然后读取与其短接的输入信号的电平状态,根据状态是否同步区分硬件。如:短接DTR和DSR信号,先置低DTR,读取DSR是否为低。再置高DTR,读取DSR是否同步为高。

  • 通过串口应用协议

串口通信双方可事先约定好通信协议,通过串口数据内容来确认串口设备的“身份”。比如同一台计算机下需要接入多台串口设备,约定身份确认通信格式为:

计算机:包头+获取身份命令码+包尾+校验

设备:包头+身份ID+包尾+校验

当需要与其中某个具体串口设备通讯前,可先按照通信命令发送数据包,等待设备回复后,提取“身份ID”用于计算机确认设备“身份”。

三、如何选型与设计

尽管USB转串口芯片内置信息相同或者不同时均有对应的处理方案,但如上各方法需要依赖于硬件设计和软件设计,在产品设计前均要提前合理规划。

总结与建议:

  1. 操作多个USB设备信息不同的芯片的便利在于,同一芯片型号的硬件设计可以完全相同,不需要管理多套硬件。此时建议选用支持USB配置功能的USB串口芯片。如:CH342F、CH343P、CH9102F、CH9103M、CH9101U/H、CH340B等,使用厂商提供的专用配置工具可以灵活配置芯片内部相关信息。
  2. 当使用串口应用协议区分时,需要遍历操作系统下各个串口,当设备处于独占状态下会存在串口无法打开的情况。
  3. 当使用MODEM信号或GPIO信号用于区分多个串口设备时,需要在硬件设计阶段将相应信号管脚连接起来。应用软件同样需要遍历操作各串口。
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PC技术小能手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值