USB转串口芯片CH340与CH341使用问题汇总

news2025/1/24 5:31:04

USB转串口:

CH340C/N/K/E/B/G/T

CH341F/B/C/T/A

USB转打印口:

CH340H/S

CH341F/B/A

USB转I2C:CH341F/B/C/T/A

USB转SPI:CH341F/B/A/H

USB转并口/GPIO:CH341F/B/A

                                

芯片供电注意事项

    CH340/CH341等 USB 芯片都支持 5V 和 3.3V 电源电压,5V 供电时芯片 V3 引脚需要接一个 104 电容到地,3.3V  供电时需要注意以下几点:

    ★ 与 USB 芯片相连接的所有电路的电源电压都必须不高于 3.3V。

    ★ USB 芯片的 VCC 引脚与 V3 引脚必须短接,必须同时输入 3.3V 电源电压。

    ★ 如果使用 ESD 保护器件/瞬变电压抑制器件,那么其正电压应该是 3.3V。

芯片电平匹配问题

    CH340/CH341 芯片支持 5V与 3.3V 供电,转换的接口为 TTL 电平,输出高电平与供电电压保持一致。因此在实际使用的时候,和相连的对端设备间要注意电压匹配的问题。

    ★ 与芯片相连的 IO 引脚电压不得超过芯片供电电压,否则可能会损坏芯片;

    ★ 在 5V 供电模式下,兼容 3.3V 系统,可以直接与 5V 或 3.3V 系统连接,与 1.8V 系统连接时需要外加电平转换电路;

    ★ 在 3.3V 供电模式下,可以与 3.3V 系统连接,与 1.8V 系统连接时需要外加电平转换电路;

    ★ 降压电路可以使用简单的电阻分压法,如串联1.6K与3.3K电阻可以得到接近3.3V电压;升压电路可以参考 boost 升压电路原理进行搭建;当然除了上面的方法,也可以直接采用升降压芯片;

防止电流倒灌问题

    在串口应用中,当 CH340/CH341 与其他 IC 譬如 MCU 等芯片相互连接时,若有一方不需要供电工作时,要注意电流倒灌导致未供电的芯片开始工作或工作异常的情况,或者是通过串口下载程序时,MCU 需要复位以实现下载时,发现复位不成功,原因可能相同。解决办法:可在 CH340/CH341芯片的 发送引脚 TXD 上接一个反向二极管,然后再连接到对端 IC。在接收引脚上加一个限流电阻来防止对端 IC 对CH340/CH341倒灌电。

晶体以及电容的选用

    对于 CH340/CH341系列需要外接晶振的芯片,在选用晶振时如果选择 12MHz 的石英晶体,那么旁路电容一般选择 33pF 的独石或高频瓷片电容。如果选用的低成本陶瓷晶体,那么旁路电路的容量必须用该晶体厂家的推荐值,一般情况下是 47pF。对起振困难或者起振不稳定的晶体可以适当调整旁路电容值进行测试。

芯片CH340的V3引脚作用

    V3 的引脚除了在不同电压供电模式下接法不同,对于电容数值选用也是需要注意的。V3 引脚的电容用于内部电源节点退耦,来改善 USB 传输过程中的 EMI,通常容量在 4700pF 到 0.1uF 范围,建议容量为 0.1uF,即 104 电容。

如何提高工作稳定性和抗干扰能力

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

    如果 USB 芯片有时工作不正常、或者 USB 数据传输随机性失败、或者抗干扰能力差,那么就应该考虑 USB 芯片是否稳定工作。影响 USB 芯片工作稳定性的几大因素及解决办法如下:

1. 时钟信号不稳定

    时钟信号不稳定通常是 PCB 布线中 GND 走线不佳。参考下图,该图适用于 USB 类芯片,图中有 6个接地点,分别是 A、B、C、D、E、F,设计电路及 PCB 时应该尽量避免这 6 个 GND 点之间存在电压差(主要是指数字电路中的高频毛刺电压,也就是数字噪声)。

    ★ 尽量缩短这 6 个点之间的距离;

    ★ 类似模拟电路设计中的单点接地;

    ★ 大面积 GND 铺铜及 GND 多点过孔 VIA 降低高频信号阻抗。图中最关键的是 E 点、F 点与 D 点之间不能存在高频毛刺电压差,可以用示波器探头接 D 点测量时钟输入端 XI 引脚的 12MHz 时钟波形是否有抖动。

2. 时钟信号受干扰

    ★ PCB 设计时尽量不在晶体及震荡电容附近走线,尤其是不要走继电器、电动机等带有瞬时冲击电流的电源线和强信号线、时钟信号线、频率较高的开关信号线等;

     ★ 使晶振、外部电容与IC之间的信号线尽可能保持最短;

     ★ 在晶体及震荡电容周边布置 GND 铺铜屏蔽干扰;

     ★ 将晶体外壳接地(任何需要晶体工作的电路都可以这样设计);

     ★ 使用有源晶振等。

3. USB信号受干扰 

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

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

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

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

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

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

