USB转串口设备如何固定串口号

news/2024/11/30 5:52:04/

使用USB转串口设备或多个USB转串口设备级联扩展多串口时,会经常遇到USB设备插拔顺序不固定、插入的USB主机口位置不固定、系统重新开机等操作导致设备对应串口号发生改变,影响产品使用的情况。

Windows系统固定串口号

在Windows系统上对于此需求推荐使用内置USB Serial Number(USB串行序列号)的USB转串口芯片,可实现同一物理设备在系统上分配的串口号固定不改变。原理如下:

Windows USB虚拟串口驱动的COM口分配一般均遵循以下原则:

  1. 针对USB描述符中内置USB Serial Number(USB串行序列号)的USB串口设备如CH343,默认系统会根据设备内置的SN编号,为其分配固定的COM口号,此时可以实现设备连接不同USB口时COM口均固定不变的效果,连接多个不同设备时因各芯片的USB Serial Number编号均不同,会分别对应生成不同的固定COM口。
  2. 针对USB描述符不包含USB Serial Number的USB串口设备如CH340和CH341,系统会根据设备的USB Location(USB位置)来分配COM口号,当连接不同的USB口时,因为USB端口的位置不同所以生成的COM口号也不同。

此外配合沁恒提供的专用串口号管理工具“ComPortManager”可轻松实现多设备的串口管理,可对指定设备或系统所有串口设备进行串口号一键管理,结合芯片内置USB Serial Number的特性,一次修改,永久生效。除此之外,还支持驱动安装时分配固定的串口号。

常用USB转多串口芯片:

型号

CH347T

CH344Q

CH9344L

CH348L

CH348Q

USB

480M高速

480M高速

480M高速

480M高速

480M高速

串口数量

2

4

3

8

8

最高波特率

7.5Mbps

6Mbps

12Mbps

6Mbps

6Mbps

IO电压

3.3V

3.3V

3.3V/2.5V/1.8V

3.3V/2.5V/1.8V

3.3V

RS485控制

封装

TSSOP20

LQFP48

LQFP48

LQFP100

LQFP48

型号

CH342F/K

CH9103M

CH344L

CH9104L

USB

全速

全速

全速

全速

串口数量

2

2

4

4

最高波特率

3Mbps

3Mbps

230400bps

6Mbps

IO电压

5V/3.3V/

2.5V/1.8V

5V/3.3V/

2.5V/1.8V

3.3V

3.3V

RS485控制

CH342F支持

封装

QFN24/ESSOP10

QFN40

LQFP48

LQFP48

ComPortManager软件介绍

Windows系统上可使用ComPortManager工具软件批量管理计算机串口设备COM口号,工具支持单独和批量修改系统下串口设备的端口号,支持USB转串口、PCI(e)转串口、BLE/以太网转串口等设备类型,支持设备的主动扫描和热插拔检测。串口更改支持2种方式:串口号依次递增或根据设备在系统下的物理位置进行分配。

串口号依次递增方式下对于每个多串口设备,更改成功后其第一个物理串口对应“起始串口号”,然后依次增加。如以下界面展示,目标设备为USB转4串口芯片CH344,指定起始串口号为COM10,则修改成功后与物理串口的匹配关系:UART0—>COM10、UART1—>COM11、UART2—>COM12、UART3—>COM13。

  • 串口设备类型选择:USB转串口/PCI(e)转串口/BLE与以太网转串口/所有类型
  • 枚举串口:主动搜索当前系统所有串口设备
  • 串口卡排列顺序:按位置排列/按串口数量排列
  • 串口设备信息栏
  • 串口设备对应的COM口详细信息栏
  • 需要更改的目标设备
  • 指定串口号更改方式:依次递增/根据HUB位置的串口号设定更改
  • 更改串口号:更改过程可能会与其他原有COM口冲突,需注意提示信息
  • 软件信息输出窗口
  • 设备详细信息栏

Linux系统固定串口号

Linux USB虚拟串口驱动的COM口分配一般均遵循以下原则:

Linux系统下的串口名称分配和硬件的上电顺序有关,如果是开机启动或者接在同一HUB下面,则由系统枚举各USB设备的顺序相关。先枚举成功的设备先进行串口名分配。如使用2个USB转8串口产品CH348,先插入系统的分配的为:ttyCH9344USB0~7,后插入的分配为:ttyCH9344USB8~15。

通过udev工具实现为USB转串口设备固定串口名称的实现原理与方法,该方法也适用于其他USB设备驱动。

udev运行在用户态,脱离驱动层的关联,基于这种设计实现,用户可以通过编写规则来动态删除和修改/dev下的设备文件,任意命名设备。除了设备重命名外,还拥有修改设备访问权限的功能,可以实现在普通用户模式下操作/dev下系统设备,无需root模式下进行。

