当前位置:网站首页>5V串口接3.3V单片机串口怎么搞?
5V串口接3.3V单片机串口怎么搞?
2022-07-07 09:52:00 【嵌入式Linux,】
写在前面:两个单片机由于电平不同,串口通信可能会失败,这时候需要通过电平转换电路来解决,本文给出了两种方法,一种是通过三极管搭建,另一种是MOS管搭建,在硬件工程师的笔试中也经常会出现这样的题目。
3.3V单片机和5V单片机通信的思路
| 3.3V单片机 | 通信方向 | 5V单片机 |
|---|---|---|
| 发送逻辑1(对应电压3.3V) | → | 接受逻辑1(对应电压5V) |
| 发送逻辑0(对应电压0V) | → | 接受逻辑0(对应电压0V) |
| 接受逻辑1(对应电压3.3V) | ← | 发送逻辑1(对应电压5V) |
| 接受逻辑0(对应电压0V) | ← | 发送逻辑0(对应电压0V) |
MOS管转换电路
工作原理:
1、当3V3单片机发送逻辑1,即3V3_TX=3.3V,Ugs=0V,MOS管截止,5V_RX通过R2上拉到+5V,5V_RX=5V;
2、当3V3单片机发送逻辑0,即3V3_TX=0V,Ugs=3V,MOS管导通,5V_RX会被拉低,5V_RX=0V;

那有人说了,5V的数据怎么发送给3V3单片机呢?是不是将信号方向及电源更换即可,我们来看一下。
工作原理:
1、当5V单片机发送逻辑1,即5V_TX=5V,Ugs=0V,MOS管截止,3V3_RX通过R1上拉到3V3,3V3_RX=3.3V;
2、当5V单片机发送逻辑0,即5V_TX=0V,Ugs=5V,MOS管导通,3V3_RX被拉低,所以3V3_RX=0;
以上分析似乎合情合理,其实如下电路不可用,上面的第2点其实是没有问题的,主要是第1点,当MOS管截止时,5V_TX的5V电压会经过MOS管的体二极管到达3V3_RX,使3V3_RX的电压高于3.3V(4V多,取决于体二极管的导通压降)。这样的话,一方面4V多的电压与3.3V有压差,经过R1电阻会有耗电;另一方面,4V多的电压也可能损坏3.3V单片机的RX管脚。

利用仿真软件仿真,可以看到MOS管截止时,输出是4.44V,明显高于3.3V,验证了上述的观点。
仿真上述不可用电路那如何设计5V发送到3.3V单片机呢?其实也简单,两个器件搞定,如下是电路图。
1、5V_TX=5V时,二极管D1截止,3V3_RX=3.3V;
2、5V_TX=0V时,二极管D1导通,3V3_RX≈0.6V;实际3V3_RX是多少,取决于D1的正向导通压降,因为要得到更低的电压,一般D1选择肖特基二极管,肖特基优点就是导通压降小。

三极管转换电路
工作原理:
1、当3V3单片机发送逻辑1,即3V3_TX=3.3V,NPN三极管截止,5V_RX通过R2上拉到+5V,5V_RX=5V;
2、当3V3单片机发送逻辑0,即3V3_TX=0V,NPN三极管导通,5V_RX会被拉低,所以5V_RX=0V;

利用三极管,5V单片机发送给3.3V单片机,是不是电源和信号互换就可以,和MOS管电路一样,如下电路同样不能用。
原因是当5V_TX为5V时,发射极反偏,但是5V通过电阻R1由三极管的基极到达三极管的集电极,造成集电极正偏,和MOS管电路一样,使3V3_RX电压高于3.3V(4V多),大家可以仿真一下,这里我就不仿真了。

如下,给出了5V单片机向3.3V单片机发送的电路图,用两个NPN三极管搭建。
工作原理:
1、当5V单片机发送逻辑1,即5V_TX=5V,Q1导通,Q2的基极被拉低,Q2截止,所以3V3_RX=3.3V;
2、当5V单片机发送逻辑0,即5V_TX=0V,Q1截止,Q2导通,所以3V3_RX=0V;

可以看到,我并没有画两个NMOS管搭建5V单片机向3.3V单片机发送的电路,其实将上图中的三极管换成NMOS管,就能实现,在实际的电路设计中,为减少成本,应尽量考虑用较少的器件搭电路,所以一般就用二极管方案。
今天的文章到这里就结束了。。。
哦不,上面的问题并没有结束
我转发这篇文章的原因是晚上和朋友讨论到这个问题,我们还因为这个问题开了个腾讯会议。
如果要连接的是3.3V的单片机串口,我们第一时间应该想到我们也用3.3V的单片机,两个3.3V的单片机供电上肯定是不会有问题的。而现在市面上很多ARM芯片,都是3.3V的GPIO口电压,5V单片机作为初级入门电平,已经慢慢被取代,当然,之后还有1.8V的单片机。

—— The End ——


边栏推荐
- 超标量处理器设计 姚永斌 第8章 指令发射 摘录
- The post-90s resigned and started a business, saying they would kill cloud database
- electron添加SQLite数据库
- sink 消费 到 MySQL, 数据库表里面已经设置了 自增主键, flink 里面,如何 操作?
- Enclosed please find. Net Maui's latest learning resources
- 聊聊SOC启动(六)uboot启动流程二
- 0.96 inch IIC LCD driver based on stc8g1k08
- 【系统设计】指标监控和告警系统
- 千人規模互聯網公司研發效能成功之路
- STM32F1与STM32CubeIDE编程实例-315M超再生无线遥控模块驱动
猜你喜欢

Tsinghua Yaoban programmers, online marriage was scolded?

STM32F1与STM32CubeIDE编程实例-315M超再生无线遥控模块驱动

千人規模互聯網公司研發效能成功之路

What development models did you know during the interview? Just read this one

Flet教程之 19 VerticalDivider 分隔符组件 基础入门(教程含源码)

對比學習之 Unsupervised Learning of Visual Features by Contrasting Cluster Assignments

一起探索云服务之云数据库

【神经网络】卷积神经网络CNN【含Matlab源码 1932期】

Talk about SOC startup (VII) uboot startup process III
![Verilog design responder [with source code]](/img/91/6359a2f3fa0045b4a88956a475488c.png)
Verilog design responder [with source code]
随机推荐
Onedns helps college industry network security
sink 消费 到 MySQL, 数据库表里面已经设置了 自增主键, flink 里面,如何 操作?
Suggestions on one-stop development of testing life
超标量处理器设计 姚永斌 第8章 指令发射 摘录
【问道】编译原理
Flet教程之 17 Card卡片组件 基础入门(教程含源码)
There are ways to improve self-discipline and self-control
基于华为云IOT设计智能称重系统(STM32)
Reasons for the failure of web side automation test
Swiftui swift internal skill: five skills of using opaque type in swift
18 basic introduction to divider separator component of fleet tutorial (tutorial includes source code)
Swiftui tutorial how to realize automatic scrolling function in 2 seconds
Flet教程之 19 VerticalDivider 分隔符组件 基础入门(教程含源码)
How to write test cases for test coupons?
Nuclear boat (I): when "male mothers" come into reality, can the biotechnology revolution liberate women?
Use metersphere to keep your testing work efficient
竟然有一半的人不知道 for 与 foreach 的区别???
Talk about SOC startup (VII) uboot startup process III
Android interview knowledge points
Fleet tutorial 19 introduction to verticaldivider separator component Foundation (tutorial includes source code)