串口单线半双工转换电路

用来把单线半双工模式的串口转换成双线,然后才能连接到普通的双线USB 串口模块,比如CH340 之类的。电路设计来自大佬的博客:AVR half-duplex software UART supporting single pin operation。他在Arduino 上用软件模拟串口功能,利用这个电路,可以进一步减少串口占用的引脚,ARM 单片机一般都有硬件单线半双工模式,就不用折腾软件时序了,不过软件串口可以在所有IO 引脚上实现通信,某些情况下还是方便的。

电路

在这里插入图片描述

左边的RTX 连接到单片机的单线串口引脚,右边TXDRXD 分别连接到另一端的对应引脚,比如,可以按下面这种方式连接:

在这里插入图片描述
这个电路要求:

  1. RXD 引脚固定为输入模式,有内部上拉;
  2. TXD 引脚在空闲时输出高电平;
  3. RTX 引脚在输出和输入模式之间切换,输入模式要有内部上拉;

RTX 端发送数据时,RTX 引脚为推挽输出模式,CH340 端的TXD 引脚必须保持高电平空闲状态。此时三极管基极跟随TXD 引脚保持高电平。如果RTX 输出高电平,三极管不会导通,RXD 内部上拉为高电平;如果RTX 输出低电平,三极管导通,RXD 被拉低。为了避免短路,RTX 引脚上串了个限流电阻。

RTX 端接收数据时,RTX 引脚设为上拉输入模式。当TXD 输出高电平,二极管不导通,RTX 保持高电平,RXD 也保持高电平 ;TXD 输出低电平,就通过二极管把RTX 拉低,此时三极管基极也是低电平,不会导通,所以RXD 仍然是高电平,CH340 的输出不会干扰它自身的输入。

可见,核心逻辑是利用TXD 作为控制RXD 的使能信号,从而阻止回环;引脚利用内部上拉保持默认状态,输出引脚基本上只负责输出低电平。这个电路以及配套的软件串口代码我在Arduino 上测试过,完全OK。不过,稍微有个问题:要是通信双方的信号电平不一致怎么办?

如果电平不一致

比如,RTX 端的单片机是3.3V 电平,CH340 则是5V 电平,1.7V 的压差足以导通二极管和三极管,必须重新考虑一下上面的电路原理。

RTX 为接收状态,TXD 通过二极管输出低电平时,情况和之前一样;TXD 输出的5V 高电平则会通过三极管的BE 节跑到RTX 那边去,因为这时候RTX 电压比较低,于是三极管导通。

一方面,这会让RTX 被输入的5V 电平拉高,有1k + 100 的限流电阻,问题不大,不会冒烟;单片机的3.3V 电源轨可能会收到干扰,但是问题应该也不大,5V 经过两个二极管之后就接近3.3V 了。另一方面,此时三极管导通了,那么RXD 的电压肯定会被略微拉低,应该不足以直接拉到低电平。

RTX 为发送状态,输出低电平时情况没有异常,而高电平时,就如上面所说,TXD 上的5V 会跑过去、RXD 会被三极管略微拉低,总的来说应该是可以兼容的。

可以把三极管换成NMOS,比如SI2300,电路接成这样:

在这里插入图片描述
这样一来,CH340 一侧的5V 就不会再冲到单片机一侧了。SI2300 的GS 阈值电压很低,1.7V 就足以导通,所以RXD 还是会被拉低到3.3V,要是再换成阈值比较高的2N7002,就基本没问题了。用NMOS 的话,1K 限流电阻也可以去掉。

如果单片机是5V,而CH340 是3.3V,这种情况看着倒是更危险一点,因为RTX 的5V 电平会直接冲到TXD,而串联的限流电阻却不能太大,否则波特率就要降低。估计CH340 的引脚是有5V 耐受能力的吧~

要是上面这些估计“问题不大”的地方实际都不行的话,就只能考虑另外附加电平转换电路,呃,这可有点烦人了,不如调整一下CH340 这边的供电,让它和单片机那边一致。

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

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

