目录
[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)接口转换为通用异步收发传输器(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串口模块)
验证测试的参考
- 烧录固件后,接入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
...
- 列出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。)
- 查看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的设备文件,实现即插即用,简化了连接过程。