CH341 & CH348
ChatGPT 回答
类别 | 可能原因 | 检查方法 | 解决方案 |
---|---|---|---|
硬件问题 | 电源不稳定 | 测量 USB 电源电压是否稳定在 5V | 使用外部供电或在电源线上加滤波电容 |
接口接触不良 | 更换 USB 数据线或检查接头和接口是否松动 | 使用高质量的 USB 数据线和接口 | |
外部电磁干扰 | 检查设备周围是否有高频或强磁干扰源 | 添加屏蔽层,数据线上增加磁环 | |
硬件损坏 | 更换 USB 转串口设备或接口模块 | 更换故障模块 | |
软件/驱动问题 | 驱动不兼容 | 查看 dmesg 日志,检查驱动报错信息 |
更新驱动或使用设备官方提供的驱动 |
数据流量过大或缓冲区溢出 | 测试传输速率,检查是否超出设备限制 | 降低波特率或减少数据传输频率 | |
串口被意外挂起 | 查看 dmesg 是否有 USB disconnect 类信息 |
禁用 USB 自动挂起 | |
系统配置问题 | 波特率或协议配置错误 | 确认应用程序设置的串口参数与设备实际支持的一致 | 修改应用程序中的串口参数 |
串口资源冲突 | 检查是否有其他程序占用了相同串口 | 确保每个串口设备有唯一的分配 | |
数据链路问题 | 数据丢失或错误 | 使用调试助手监控数据帧是否丢失或校验错误 | 使用带校验的通信协议 |
数据冲突 | 降低每路串口通信频率 | 使用队列机制调度串口数据 | |
系统性能问题 | CPU 性能不足 | 查看系统 CPU 使用率是否过高 | 优化程序逻辑或减小数据量 |
内核线程阻塞 | 查看 dmesg 或系统内核日志 |
优化线程调度 | |
固件问题 | 芯片固件存在 Bug | 查看是否有最新固件版本 | 更新 USB 转串口芯片固件或嵌入式设备固件 |
可能原因
电磁干扰(EMI)
- 设备附近有强电磁干扰源:如高功率电机、无线电设备等。
- 线缆未屏蔽:多路串口信号容易受干扰。
- 接地不良:设备接地电位差导致干扰信号增大。
供电问题
- 供电不足:
- USB接口供电能力不足(如主机或USB HUB供电不够)。
- 多路串口设备消耗的电流超出USB供电能力。
- 供电不稳定:劣质电源或过长的USB线缆导致电压降。
串口通信问题
- 波特率过高:高波特率增加通信敏感性,易受干扰。
- 流控设置不当:硬件流控(RTS/CTS)或软件流控(XON/XOFF)配置错误。
- 协议配置不匹配:多路设备数据格式(如校验位、停止位)不一致。
USB接口问题
- 带宽不足:USB 2.0或USB 3.0接口带宽被多个设备占用。
- 接口质量问题:松动或接触不良导致掉线。
- 设备过多:USB Hub下挂载的设备超出支持能力。
环境因素
- 高温或低温:极端温度影响设备稳定性。
- 机械振动:接口松动或线缆接触不良。
驱动或系统问题
- 驱动不兼容:USB转串口芯片(如FTDI、CH340、PL2303等)驱动版本过旧或与系统不兼容。
- 系统资源不足:嵌入式设备或PC负载高时,串口通信可能中断。
- 驱动冲突:多个相同型号的串口设备导致资源冲突
硬件设计缺陷
- 芯片质量问题:低成本的USB转串口芯片可能存在性能缺陷。
- PCB布局不合理:信号线未正确屏蔽或滤波。
解决方法
减少电磁干扰
- 使用屏蔽线缆:确保USB线和串口线有良好的屏蔽层。
- 加装磁环:在USB线和串口线缆上安装磁环,抑制高频干扰。
- 远离干扰源:将设备和线缆放置在远离强电磁场的环境中。
- 检查接地:确保设备和电源系统接地良好。
优化供电
- 独立供电:
- 使用外部供电的USB Hub,避免仅依赖主机USB供电。
- 确保电源输出电流满足多路串口设备的需求。
- 高质量电源:选择低纹波、高稳定性的电源适配器。
- 避免长线缆:减少电压降引起的不稳定。
调整通信参数
- 降低波特率:将波特率设置为设备支持的较低值(如9600bps)。
- 一致的协议参数:
- 校验位、数据位、停止位保持一致。
- 确认流控设置正确。
- 避免多线程竞争:在软件中优化对多路串口的访问。
改善USB接口条件
- 升级USB接口:
- 使用USB 3.0接口以提高带宽和供电能力。
- 避免多个设备共享一个USB Hub。
- 检查接口连接:确保接口紧固,避免松动。
- 使用高质量线缆:选择低阻抗、短线长的USB线缆。
软件和驱动优化
- 更新驱动:使用最新的串口芯片驱动程序(如CH340、FTDI等)。
- 优化系统资源:
- 在PC端减少不必要的任务负载。
- 嵌入式设备中避免高CPU占用。
- 检查驱动冲突:避免多个设备使用相同的驱动导致冲突。
硬件升级
- 更换高质量设备:选择性能可靠的USB转串口模块。
- 优化PCB设计:
- 加强电源滤波。
- 增加信号屏蔽和地线布局。
- 引入缓冲芯片:在多路串口通信链路中加入缓冲芯片提高抗干扰能力。
环境改进
- 稳定温湿度:确保设备工作在适宜的温度和湿度环境中。
- 固定设备和线缆:避免因机械振动造成接口松动。
案例-USB驱动有明显报错日志
[ 0.298197] usbcore: registered new interface driver usbfs
[ 0.303834] usbcore: registered new interface driver hub
[ 0.309288] usbcore: registered new device driver usb
[ 0.862768] usbcore: registered new interface driver asix
[ 0.868921] usbcore: registered new interface driver ax88179_178a
[ 0.875842] usbcore: registered new interface driver cdc_ether
[ 0.882441] usbcore: registered new interface driver cdc_eem
[ 0.888890] usbcore: registered new interface driver rndis_host
[ 0.895637] usbcore: registered new interface driver cdc_ncm
[ 0.902045] usbcore: registered new interface driver qmi_wwan
[ 0.908571] usbcore: registered new interface driver cdc_mbim
[ 1.249949] usbcore: registered new interface driver cdc_acm
[ 1.265413] usbcore: registered new interface driver cdc_wdm
[ 1.272022] usbcore: registered new interface driver uas
[ 1.278143] usbcore: registered new interface driver usb-storage
[ 1.284946] usbcore: registered new interface driver ums-alauda
[ 1.291852] usbcore: registered new interface driver ums-cypress
[ 1.298702] usbcore: registered new interface driver ums-datafab
[ 1.305539] usbcore: registered new interface driver ums_eneub6250
[ 1.312533] usbcore: registered new interface driver ums-freecom
[ 1.319354] usbcore: registered new interface driver ums-isd200
[ 1.326074] usbcore: registered new interface driver ums-jumpshot
[ 1.332969] usbcore: registered new interface driver ums-karma
[ 1.339611] usbcore: registered new interface driver ums-onetouch
[ 1.346541] usbcore: registered new interface driver ums-realtek
[ 1.353342] usbcore: registered new interface driver ums-sddr09
[ 1.360309] usbcore: registered new interface driver ums-sddr55
[ 1.367177] usbcore: registered new interface driver ums-usbat
[ 1.373902] usbcore: registered new interface driver usb_ch341
[ 1.408009] usbcore: registered new interface driver usb_ch9344
[ 3.115363] usb 1-1: new high-speed USB device number 3 using sunxi-ehci
[ 3.435591] sunxi-ehci 4200000.ehci1-controller: ehci_irq: highspeed device disconnect
[ 3.444674] sunxi-ehci 4200000.ehci1-controller: ehci_irq: highspeed device connect
[ 3.505322] usb 1-1: device descriptor read/64, error -71
[ 3.936104] sunxi-ehci 4200000.ehci1-controller: ehci_irq: highspeed device disconnect
[ 3.945026] sunxi-ehci 4200000.ehci1-controller: ehci_irq: highspeed device connect
[ 4.005839] usb 1-1: device descriptor read/64, error -71
[ 4.126466] usb usb1-port1: attempt power cycle
[ 4.765699] sunxi-ehci 4200000.ehci1-controller: ehci_irq: highspeed device disconnect
[ 4.774617] sunxi-ehci 4200000.ehci1-controller: ehci_irq: highspeed device connect
[ 4.835282] usb 1-1: new high-speed USB device number 4 using sunxi-ehci
[ 5.285265] usb 1-1: device not accepting address 4, error -71
[ 5.585445] sunxi-ehci 4200000.ehci1-controller: ehci_irq: highspeed device disconnect
[ 5.594356] sunxi-ehci 4200000.ehci1-controller: ehci_irq: highspeed device connect
[ 5.655274] usb 1-1: new high-speed USB device number 5 using sunxi-ehci
[ 6.105275] usb 1-1: device not accepting address 5, error -71
[ 6.111893] usb usb1-port1: unable to enumerate USB device
[ 6.118128] sunxi-ehci 4200000.ehci1-controller: ehci_irq: highspeed device disconnect
[ 6.127046] sunxi-ohci 4200400.ohci1-controller: ohci_irq: fullspeed or lowspeed device connect
[ 6.262487] sunxi_usb_udc 4100000.udc-controller: 4100000.udc-controller supply udc not found, using dummy regulator
[ 6.615328] usb 2-1: new full-speed USB device number 2 using sunxi-ohci
[ 6.878370] usb 2-1: not running at top speed; connect to a high speed hub
[ 6.904688] hub 2-1:1.0: USB hub found
[ 6.910385] hub 2-1:1.0: 4 ports detected
[ 7.245331] usb 2-1.4: new full-speed USB device number 3 using sunxi-ohci
[ 7.418365] usb 2-1.4: not running at top speed; connect to a high speed hub
[ 7.464252] usbcore: registered new interface driver rtk_btusb
[ 10.306737] usbcore: registered new interface driver rtl8723du
[ 10.635364] android_work: sent uevent USB_STATE=CONNECTED
[ 10.753612] configfs-gadget gadget: high-speed config #1: c
[ 10.761406] android_work: sent uevent USB_STATE=CONFIGURED
[ 780.965266] usb 2-1.2: new low-speed USB device number 4 using sunxi-ohci
[ 781.148165] input: SIGMACHIP Usb Mouse as /devices/platform/soc@3000000/4200400.ohci1-controller/usb2/2-1/2-1.2/2-1.2:1.0/0003:1C4F:0034.0001/input/input6
[ 781.170119] hid-generic 0003:1C4F:0034.0001: input,hidraw0: USB HID v1.10 Mouse [SIGMACHIP Usb Mouse] on usb-sunxi-ohci-1.2/input0
[ 783.485308] usb 2-1.2: reset low-speed USB device number 4 using sunxi-ohci
[ 806.905318] usb 2-1.2: reset low-speed USB device number 4 using sunxi-ohci
[ 807.808308] usb 2-1.2: USB disconnect, device number 4
设备描述符读取失败 (error -71)
-71 错误通常表示 USB 设备协议错误,可能的原因包括:
- 设备硬件故障
- USB 接口接触不良
- USB 供电问题
- USB 线缆或端口不兼容
[ 3.115363] usb 1-1: new high-speed USB device number 3 using sunxi-ehci
[ 3.435591] sunxi-ehci 4200000.ehci1-controller: ehci_irq: highspeed device disconnect
[ 3.444674] sunxi-ehci 4200000.ehci1-controller: ehci_irq: highspeed device connect
[ 3.505322] usb 1-1: device descriptor read/64, error -71
[ 3.936104] sunxi-ehci 4200000.ehci1-controller: ehci_irq: highspeed device disconnect
[ 3.945026] sunxi-ehci 4200000.ehci1-controller: ehci_irq: highspeed device connect
[ 4.005839] usb 1-1: device descriptor read/64, error -71
[ 4.126466] usb usb1-port1: attempt power cycle
[ 4.765699] sunxi-ehci 4200000.ehci1-controller: ehci_irq: highspeed device disconnect
[ 4.774617] sunxi-ehci 4200000.ehci1-controller: ehci_irq: highspeed device connect
[ 4.835282] usb 1-1: new high-speed USB device number 4 using sunxi-ehci
[ 5.285265] usb 1-1: device not accepting address 4, error -71
[ 5.585445] sunxi-ehci 4200000.ehci1-controller: ehci_irq: highspeed device disconnect
[ 5.594356] sunxi-ehci 4200000.ehci1-controller: ehci_irq: highspeed device connect
[ 5.655274] usb 1-1: new high-speed USB device number 5 using sunxi-ehci
[ 6.105275] usb 1-1: device not accepting address 5, error -71
日志解析
这里插入的是鼠标
这两行日志显示 USB 设备在低速模式下被重置了两次,间隔约 23 秒。这通常表示设备在通信过程中出现问题,系统尝试重置设备以恢复正常工作。
[ 780.965266] usb 2-1.2: new low-speed USB device number 4 using sunxi-ohci
[ 781.148165] input: SIGMACHIP Usb Mouse as /devices/platform/soc@3000000/4200400.ohci1-controller/usb2/2-1/2-1.2/2-1.2:1.0/0003:1C4F:0034.0001/input/input6
[ 781.170119] hid-generic 0003:1C4F:0034.0001: input,hidraw0: USB HID v1.10 Mouse [SIGMACHIP Usb Mouse] on usb-sunxi-ohci-1.2/input0
[ 783.485308] usb 2-1.2: reset low-speed USB device number 4 using sunxi-ohci
[ 806.905318] usb 2-1.2: reset low-speed USB device number 4 using sunxi-ohci