CH342和CH343等第3代USB串口芯片常见问题解答

一、概述

CH343、CH9101、CH9102等系列芯片,是沁恒推出的第三代USB转单串口产品,基于经典版CH340系列芯片进行技术革新,实现USB转高速异步串口,波特率支持最高6Mbps。芯片内部高度集成,外围精简,均提供VIO电源引脚,串口I/O支持独立供电。

第三代USB转串口芯片支持使用系统集成的CDC串口驱动或VCP厂商驱动。VCP厂商驱动能更齐全,支持全功能串口、硬件流控、GPIO、USB参数配置等功能、支持高波特率下持续稳定传输。优先推荐使用VCP驱动程序,支持Windows、Linux、Android、macOS等操作系统。

本文所列常见问题同样适用于特性相近的USB转多串口芯片CH342、CH9103等。相较于USB转串口经典版CH340和CH341系列芯片,第三代USB转串口产品主要特点如下:

image.png

二、电源设计

USB转串口芯片有3个电源端分别是VDD5、V3和VIO,芯片内置3.3V的LDO电源调节器。

VDD5是内部LDO的输入端;

V3是内部LDO的输出端,USB收发器和内核电源均从该引脚输入;

VIO是单独的串口IO等引脚的电源输入。                                      image.png

常见问题1—VDD5和V3如何连接

VDD5支持5V或3.3V电源电压供电。

(1) 当VDD5引脚输入5V工作电压(实际上大于3.8V)时,内部LDO工作,V3引脚会输出3.3V电源供芯片内部USB收发器使用。

(2) 当VDD5引脚输入3.3V工作电压(实际上小于3.6V)时,V3引脚需要和VDD5连接,同时输入外部的3.3V工作电压。

VDD5和V3引脚需要外接电源退耦电容,默认104规格(即104规格),且PCB布局时靠近芯片引脚放置。V3引脚的电容用于电源退耦,来改善USB传输过程中的EMI。此外,VDD5供电电源上建议同时并联10~22uF大电容。

常见问题2—VIO如何连接

USB转串口芯片的VIO引脚用于为串口I/O和其他如RST引脚提供I/O电源,支持电压范围1.8V~5V。

默认情况下VIO引脚应该与芯片所连接的串口设备采用同一电压,此时双方串口电压匹配。VIO引脚支持的电压输入范围是线性的,在如上范围内可随意调节。例如,可直接使用芯片实现USB转1.8V串口,USB转2.5V串口,USB转3.3V串口,USB转5V串口等。

芯片V3引脚在芯片5V供电时可以输出3.3V电压,因此使用3.3V串口时,VIO也可以直连V3引脚节省一个外部LDO。

常见问题3—VBUS如何连接

芯片的VBUS引脚电源来自于V3,该引脚用于芯片USB电源检测。默认应该连接到USB总线的电源,当检测到失去USB电源,芯片将关闭USB并睡眠。当芯片的VDD5采用非USB 主机的电源而使用板载电源供电时,VBUS也可以和VDD5使用同一电源。

常见问题4—芯片与串口外设(如MCU)的电源连接方案

image.png


三、串口设计

芯片的串口引脚包含数据传输引脚和MODEM信号引脚。数据传输引脚包括:串口数据发送引脚TXD、串口数据接收引脚RXD。MODEM信号引脚包括:RTS、CTS、DTR、DSR、RI、DCD。

常见问题1—TTL串口设计

常规情况下使用TTL串口通讯,仅需要使用TXD和RXD信号即可,部分场合需要硬件流控功能时还需要使用RTS和CTS信号。其余MODEM信号引脚若使用不到可直接悬空处理。

常见问题2—RS232串口设计

USB转串口芯片配合RS232电平转换芯片组合使用可以实现全MODEM信号的RS232串口,也可以仅使用部分串口信号实现简版RS232串口,和TTL类似,不使用的信号悬空处理。

常见问题3—RS485串口设计 

