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的设备文件,实现即插即用,简化了连接过程。‌


相关推荐
Alphapeople17 小时前
安装华为CANN模型导出工具
linux·运维·服务器
-森屿安年-17 小时前
Linux - 进程
linux·操作系统
Yupureki18 小时前
《Linux系统编程》16.进程间通信-共享内存
linux·运维·服务器·c语言·数据结构·c++
小小工匠18 小时前
Linux - ARP Cache:从 `ip neigh` 到交换机转发,一次讲透主机路由表、ARP 缓存与 MAC 表
linux·tcp/ip·缓存
ayaya_mana18 小时前
NPS 内网穿透,二次开源版新增多种连接协议(含 P2P 配置)
linux·运维·服务器·网络协议·内网穿透·p2p·nps
枫桥骤雨18 小时前
Ubuntu配置XRDP远程桌面
linux·运维·ubuntu·xrdp
2401_8772742418 小时前
System V 共享内存:Linux 最高性能 IPC 的设计与实现
linux·服务器·c语言
hljqfl18 小时前
银河麒麟桌面操作系统更改ROOT密码
linux·运维·服务器
哈__18 小时前
VERT:本地文件转换自由,随时随地轻松实现
linux
今儿敲了吗18 小时前
Linux学习笔记第二章——虚拟机基础操作
linux·笔记·学习