当前位置:网站首页>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 ——


边栏推荐
- 'module 'object is not callable error
- 【滤波跟踪】基于matlab扩展卡尔曼滤波EKF和无迹卡尔曼滤波UKF比较【含Matlab源码 1933期】
- Verilog realizes nixie tube display driver [with source code]
- sink 消费 到 MySQL, 数据库表里面已经设置了 自增主键, flink 里面,如何 操作?
- Flet教程之 19 VerticalDivider 分隔符组件 基础入门(教程含源码)
- STM32入门开发 编写DS18B20温度传感器驱动(读取环境温度、支持级联)
- The database synchronization tool dbsync adds support for mongodb and es
- 千人规模互联网公司研发效能成功之路
- [encapsulation of time format tool functions]
- Onedns helps college industry network security
猜你喜欢

Programming examples of stm32f1 and stm32subeide -315m super regenerative wireless remote control module drive

Talk about SOC startup (VII) uboot startup process III

基于华为云IOT设计智能称重系统(STM32)

软件内部的定时炸弹:0-Day Log4Shell只是冰山一角

Reasons for the failure of web side automation test

禁锢自己的因素,原来有这么多

Table replication in PostgreSQL

【最短路】Acwing1128信使:floyd最短路

聊聊SOC启动(九) 为uboot 添加新的board

Solve the problem that vscode can only open two tabs
随机推荐
千人規模互聯網公司研發效能成功之路
Flet教程之 19 VerticalDivider 分隔符组件 基础入门(教程含源码)
Swiftui tutorial how to realize automatic scrolling function in 2 seconds
Internet Protocol
问下flinkcdc2.2.0的版本,支持并发,这个并发是指多并行度吗,现在发现,mysqlcdc全
Table replication in PostgreSQL
Creative information was surveyed by 2 institutions: greatdb database has been deployed in 9 places
Le Cluster kubernets en cours d'exécution veut ajuster l'adresse du segment réseau du pod
Poor math students who once dropped out of school won the fields award this year
简单介绍一下闭包及它的一些应用场景
R Language Using Image of magick package Mosaic Function and Image La fonction flatten empile plusieurs images ensemble pour former des couches empilées sur chaque autre
Common SQL statement collation: MySQL
electron 添加 SQLite 数据库
About the application of writing shell script JSON in JMeter
Neural approvals to conversational AI (1)
sink 消费 到 MySQL, 数据库表里面已经设置了 自增主键, flink 里面,如何 操作?
Network protocol concept
'module 'object is not callable error
STM32入门开发 NEC红外线协议解码(超低成本无线传输方案)
Blog moved to Zhihu