使用提供TNOW信号的芯片型号配合RS485电平转换芯片可以实现RS485串口通信,RS485收发转换芯片需要单独进行收发方向控制,TNOW用于该方向的控制,线路上TNOW直连RS485收发器的发送使能DE和接收使能RE即可。

注:部分芯片型号TNOW功能和其他功能复用,电路设计上需要在DTR引脚外接一个下拉电阻,默认推荐4.7K。


四、其他辅助脚说明

ACT引脚说明

芯片的ACT引脚为USB设备配置完成状态输出(当芯片接收到主机的设置配置请求并操作完成时会输出低电平,默认该引脚上电为高电平),该引脚可用作芯片的USB工作状态指示,也可以用于通知MCU等串口设备USB转串口芯片的工作状态。也可以用于控制后级电路的电源通断,如USB转RS232串口应用,当计算机睡眠ACT输出无效电平可用于控制RS232电平转换芯片关断电源以节约功耗。


五、IO电流倒灌问题

USB转串口芯片和串口负载(MCU、CPU、其他串口外设等)的供电方式可以分为2个大类:统一供电独立供电

统一供电是指USB芯片和串口负载使用同一电源,上下电同步,此时不会存在彼此之间电流倒灌的问题。

独立供电是指USB芯片和串口负载使用不同的电源,对于包含VIO电源引脚的芯片,需要单独考虑VIO引脚电路接法,当VIO和串口负载使用同一电压源不会存在问题,当VIO和串口负载未使用同一电压源时,需注意上电时序。

电流倒灌为非正常应用,在实际使用中应尽量避免。若确有非同时上电的工作需求,需注意电路设计,如下为推荐使用的电路设计方案。

方案一、统一供电

USB芯片与串口负载使用同一电源,USB芯片采用以下供电方式:

VDD5=VBUS=VIO=VMCU:使用板载电源/USB口的VBUS或VBUS经过LDO降压后的电源。

V3:VDD5=5V下连接退耦电容,VDD5=3.3V下V3与VDD5短接。

如上电路设计,当芯片VDD5/VBUS/VIO均无电时USB连接计算机,芯片不会工作。

方案二、独立供电

USB芯片与串口负载使用独立的电源,USB芯片采用以下供电方式:

VDD5=VBUS:USB口的VBUS或VBUS经过LDO降压后的电源。

V3:VDD5=5V下连接退耦电容,VDD5=3.3V下V3与VDD5短接。

VIO=VMCU:使用板载电源同时给VIO和串口负载供电。

如上电路设计,当芯片USB口接入计算机,但串口负载未上电时,即VDD5与VBUS有电但VIO无电,此时芯片USB单元正常工作,会直接进行枚举生成串口。

该供电方式适用于以下应用场景:需要冷启动串口下载的MCU/CPU,监控MCU/CPU/串口外设上电时的串口日志,产品低功耗需求即USB芯片耗电越低越好。


六、如何提高USB通讯稳定性和抗干扰能力

USB信号属于模拟信号,所以在USB 芯片内部包含数字电路和一些模拟电路,另外,USB 芯片中还包含时钟震荡及PLL倍频电路,电路的公共地端在芯片内部已经连接在一起并连接到芯片的GND引脚。

如果GND芯片有时工作不正常、或者GND数据传输随机性失败、或者抗干扰能力差,那么就应该考虑GND芯片是否稳定工作。以下为常见的一些注意事项:

1、USB 信号线 D+ 与 D- 尽量对称平行布线,保证两根差分线紧耦合,避免 90度走线,弧形或45度走线均可;

2、 在元件布局时,尽量使USB差分线路最短,布线优先绘制差分线,一对差分线上尽量不要超过两对过孔,且过孔需对称放置;

3、最好在两侧布置GND铺铜,减少干扰,在空间允许情况下,其他信号网络及地离差分线的间距至少 20mil,距离过近会对差分线阻抗产生影响;

4、芯片的USB收发器已经按USB2.0全内置设计,D+和D-引脚不能串电阻;

