当前位置:网站首页>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 ——
边栏推荐
- Design intelligent weighing system based on Huawei cloud IOT (STM32)
- . Net Maui performance improvement
- Flet教程之 19 VerticalDivider 分隔符组件 基础入门(教程含源码)
- C#中在路径前加@的作用
- R语言使用magick包的image_mosaic函数和image_flatten函数把多张图片堆叠在一起形成堆叠组合图像(Stack layers on top of each other)
- 對比學習之 Unsupervised Learning of Visual Features by Contrasting Cluster Assignments
- SwiftUI Swift 内功之如何在 Swift 中进行自动三角函数计算
- 科普达人丨一文弄懂什么是云计算?
- What is high cohesion and low coupling?
- Excel公式知多少?
猜你喜欢
Talk about SOC startup (x) kernel startup pilot knowledge
核舟记(一):当“男妈妈”走进现实,生物科技革命能解放女性吗?
聊聊SOC启动(七) uboot启动流程三
Some opinions and code implementation of Siou loss: more powerful learning for bounding box regression zhora gevorgyan
SwiftUI 4 新功能之掌握 WeatherKit 和 Swift Charts
Reasons for the failure of web side automation test
How much do you know about excel formula?
Apprentissage comparatif non supervisé des caractéristiques visuelles par les assignations de groupes de contrôle
【滤波跟踪】基于matlab扩展卡尔曼滤波EKF和无迹卡尔曼滤波UKF比较【含Matlab源码 1933期】
La voie du succès de la R & D des entreprises Internet à l’échelle des milliers de personnes
随机推荐
C#中在路径前加@的作用
‘module‘ object is not callable错误
超标量处理器设计 姚永斌 第9章 指令执行 摘录
相机标定(2): 单目相机标定总结
科普达人丨一文弄懂什么是云计算?
【数据聚类】基于多元宇宙优化DBSCAN实现数据聚类分析附matlab代码
【神经网络】卷积神经网络CNN【含Matlab源码 1932期】
Two week selection of tdengine community issues | phase II
Reasons for the failure of web side automation test
Half of the people don't know the difference between for and foreach???
What development models did you know during the interview? Just read this one
Apprentissage comparatif non supervisé des caractéristiques visuelles par les assignations de groupes de contrôle
Suggestions on one-stop development of testing life
STM32 entry development write DS18B20 temperature sensor driver (read ambient temperature, support cascade)
sql里,我想设置外键,为什么出现这个问题
Zhou Yajin, a top safety scholar of Zhejiang University, is a curiosity driven activist
EasyUI learn to organize notes
. Net Maui performance improvement
There are so many factors that imprison you
Creative information was surveyed by 2 institutions: greatdb database has been deployed in 9 places