相关文章

测试PG中事务隔离级别

我们知道事务隔离级别有:读未提交,读已提交,可重复读,可序列化。 读未提交 存在 脏读,不可重复读,幻读; 读已提交 存在 不可重复读,幻读 可重复读 存在 幻读 PG 下默认为读已提交…

微信小程序使用蓝牙连接硬件

目录 一、蓝牙官方api文档 二、蓝牙重要参数介绍 三、案例教程 1. 获取蓝牙权限(openBluetoothAdapter) 2. 开始搜索蓝牙设备(startBluetoothDevicesDiscovery) 3. 监听搜索到新设备的事件(onBluetoothDeviceFound) 4.连接蓝牙设备(crea…

SpringData JPA - ORM 框架下,打造高效数据访问层

目录 一、SpringData JPA 概述 1.1、什么是 JPA 1.2、什么是 ORM 1.3、什么是 Hibernate 1.4、JPA 和 Hibernate 的关系 1.5、JPA 的优势 二、SpringData JPA 实战开发 2.1、依赖 2.2、配置文件 2.3、启动类 2.4、创建实体 2.5、基于 JpaRepository 的 CRUD 三、…

网络安全审计

一、什么叫网络安全审计 网络安全审计是按照一定的安全策略,利用记录、系统活动和用户活动等信息,检查、审查和检验操作时间的环境及活动,从而发现系统漏洞、入侵行为或改善系统性能的过程,它是提高系统安全性的重要手段。 系统…

数据结构:时间复杂度/空间复杂度

目录 一、时间复杂度 定义 常见的时间复杂度 如何计算时间复杂度 计算方法 三、实例分析 二、空间复杂度 定义 重要性 常见的空间复杂度 二、空间复杂度 定义 重要性 常见的空间复杂度 计算方法 三、实例分析 大O的渐进表示法 最好情况(Best Case…

spring框架学习记录(1)

前半个月一直在应付期中考试,快被折磨似了orz 文章目录 SpringIoC(Inversion of Control) 控制反转与DI(Dependency Injection)依赖注入bean相关bean配置bean实例化bean的生命周期 依赖注入相关依赖注入方式依赖自动装配 容器创建容器获取bean Spring IoC(Inversi…

leetcode295. 数据流的中位数

class MedianFinder {//A为小根堆&#xff0c;B为大根堆List<Integer> A,B;public MedianFinder() {A new ArrayList<Integer>();B new ArrayList<Integer>();}public void addNum(int num) {int m A.size(),n B.size();if(m n){insert(B,num);int top …

BeanFactory 源码浅析

BeanFactory 功能介绍 BeanFactory 是核心容器&#xff0c;负责管理 Bean 对象 BeanFactory 接口的功能只有一个 getBean() 方法BeanFactory 的实现类&#xff08;DefaultListableBeanFactory&#xff09;包含&#xff1a;控制反转、基本的依赖注入、Bean 生命周期的各种功能…

从浏览器输入url到页面加载(八)你的web网站有几台服务器?

你有没有想过一个问题&#xff0c;做为一名前端开发&#xff0c;你的网站上线后&#xff0c;准备了几台服务器&#xff1f;前端静态资源用了几台&#xff0c;你调接口的那个后端部署了几台&#xff1f; 目录 1 没接触过这个问题很正常 2 当访问量上升的时候 2.1 提升带宽 …

绝了!这是我见过最详细的HashMap源码解析

1 概述 HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长. HashMap是非线程安全的,只适用于单线程环境,多线程环境可以采用并发包下的concurrentHashMap HashMap 实现了Serializable接口&#x…

ArmSoM-Sige5 RK3576开发板 正式发布!

简介​ ArmSoM-Sige5 采用Rockchip RK3576第二代8nm高性能AIOT平台&#xff0c;6 TOPS算力NPU&#xff0c;最大可配16GB大内存。支持8K视频编解码&#xff0c;拥有丰富的接口&#xff0c;支持双千兆网口&#xff0c;WiFi6 & BT5和多种视频输出。支持多种操作系统&#xff…

HTML5实用大全(Part.2)

引言&#xff1a; 哈喽&#xff0c;各位小伙伴们大家好呀&#xff0c;学习了上一篇关于HTML5的文章后&#xff0c;你是否对于入门HTML5有了一定的基础了呢&#xff0c;本篇博客我们将继续学习HTML5的不同标签&#xff0c;跟上队伍&#xff0c;准备出发咯&#xff01; 1.标签之…

2024五一杯数学建模竞赛A题完整成品论文和代码分析:建立钢板切割的工艺路径动态规划、贪心与分层优化模型

2024五一杯数学建模竞赛A题&#xff1a;建立钢板切割的工艺路径动态规划、贪心与分层优化模型 2024五一数学建模A题完整代码和成品论文获取↓↓↓↓↓ https://www.yuque.com/u42168770/qv6z0d/gyoz9ou5upvkv6nx?singleDoc# 本文文章较长&#xff0c;建议先目录。经过不懈的…

三星一季度利润飙涨932%!AI引爆存储热,未来研发狠砸AI

⏩三星一季度利润飙涨932%&#xff01;AI引爆存储热&#xff0c;未来研发狠砸AI 三星电子公布了第一季度财报数据&#xff0c;显示其利润飙涨932.8%。得益于AI拉动的广泛支出&#xff0c;三星电子一季度利润激增。三星表示&#xff0c;预计第二季度业务将主要由生成式人工智能…

算法学习系列(五十四):单源最短路的综合应用

目录 引言一、新年好二、通信线路三、道路与航线四、最优贸易 引言 关于这个单源最短路的综合应用&#xff0c;其实最短路问题最简单的就是模板了&#xff0c;这是一个基础&#xff0c;然后会与各种算法结合到一块&#xff0c;就是不再考察单个知识点了&#xff0c;而是各种知…

ASP.NET图书馆管理信息系统

摘  要 本文首先阐述了基于.NET Framework平台的图书馆管理信息系统的开发背景以及其实践意义&#xff0c;其次说明了图书馆管理信息系统的功能以及相比同类软件的创新之处。然后就图书馆管理系统开发中所使用的一些的技术进行研究探讨。主要针对数据库的设计技术、存储过程…

Copilot Venture Studio創始合伙人楊林苑確認出席“邊緣智能2024 - AI開發者峰會”

隨著AI技術的迅猛發展&#xff0c;全球正逐步進入邊緣計算智能化與分布式AI深度融合的新時代&#xff0c;共同書寫著分布式智能創新應用的壯麗篇章。邊緣智能&#xff0c;作為融合邊緣計算和智能技術的新興領域&#xff0c;正逐漸成為推動AI發展的關鍵力量。借助分布式和去中心…

Docker——部署LNMP架构

目录 一、LNMP架构概述 1.项目环境 2.服务器环境 3.需求 二、搭建Linux系统基础镜像 三、部署Nginx 1.建立工作目录 2.编写Dockerfile脚本 3.准备Nginx.conf配置文件 4.生成镜像 5.创建自定义网络 6.启动镜像容器 7.验证Nginx 三、部署Mysql 1.建立工作目录 2.编…

【Docker第一课】docker的基本命令和试启动容器(详细图解)

目录 知识梗概 docker的初步了解 了解docker常用命令 试开启容器&#xff08;这里演示nginx、python3和mysql&#xff09; 1、nginx容器的启动 2、python3容器的启动 docker的作用 虚拟机与容器的区别 写在前面&#xff1a; 本专栏你将了解docker一些入门知识&#xff…

如何使用 ArcGIS Pro 查找小区最近的地铁站

学习 GIS 除了可以用在工作上之外&#xff0c;还可以将其运用到生活之中&#xff0c;比如查找距离小区最近的地铁站&#xff0c;这里为大家介绍一下查找的方法&#xff0c;希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的POI数据&#xff0c;除了POI数据…