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


    使用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转串口硬件的多个串口,可以移步至其他博客。

  • 相关阅读:
    ORM基本操作
    mysql面试题49:MySQL中不同text数据类型的最大长度
    是什么原因导致自我破坏行为?(你如何停止?
    Compose 官方课程启动!把握机会学习并成为 Android 专业开发者
    深入理解计算机系统:内存越界引用和缓冲区溢出
    Vue中插槽slot
    【算法】滑动窗口
    【git】TortoiseGit图标不显示 及 文件夹中.git文件夹不显示
    JAVA 注解小结
    机器学习(十九):梯度提升回归(GBR)
  • 原文地址:https://blog.csdn.net/WCH_TechGroup/article/details/127373168