每当udevd收到uevent事件时就会去匹配规则,匹配成功后执行规则对应的操作。用户自定义规则放到/etc/udev/rules.d/目录下,以rules为扩展名。

通过udevadm命令(udevadm info -a -n /dev/ttyCH343USB0)或者sysfs(ls -la /sys/class/tty)可以查看USB串口芯片详细信息,如下以双串口芯片CH342举例:

规则匹配主要基于几个字段:

KERNELS:kernel对设备的命名,此处为设备路径(Location ID)

ATTR/ATTRS:设备的属性,如idProduct/idVendor

SUBSYSTEMS:设备类型

ACTION:设备触发的操作,如add/change/remove

根据设备信息可在/etc/udev/rules.d/创建自定义规则usb-ch342.rules,内容如下:

注:DRIVERS信息为设备加载的驱动名,CH342支持VCP厂商驱动和CDC驱动类型,默认建议使用VCP驱动,DRIVERS为“ch343”,CDC驱动下DRIVERS为“cdc_acm”。

如上规则使用了设备的VID,PID与USB接口号。(每个物理串口分别对应一个USB接口)当使用多个USB转串口产品时可以通过设备的其他属性来区分设备:如插入主机的USB Location或者芯片的设备描述符等。通过命令:udevadm control --reload-rules && udevadm trigger让规则立即生效或重启后自动生效。

当CH342设备接入后即可在/dev下查看到SYMLINK中命名的ttyGPS与ttyBLE串口设备。若需要区分多个CH342设备,可结合KERNELS字段,即设备路径(Location ID)进行区分。

关于计算机端应用软件如何区分多个USB转串口设备,以及如何区分同一个USB转串口硬件的多个串口,可以移步至其他博客。


http://www.ppmy.cn/news/252063.html

相关文章

第十九节 串口通讯与终端设备

本章主要讲解串口和终端设备的基本使用,并且通过这个过程解构如何使用ioctl 系统调用向设备文件写入特别的命令,控制硬件。我们需要熟悉ioctl 的使用,是因为在后面编写驱动时,某些硬件需要向内核提供ioctl 所需的操作方法。 串口…

linux查看所有串口和usb设备方法

1、查看串口是否可用 可以对串口发送数据比如对com1口,echo /dev/ttyS0 2、查看串口名称使用 ls -l /dev/ttyS* 一般情况下串口的名称全部在dev下面,如果你没有外插串口卡的话默认是dev下的ttyS*,一般ttyS0对应com1,ttyS1对应com2&#xff…

图文直播功能(互动功能接收端JS-SDK)

图文直播 功能概述 图文直播,即用直播画面与说明文字的形式,以时间轴方式完整详细地记录整场活动/课堂。 当用户错过直播的开始时间,中途进入直播,可通过图文直播的记录对错过的直播进行回顾了解,实现直播信息的有效…

基于jupyter的轮廓检测及功能

文章目录 一、实验介绍二、实验步骤三、实验任务任务一:轮廓特征练习一: 找到每个轮廓的方向任务二:边界矩形练习二: 围绕轮廓裁剪图像 总结 一、实验介绍 1. 实验内容 本实验将学习轮廓检测及功能。 2. 实验要点 生成二进制图像来查找轮廓找到并画出…

Day_44希尔排序

目录 一. 关于希尔排序 二. 希尔排序的实现过程 三. 希尔排序的代码实现 1. 核心代码 2. 修改后的代码 四. 代码展示 五. 数据测试 六. 总结与反思 一. 关于希尔排序 希尔排序按其设计者希尔(Donald Shell)的名字命名,该算法由希尔在 19…

PAT A1013 Battle Over Cities

1013 Battle Over Cities 分数 25 作者 CHEN, Yue 单位 浙江大学 It is vitally important to have all the cities connected by highways in a war. If a city is occupied by the enemy, all the highways from/toward that city are closed. We must know immediately …

IMX6ULL裸机篇之I2C实验之从设备代码实现

一. I2C实验 本文介绍 I2C实验,关于 从设备 AP3216C传感器的I2C代码实现。 AP3216C从设备是 三合一传感器,即作为 I2C通信中从设备使用。 以下文章是关于 I2C实验,关于主控制器(即主设备)端的 I2C代码实现&#xff…

电能管理系统多功能电力仪表的应用 安科瑞 许敏

摘 要:基于车间用电设备的电能管理系统架构思路及实施方法,从硬件和软件方面对此方法进行了阐述。对车间旧设备改造以及新的电能管理系统提供一种思路和便捷的方法。 关键词:电能管理系统;多功能电力仪表;PLC&#x…