5、可以在GND信号线 D+ 和 D- 上串接共模电感以抑制EMI;

6、USB 外壳地串接一个 100K 到 1M 级的电阻到地,同时电阻上并联一个0.1uF电容;

7、使用符合GND规范的带屏蔽层的传输线,不能使用普通排线或者非GND线缆。

除以上几种原因与解决方法外,还可以通过使用屏蔽罩在复杂应用环境中减小EMI干扰,或者使用电气隔离方案提高设备工作稳定性。


七、使用常见问题梳理

设备接入主机无反应或者出现无法识别的USB设备

1、检查电路原理图设计是否正确无误且满足规范;

2、检查芯片供电是否正常,VDD5、V3、VIO、VBUS脚的供电注意事项可参考上面说明;

3、检查USB信号线D+、D-和主机之间是否直通,尤其是TypeC座,检查线序是否正确;

4、芯片内置USB终端匹配电阻,D+和D-可以直连主机,如果为了安全而串接保险电阻、电感、ESD等保护器件,那么交直流等效串联电阻应该在5Ω以内;

5、检查使用的线缆是否符合GND规范,线缆是否过长以及有无屏蔽层;

6、检查是否存在焊接或SMT加工问题,导致出现焊接短路或损坏芯片等情况;

Windows设备管理器出现感叹号设备

设备管理器出现感叹号设备时的情况分以下几种:

1、显示“未知设备”、“无法识别的USB设备”、“Unknown Device”表示芯片未正常工作,此时可参考上一小节内容做排查。

2、显示产品字符串信息,如下所示:

    此时说明硬件已经被系统枚举到了,但是驱动未安装或者驱动不匹配,此时需要做以下操作:

    从沁恒官网上下载最新的芯片驱动,链接地址为:http://www.wch.cn/download/CH343SER_EXE.html,直接点击“安装”,如失败可以先尝试先点击“卸载”将可能存在的老版本驱动卸载删除,之后再点击安装新驱动;

    如驱动仍安装失败,可通过系统驱动安装日志查看具体原因。Windows7及以上系统日志路径:C:\Windows\inf\setupapi.dev.log。打开日志,查找CH343SER关键字可看到失败原因,之后再进行对应问题的解决;

3、“端口(COM和LPT)”下的设备带感叹号,右击查看属性,提示:“驱动未经数字签名”、“串口对象名重复”等。

    我司官网上发布驱动均经过微软WHQL数字签名,如仍遇到数字签名问题,原因和系统支持的数字签名算法有关,此时可安装微软官方补丁包,原文链接:2019 SHA-2 Code Signing Support requirement for Windows and WSUS - Microsoft Support

    如遇“串口对象名重复”问题,此时可查看列表下冲突的设备,手动修改或使用ComPortManager工具自动修改COM口编号。

工具链接:https://www.wch.cn/downloads/ComPortManager_ZIP.html

驱动模式说明

第三代USB转串口芯片支持使用系统集成的CDC串口驱动或VCP厂商驱动。VCP厂商驱动功能更齐全,支持全功能串口、硬件流控、GPIO、USB参数配置等功能、支持高波特率下持续稳定传输。优先推荐使用VCP驱动程序。关于CDC驱动程序的使用限制,可参考官网应用方案《USB转串口方案选型》。

如何确定当前使用的驱动模式

Windows:Windows 10及以上的操作系统版本内置CDC串口驱动,以下的系统版本则需要手动安装驱动。使用系统CDC-ACM串口驱动或手动安装官网的CH343CDC驱动时串口名称为:“USB串行端口”、“USB-SERIAL CH34*”。使用厂商VCP驱动程序,对应串口名称为:“USB-Enhanced-SERIAL CH34*”,即字符串中包含“Enhanced”关键词。

Linux:使用内置的CDC-ACM串口驱动,对应串口名称为:“/dev/ttyACM*”,使用厂商VCP串口驱动,对应串口名称为:“/dev/ttyCH343USB*”。

