USB转串口那些事儿—电源与防倒灌设计

news2024/11/15 4:54:38

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

一、供电说明

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

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

  1. 当USB芯片先上电,USB芯片可正常工作。
  2. 当USB芯片后上电,串口负载会先通过USB芯片的串口等引脚灌入一定电流,如果此电流在芯片电源端形成的倒灌电压正好处于芯片正常工作电压的临界值附近,那么会存在一定概率导致USB芯片无法正常工作,现象为:接入计算机无任何反应或出现无法识别的USB设备。

电流倒灌为非正常应用,在实际使用中应尽量避免。若确有非同时上电的工作需求,需注意电路设计。如下以CH343芯片为例(其他带VIO的USB转串口芯片与此同理),列举常见的几种连接方案,可以根据不同的需求灵活选用。

CH343芯片的电源说明

  • 芯片有3个电源端,内置5V转3.3V的电源调节器。
  • VDD5是内部电源调节器的输入端,支持5V或者3.3V电源电压.
  • V3是电源调节器的输出端和USB收发器及内核电源输入端,VDD5电压小于3.6V时连接VDD5输入外部电源,当VDD5电压大于3.6V时外接退耦电容。
  • VIO是I/O端口电源输入端。芯片的VIO引脚用于为串口I/O和其他引脚提供I/O电源,VIO应该与MCU等外设使用同一电源。

二、供电方案说明

方案一、统一供电

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

  • VDD5=VBUS=VIO:使用板载电源/USB口的VBUS电源/VBUS经过LDO电压转换后的输出电源
  • V3:VDD5=5V下连接退耦电容,VDD5=3.3V下V3与VDD5短接。

如上电路设计,当芯片USB口接入计算机,但整板未上电时(VDD5、VBUS、V3与VIO均无电),此时USB芯片不会工作。当整板上电后USB芯片才开始工作。

方案二、独立供电

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

  • VDD5与VBUS短接:使用USB口的VBUS电源/VBUS经过LDO电压转换后的输出电源
  • V3:VDD5=5V下连接退耦电容,VDD5=3.3V下V3与VDD5短接。
  • VIO:使用USB口的VBUS电源/VBUS经过LDO电压转换后的输出电源/VDD5=5V时V3引脚输出的3.3V电源

如上电路设计,当芯片USB口接入计算机,但串口负载未上电时,即VDD5与VBUS有电但VIO无电,此时芯片不会工作。当串口负载上电后USB芯片才进行枚举。

方案一和方案二使用板载电源的情况下当板载电源未上电,USB芯片不会工作,计算机上无法使用串口。对于某些应用场景会有限制,如:需要冷启动串口下载的MCU/CPU,以及需要读取MCU/CPU/串口外设上电时的串口数据等应用场景。

方案二使用非板载电源时(直接/间接使用VBUS电源),芯片USB口接入计算机,会直接进行枚举生成串口,可解决如上使用场景限制,但此时会存在USB芯片和串口负载因上下电时序不一致产生的电流倒灌问题,电路设计上需要增加额外处理。有如下几种方案可供参考:

三、独立供电时的防倒灌处理

此供电方式下需要先确定导致器件无法正常工作的灌电流通过什么引脚产生,这里以串口的TXD和RXD为例列举常用的防止或减小倒灌电流的电路。

当RXD侧器件无电,采用二极管隔断TXD引脚的对外输出电流。

当RXD侧器件通电时,TXD默认输出高电平,RXD默认为上拉高电平,此时二极管不导通;当TXD输出低电平,低电平期间二极管导通,RXD接收到低电平。

注:若RXD的内部结构非上拉输入,则还需要在RXD端增加上拉电阻以保持默认的空闲高电平状态。 

当TXD侧器件无电,二者之间串联电阻限流,可减小RXD引脚对外的上拉电流。(因RXD脚为输入脚,只能被动接收信号,因此不能采用二极管方案)

