Linux USB HOST 外接USB转串口模块

目录

目录

前言

DTS配置的参考

内核配置的参考

[USB Subsystem内核配置](#USB Subsystem内核配置)

[USB Phy内核配置](#USB Phy内核配置)

[USB Host Core驱动内核配置](#USB Host Core驱动内核配置)

[USB EHCI驱动内核配置](#USB EHCI驱动内核配置)

[芯片平台USB Host Controller驱动内核配置](#芯片平台USB Host Controller驱动内核配置)

USB转串口设备驱动内核配置

验证测试的参考

总结


前言

USB转串口模块的核心功能是作为硬件桥梁,将通用串行总线(USB)接口转换为通用异步收发传输器(UART)或RS-232/RS-485等串行接口,实现现代设备与传统串行设备之间的数据通信。‌12

‌协议转换与数据传输:‌ 该模块内部集成专用芯片(如CP2102N、FT232RL或CH340),负责处理USB与串行协议之间的转换,包括数据包的拆分、重组、波特率同步及错误检测,确保数据在高速USB与低速串行总线间稳定传输;例如,上位机通过USB发送数据包时,模块会将其解析并串行化输出至TXD引脚,接收方向则相反。‌

USB转TTL串口转换模块常用于USB接口转换为TTL(逻辑电平)串口,以便与其它串口设备进行通信。这里主要是指主控外接USB转TTL串口模块后再与UART接口的BLE、Wi-Fi、GSM/GPRS、315MHz/433MHz、GPS等模块通信。


DTS配置的参考

bash 复制代码
/* usb20 host controller */
   usb_1: usb1@YYYYYYYY {
        compatible = "xxx,xxx-usb";
        reg = <0xYYYYYYYY 0xYYY>;
        interrupts = <GIC_SPI INT_USB20_HOST IRQ_TYPE_LEVEL_HIGH>;
 
        clocks = <&ahbX_gate 9>, <&ahbX_reset 9>;
        clock-names = "usb_gate", "usb_reset";
 
        xxx,usbphy = <&usbphy_1>;
 
        dr_mode = "host"; /* 配置成了USB host模式 */
   ...

内核配置的参考

USB Subsystem内核配置

bash 复制代码
CONFIG_USB_SUPPORT=y
CONFIG_USB_ARCH_HAS_HCD=y

USB Phy内核配置

bash 复制代码
CONFIG_USB_PHY=y
CONFIG_USB_NX_PHY=y

USB Host Core驱动内核配置

bash 复制代码
CONFIG_USB_COMMON=y
CONFIG_USB=y
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
CONFIG_USB_DEFAULT_PERSIST=y

USB EHCI驱动内核配置

bash 复制代码
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_EHCI_ROOT_HUB_TT=y
CONFIG_USB_EHCI_TT_NEWSCHED=y
CONFIG_USB_EHCI_HCD_PLATFORM=y

芯片平台USB Host Controller驱动内核配置

bash 复制代码
CONFIG_USB_XXX=y
CONFIG_USB_XXX_HOST=y
CONFIG_USB_XXX_DEBUG=y

USB转串口设备驱动内核配置

bash 复制代码
   CONFIG_USB_SERIAL=y
   CONFIG_USB_SERIAL_GENERIC=y
   CONFIG_USB_SERIAL_CH341=y (用于CH34X芯片的USB转TTL串口模块)
   CONFIG_USB_SERIAL_PL2303=y(用于PL2303X芯片USB转TTL串口模块)

验证测试的参考

  1. 烧录固件后,接入USB转TTL串口模块,正常开机,命令行终端可以输入:dmesg | grep "usb",探测到该USB转TTL串口模块的打印如下:
bash 复制代码
# dmesg | grep "usb"
  ...
  [    0.071219] nx_usb xxxxxxxx.usb0: xxx_hdc_nx_probe done.
  [    0.443378] usb 1-1: new full-speed USB device number 2 using xxx_hdc
  [    0.649005] usb 1-1: New USB device found, idVendor=1a86, idProduct=7523, bcdDevice= 2.63
  [    0.649014] usb 1-1: New USB device strings: Mfr=0, Product=2, SerialNumber=0
  [    0.649019] usb 1-1: Product: USB2.0-Serial
  [    0.670264] usbcore: registered new interface driver usbserial_generic
  [    0.670331] usbserial: USB Serial support registered for generic
  [    0.670410] usbcore: registered new interface driver ch341
  [    0.670477] usbserial: USB Serial support registered for ch341-uart
  [    0.675144] usb 1-1: ch341-uart converter now attached to ttyUSB0 (从这里可以知道USB转TTL串口模块的设备节点是/dev/ttyUSB0)
  [    0.846868] usbcore: registered new interface driver usbhid
  [    0.846872] usbhid: USB HID core driver
  ...
  1. 列出USB设备列表,查看USB转TTL串口模块的USB设备信息是否存在。例如:
bash 复制代码
# lsusb
  Bus 001 Device 001: ID 1d6b:0002
  Bus 001 Device 002: ID 1a86:7523(这里USB转TTL串口模块的VID是1a86,PID是7523。)
  1. 查看USB设备信息存在后,进行收发数据测试。例如,主控<--->USB转TTL串口模块<--->SIM900A GSM/GPRS模块:
bash 复制代码
# microcom -s 9600 /dev/ttyUSB0
  ATI
  SIM900A R11.0

  OK
  AT
  OK
  AT+CSQ
  +CSQ: 10,0

  OK

总结

USB转串口模块的核心功能是‌将主控的USB接口转换为串行通信接口‌,实现不同设备间的数据交互。它通过协议转换和电平兼容,支持多种串口标准(如TLL、RS232和RS485等)和高速数据传输,广泛应用于嵌入式开发、工业控制、物联网设备调试等领域。而Linux内核原生支持多种USB转串口芯片(如CH340、CP2102、FT232等),能够自动识别并加载驱动,生成如/dev/ttyUSBx的设备文件,实现即插即用,简化了连接过程。‌


相关推荐
ppo_wu2 小时前
Kafka 3.9.0:部署、监控与消息发送教程
java·linux·spring boot·分布式·后端·spring·kafka
zly35002 小时前
Linux Centos7 网络设置UUID号的修改方法
linux·运维·服务器
艾莉丝努力练剑2 小时前
艾莉丝努力练剑的2025年度总结
java·大数据·linux·开发语言·c++·人工智能·python
林政硕(Cohen0415)5 小时前
ARM Linux Qt Widget 虚拟键盘输入法移植
linux·arm开发·qt·键盘·输入法
haimin037113 小时前
linux设置CPU固定频率
linux·运维·服务器
大聪明-PLUS13 小时前
Linux:处理器释放内存
linux·嵌入式·arm·smarc
渣渣盟13 小时前
NFS服务器配置全攻略:从入门到精通
linux·运维·服务器
一只旭宝13 小时前
Linux专题九:I/O复用(水平以及边缘触发放到libevent库那一专题细讲)
linux·运维·服务器
缘如风14 小时前
Linux上sunrpc 111端口关闭
linux·服务器