除以上几种原因与解决方法外,还可以通过使用屏蔽罩在复杂应用环境中减小EMI干扰。

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

     ★ 首先需要检查芯片供电是否正常,3.3V和5V供电注意事项参考上面说明;

     ★ 查看芯片是否为内置晶振版本,若为外置晶振版本,用示波器测量晶振是否起振,晶振与旁路电容参数是否匹配;

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

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

     ★ 检查电路板是否存在焊接问题,导致局部电路短路;

     ★ 控制芯片焊接最高温度与持续时间,务必控制低于 300 摄氏度且高温持续时间低于 2 分钟;

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

    设备管理器出现感叹号设备说明硬件已经被系统枚举到了,但是驱动未安装或者驱动不匹配,此时需要做以下操作:

     ★ 从沁恒官网上下载最新的芯片驱动,链接地址为:http://www.wch.cn/download/CH341SER_EXE.html,安装时先点击卸载将可能存在的老版本驱动卸载删除,之后再点击安装新驱动;

     ★ 如果使用新驱动后问题仍然无法解决,那么查看系统驱动安装日志查看具体报错原因。日志系统路径为:C:\Windows\inf\setupapi.dev.log。打开日志,查找CH341 字样可以看到失败原因,之后再进行对应问题的解决;

不同系统下面如何使用和判断设备是否正常工作

    在不同的系统环境下要分别使用相应的芯片驱动,所有驱动可以从沁恒官网搜索下载到。

     ★ Linux 系统下面使用首先需要确保系统中没有老驱动存在,系统的默认驱动目录为:/lib/modules/$(uname -r)/kernel/drivers,老驱动完整路径为 /lib/modules/$(uname -r)/kernel/drivers/usb/serial/ch341.ko。如果存在该文件,那么需要手动删除。之后编译下载的 Linux 驱动源码,将生成的新驱动文件 ch34x.ko 拷贝到原驱动路径下,然后执行 depmod 重启即可。插入设备后,可以通过 dmesg 查看设备是否枚举成功,以及驱动加载是否正常,成功会在 /dev 路径下产生 ttyUSB 开头的设备文件。

     ★ Android 系统下直接使用免驱APP就可以了,官网提供了芯片操作库以及 demo 工程源码方便二次开发,设备连接 Android 设备时,要使用 OTG 线并确保 Android 系统的 host 权限已经打开;

     ★ MacOS 下使用时首先要从官网下载最新芯片驱动,在系统上双击安装。当设备插入后,如果在系统 /dev 路径下产生 /dev/tty.wchusbserial 关键字说明设备正常工作;

Windows 系统下如何确定 COM 口为 CH340/CH341 设备

     ★ 使用软件查询法,依次打开系统的 COM 口,并以 300bps 向 COM 口发送特殊字符串 "$CH341Ser?",如果回复字符 'W'那么表明为 CH340/CH341 设备;

     ★ 使用CH341PT.DLL动态库,应用程序可以直接调用DLL中相应的API识别 CH340/CH341 串口,识别速度快,效率高。注意,CH341PT.DLL在INF中定义为可选安装,默认是安装的;

串口通讯乱码

    如果 CH340/CH341 在与其他器件进行串口通讯时出现乱码,首先需要确保双方串口设置完全相同,包括波特率、数据位、停止位、校验位等。其次需要明确双方收发误差率允许范围以及实际通讯时波特率误差。CH340/CH341 串口接收信号的允许波特率误差不小于 2%,CH340G/CH340T/CH340R 串口发送信号的波特率误差小于 0.3%,CH340C/CH340E/CH340B 小于 1%,明确范围后测量实际通讯波特率误差是否满足此条件。另外需要注意,如果实际通讯模型是 TTL 转 RS232 通讯,那么需要测量最终通讯接口误差,因为信号经过电平转换芯片后误差会放大。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/468377.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

定时器按键消抖

用到按键就要处理因为机械结构带来的按键抖动问题,也就是按键消抖。 按键消抖原理:在按键按下以后延时一段时间再去读取按键值,如果此时按键值还有效就表示这是一次有效的按键,中间的延时就是消抖的。 但是,延时函数…

《梦幻西游H5》L inux搭建游戏服务器!

西游H5 linux 架设教程 准备工具: Termux(安卓) Notepad SecureCRT WinSCP 安装宝塔直接运行命令即可。 yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.s…

在 Ubuntu 18.04 中配置静态 IP 及灵活切换

Ubuntu 18.04 使用 Netplan 来配置 IP 地址,Netplan 是一个新的命令行网络配置工具。 新的 IP 配置方法不会再用到 /etc/network/interfaces 这个文件,取而代之的是一个 YAML 文件。 默认的 Netplan 配置文件一般在 /etc/netplan 目录下。 查看当前 i…

opencv_04条形码区域分割

基于OpenCV的条形码区域分割 要基于OpenCV实现条形码区域分割,可以按照以下步骤进行: 加载图像:使用OpenCV中的imread函数读取待处理图像。灰度化:使用OpenCV中的cvtColor函数将彩色图像转换为灰度图像。边缘检测:使用…

java-android面试-线程状态