使用NMOS管可以完全隔离RXD对外的上拉电流,其工作原理为:RXD连接NMOS的D极,VCC连接NMOS的G极,TXD连接NMOS的S极。

当TXD侧器件无电,NMOS不导通,RXD和TXD之间未导通;

当TXD侧器件通电,驱动TXD为高电平时,NMOS不导通,RXD保持默认高电平;TXD为低电平时,NMOS导通,RXD和TXD直连被下拉为低电平;

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

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

相关文章

【异常错误】Unexpected option: --local_rank=0(pycharm可以run但是不可以debug)

今天在使用用run运行shell文件转为的cmd命令后,run可以正常运行,但是debug却出现问题,错误信息: Usage:pydevd.py --port N [(--client hostname) | --server] --file executable [file_options] Traceback (most recent call la…

复习C中文件操作

文章目录 Ⅰ. 重新谈论文件Ⅱ. C语言中的文件接口1、打开文件2、关闭文件3、读写函数4、文件的随机读写① fseek函数(指定文件指针的位置)② ftell函数(求文件指针与起始位置的偏移量)③ rewind(让文件指针回到起始位置…

pdf转为ppt的超简单方法,就用这几个!

在我们的工作和生活中,PDF文件是不可或缺的文件格式之一。它以高准确性、整齐的页面排版和流畅的翻页而闻名,为我们处理文档提供了很大的帮助。然而,PDF文件的一个缺点是无法进行修改。当我们不小心输入错误数据或需要进行编辑时,…

python 常用数据结构-集合

Set集合 Set 集合集合定义集合使用:创建集合使用:成员检测集合方法集合方法 add()集合方法 update()集合方法 remove()集合方法 discard()集合方法 pop()集合方法 clear() 集合运算集合运算:交集集合运算:并集集合运算&#xff1a…

JAVA结课作品——超市管理系统

项目描述:一个简单的超市管理系统,能够实现用户登入和注册功能,共分为前台和后台两个主要界面,普通用户界面操作权限收到限制,只能对商品和销售记录进行简单查询操作,后台中可以进行商品的删除、修改、查询…

Java 设计模式——单例模式

目录 1.结构2.实现2.1.饿汉式2.1.1.静态变量2.1.2.静态代码块2.1.3.枚举方式 2.2.懒汉式2.2.1.synchronized 线程安全2.2.2.双重检查锁2.2.3.静态内部类方式 3.破坏单例模式3.1.序列化反序列化3.2.反射 4.问题解决5.JDK 源码解析——Runtime 类 1.结构 (1&#xff…

03-MySQL-基础篇-SQL之DDL语句

SQL之DDL语句 前言DDL数据库操作表操作查询操作数据类型案例修改删除 前言 *本篇来学习下SQL中的DDL语句 DDL 全称Data Definition Language,数据定义语言,用来定义数据库对象(数据库,表,字段) 数据库操作 查询所有数据库 s…

数字与字符的对决:力扣“将所有数字用字符替换”的独特方法

本篇博客会讲解力扣“1844. 将所有数字用字符替换”的解题思路,这是题目链接。 本题的解题思路是:遍历字符串,按照题目描述修改字符。 有一个需要注意的点:循环的结束条件是什么呢?是s[i] ! \0’吗?不是的…

多线程(2):线程同步

线程同步是在多线程编程过程中对数据保护的一种机制,保护的数据是共享数据。共享数据就是多个线程共同访问的一块资源,也就是一块内存。假设有3个线程,其中A,B线程在同一个时间点往这块内存中写数据,于此同时C线程往这块内存中读数…

视频编码流程 YUV数据编码为H264数据

文章目录 1.视频编码流程2.实战demo3.相关编码知识点讲解1. 参数设置问题:2. 关于av_opt_set3. 关于码流设置 1.视频编码流程 2.实战demo #ifndef MAINBACK_C #define MAINBACK_C #endif // MAINBACK_C #include <stdint.h> #include <stdio.h> #include <stdl…

火车头采集器AI伪原创[php源码]

本文介绍php版本的火车头采集器AI伪原创&#xff0c;对于网站的原创内容&#xff0c;站长朋友们一定很头疼。作为一个草根站长&#xff0c;自己写原创文章太累了。当然&#xff0c;我并不是说你不能写。自己写原创文章是不现实的。时间是最大的问题。 也许有的站长朋友会问&…

自定义封装Mybatis的过程

手写持久层框架思路分析&#xff1a; 步骤1:加载数据库配置信息&#xff0c;包括数据库url&#xff0c;端口&#xff0c;数据库名字&#xff1b;加载所有sqlmapper文件。 步骤2: 创建javaBean&#xff0c;全局配置类&#xff0c;Configuration&#xff0c;映射配置类&#xff…

香橙派和树莓派基于官方外设开发

香橙派和树莓派基于官方外设开发 1.wiringPi外设SDK安装 方式一&#xff1a; git clone https://github.com/orangepi-xunlong/wiringOP //下载源码 cd wiringOP //进入文件夹 sudo ./build clean //清除编译信息 sudo ./build //编译方式二 通过windows浏览器打开https://…

全网最新网络安全学习路线

在各大平台搜的网安学习路线都太粗略了。。。。看不下去了&#xff01; 我把自己整理的系统学习路线&#xff0c;拿出来跟大家分享了&#xff01;点击查看详细路线图 建议的学习顺序&#xff1a; 一、网络安全学习普法&#xff08;心里有个数&#xff0c;要进去坐几年&#xf…

Java入门教程||Java 网络编程||Java 发送邮件

Java 网络编程 网络编程是指编写运行在多个设备&#xff08;计算机&#xff09;的程序&#xff0c;这些设备都通过网络连接起来。 java.net包中J2SE的API包含有类和接口&#xff0c;它们提供低层次的通信细节。你可以直接使用这些类和接口&#xff0c;来专注于解决问题&#…

基于simulink视频处理系统多核仿真(附源码)

一、前言 此示例演示如何使用 Simulink中的数据流执行域在多个内核上运行视频处理系统。 数据流执行域允许您在计算密集型系统的设计中使用多个内核。此示例演示数据流作为子系统的执行域如何提高模型的模拟性能。 二、视频中的对象计数 此示例演示如何使用基本形态运算符从…

Docker部署Doris超详细图文教程

Doris安装有非常多的方法&#xff0c;这里主要介绍Docker中使用dev容器用来学习和测试的方法&#xff0c;避免在其他教程中踩坑(生产环境不建议使用Docker安装) 这里介绍一个不踩坑的docker本地单机版&#xff0c;笔者安装环境为Windows下的Docker&#xff0c;若为Linux系统安装…

SwiftUI + Swift 设备振动

如何让设备振动呢 iPhone 6S 3D Touch&#xff0c;可以识别轻&#xff0c;中&#xff0c;重三种按压力度&#xff0c;配合恰到好处的振动有利于提升交互体验&#xff0c;但后面的新设备都不支持 3D Touch 了&#xff0c;改为了检测按压时间&#xff0c;按同一个图标&#xff0…

如何用canvans实现地图上的运动轨迹

1.先需要一个地图的图片 2.通过canvas绘制出运动轨迹 // 创建渐变function createGradient(context, p0, p1) {const gradient context.createLinearGradient(p0.x, p0.y, p1.x, p1.y);gradient.addColorStop(0, "rgba(255, 0, 255, 0)");gradient.addColorStop(1,…

颜色渐变的数据密集适用的堆叠图

一般情况会用柱状图去堆叠&#xff0c;但是如果数据量太大了&#xff0c;就可考虑这种方式堆叠。可以呈现时间和数量上不同层次数据的变化。 效果图&#xff1a; 比较详细的注释一下源码&#xff1a; import matplotlib as mpl import matplotlib.pyplot as plt import numpy …