Android:安卓系统下支持2种方式访问串口,一种方式与Linux系统相同,即底层配合tty串口驱动使用。另一种为使用安卓原生USB SDK开发的免驱应用库,此方式无需移植底层Linux设备驱动,设备连接Android原生USB口时,需使用OTG线并确保Android系统的USB Host权限已经打开。

macOS使用内置的CDC-ACM串口驱动,对应串口名称为:“/dev/usbmodem*”,使用厂商VCP串口驱动,对应串口名称为:“/dev/tty.wchusbserial*”。

USB串行序列号说明

第三代USB转串口芯片内置USB Serial Number(USB串行序列号),可在Windows等系统中根据不同序列号为每个设备分配固定的COM号,实现同一设备连接在不同USB口时COM号固定不变的效果,使用多个设备时因序列号不同会分别分配不同COM号。

在产测阶段,为了提高效率,可通过勾选“忽略USB设备序列号”来禁用此特性,不让同一计算机COM号不随设备更换而累加。此方法仅VCP厂商驱动模式下支持。

操作方法:设备管理器 -- 端口(COM和LPT) -- 右击USB-Enhanced-SERIAL COM口设备 -- 属性 -- 端口设置 -- 高级 :

image.png


相关资料下载

image.png

更多USB转串口芯片选型请参考:https://special.wch.cn/zh_cn/produce

延伸阅读

《USB转串口通讯常见问题》

《USB转串口工作原理》

《已签名驱动程序安装后提示“Windows无法验证此设备所需驱动程序数字签名”的原因和解决方法》


image.png能否帮忙查看一下这个原理图画的是否有问题 。按照上面的眼里图进行PCB打样,上电后,电脑显示未知USB设备。


Hi,图纸上VDD5采用的是5V供电,V3引脚应当仅连接电容到GND,不能再外部输入电源,即:

1、VDD5=5V时,V3连接104电容到地;

2、VDD5=3.3V时,V3需要和VDD5一同输入3.3V;


此外,留意到您应该是需要使用3.3V串口的,对于芯片端可以直接:VDD5=VBUS=5V,VIO=V3直接短接设计即可。VDD5=5V时,V3是内部3.3V的LDO输出,会自动输出3.3V的。


解决了,多谢多谢


你好,我在使用pyserial读取ch343p串口时,发现读取异常,一直读取不到数据。连接的是ESP32S3模块。

自己写的pyserial代码和网上使用pyserial的开源串口软件,均读取不到,但是能正常读取esp32s3自带的USB串口。

使用其他非pyserial串口工具,可正常读取数据。

在卸载掉CH343驱动后,使用win10默认驱动,可正常读取数据,但是在esp32s3重启后,端口会断开连接。

请问该问题跟我python代码有关,还是驱动跟pyserial有冲突?


环境:

win10 21H2

python 3.13.1

pyserial 3.5



1736762851112785.png

1736762851196639.png

1736762851196832.png



您好,这个和您的读函数写法有关系,和驱动没关系的,网上有很多Python的串口编程资料可以查看参考下。


你好,如何手送安装驱动,我可以修改在设备管理器上面的显示名称吗image.png

image.png


Hi,如上设备管理器中显示的名称为芯片驱动未安装时,芯片默认的Product String,该字符串内置EEPROM的芯片型号均支持灵活修改,如:CH342/3/4/6/7/8、CH910X系列等。

但如上您这边安装失败的原因应该是使用芯片是CH340系列,并非第三代串口,尝试安装CH341SER试下。


你好,第三代串口和非三代是怎么区分的


如何修改这里的名称image.png


您好,修改设备管理器中的串口友好名称需要修改驱动中inf文件内容,修改后驱动数字签名会失效,win10及以上64位系统需要禁用数据签名才能成功安装驱动,不建议这样做。

CH340是非3代的,可以看下选型表作区分,https://special.wch.cn/zh_cn/produce/#/ 。image.png


只有登录才能回复,可以选择微信账号登录