开篇一张图(本图来源于网络),余下全靠编,我们正式开始。 一、线程的状态 总共有6种状态,分别如下: 1. 新建状态(New): 线程对象被创建后,就进入了新建状态。例如,Thread thread …

ShareSDK Google平台注册指南

注册开发者账号 访问Firebase,使用Google账号登录 创建项目 登录完成后,点击转到控制台 点击添加项目 输入项目名称,点击继续 根据需要选择是否开启Google Analytics(分析),点击继续 选择Google Analytic…

04 【Sass语法介绍-运算】

1.前言 运算是一种通过已知量可能的组合,获得新的量的行为。Sass 中也为我们提供了各种各样的运算,以便我们更好的处理样式代码。本节我们将学习 Sass 中的数字运算、关系运算、除法运算、颜色运算、字符串运算等等… 2.什么是 Sass 运算? …

ArcGIS Pro坐标系统

目录 1 测量学基础 1.1 地球的形状和大小 1.1.1 大地水准面 1.1.2 大地体 1.1.3 地球椭球 2 坐标系统 2.1 地理坐标系 2.2 投影坐标系 2.3 局部坐标系(假定坐标系) 2.4 高程坐标系 3 地图投影 3.1 投影概念 3.2 投影分类 3.3 投影类型 3.…

长按实现安卓端下载图片和安装包

①长按按钮保存图片至安卓手机相册 using System.Collections; using System.Collections.Generic; using UnityEngine;public class LongPress : MonoBehaviour {//设置变量记录触摸时间与bool触摸private float touchTime;private bool newTouch = false;void Update () {//判…

在线问诊小程序系统方案以及价值

方案价值zlzwgz0127 1.扩大医院流量 a.预约到院 在线展示专家的介绍,更能彰显实力,吸引患者来院就医, 用户可选择在线问诊和预约到院 b.社区团购导流 与我们合作社区团购给医院的体检产品导流 c.专家直播导流 通过专家直播吸引潜在患者…

( 哈希表) 1. 两数之和 ——【Leetcode每日一题】

哈希表使用 O ( N ) O(N) O(N) 空间复杂度存储数据,并且以 O ( 1 ) O(1) O(1) 时间复杂度求解问题。 ❓1. 两数之和 难度:简单 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数&am…

计算机网络【1】 TCP/IP

OSI七层模型与TCP/IP四层模型 首先简单说一下OSI参考模型,OSI将网络分为七层,自下而上分别是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层,而TCP/IP体系结构则将网络分为四层,自下而上分别是网络接口层、网络层、…

如何冲破 GPT-4 的信息茧房?

由于大模型的成功经验,整个 AI 领域纷纷转向,要么是将模型架构换为 Transformer,要么是将小模型换为大模型,要么是将建模方式换为自监督、自回归范式等等。 GPT-4 推出后,各种 demo 充斥网络空间,写代码、…

论文投稿指南——如何让SCI论文英语更地道(细节掌握)

​ 学术论文英文写作都要符合ABC三个基本点:准确、简洁和清晰 (Accurate\Brief\Clear),在此基础上做好必要的细节,可以让你的英文写作更地道化、学术化。以下建议可供各位小伙伴参考: 一、错误用法 ★ So/But/And/Also…等连接词…

如何判定自己适合自学编程还是报班?

首先在这里,不做偏向性推荐,主要还是看个人条件。 宝剑锋从磨砺出,学习本身是一件艰苦的事情。在决定之前,建议先按照下图问自己三个问题自我检测。 如果你还不能确定,自学和报班的优劣势分析,或许能帮你们…

Spring JDBC和事务控制

目录 Spring JDBC 和 事务控制主要内容Spring 整合 JDBC 环境构建项目添加依赖坐标添加 jdbc 配置文件编写 spring 配置文件配置数据源C3P0 数据源配置DBCP 数据源配置 模板类配置Spring JDBC 测试 (入门)创建指定数据库创建数据表使用 JUnit 测试JUnit …

面试题30天打卡-day14

1、线程的生命周期是什么,线程有几种状态,什么是上下文切换? 线程通常有五种状态:创建,就绪,运行、阻塞和死亡状态。 新建状态(New):新创建了一个线程对象。就绪状态&am…

超赞的实用前端社区精选?

转载 作者:黑马程序员前端 链接:https://www.zhihu.com/question/39503897/answer/2998752442 社区精选 | 好的前端社区可以根据其特点和领域进行分类整理: 1. 问答社区 Stack Overflow(https://stackoverflow.com/&#xf…

【一起撸个DL框架】3 前向传播

CSDN个人主页:清风莫追 欢迎关注本专栏:《一起撸个DL框架》 文章目录 3 前向传播🥝3.1 前情提要3.2 前向传播:递归的forward方法3.3 再添乘法节点:搭建函数y2x13.4 小结 3 前向传播🥝 3.1 前情提要 上一篇…

vue - 实现对div的拖动功能

实现对div的拖动功能,需要先要知道以下的一些原生事件和方法; 1,事件: 方法描述onmousedown鼠标按钮被按下onmousemove鼠标被移动onmouseup鼠标按键被松开 2,方法: 方法描述event.clientX返回当事件被触发时鼠标指针相对于浏览…