I2C电平转换电路_双向电平转换电路工作原理

I2C电平转换电路_双向电平转换电路工作原理本文分享下I2C双向电平转换电路的设计原理,以及需要注意的事项。在I2C主从设备对接时,需要考虑主从设备的电平情况,常规的主要有3种:5V,3.3V,1.8V。如果电平相同,比如都是3.3V,那么可以直接对接。如果电平不同,一个高电平是3.3V,另外一个是1.8V,那么就需要接入其它的器件来做一下电平转换,通常是接入NMOS管。如上图,此图来源于I2C官方协议,协议标准文件里…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

本文分享下I2C双向电平转换电路的设计原理,以及需要注意的事项。

在I2C主从设备对接时,需要考虑主从设备的电平情况,常规的主要有3种:5V,3.3V,1.8V。如果电平相同,比如都是3.3V,那么可以直接对接。如果电平不同,一个高电平是3.3V ,另外一个是1.8V,那么就需要接入其它的器件来做一下电平转换,通常是接入NMOS管。
 

I2C电平转换电路_双向电平转换电路工作原理

如上图,此图来源于I2C官方协议,协议标准文件里面已对此作了一些说明。扫描下方二维码,回复“I2C”,可以获取I2C协议的英文版源文件和中文版本。

下面解释下这个电平是如何双向工作的,即不论是低压那边还是高压那边主动发生电平变化,都是可以正常通信的。

工作原理:
—当总线上没有数据发送时,两边都没有主动去拉低总线,因此MOS管也不导通,都因为各自的上拉电阻存在,左边为高电平3.3V,右边为高电平5V。
—当左边需要发送数据1到右边时,即SDA1/SCL1为高电平3.3V,MOS管的Vgs=0,不导通,右边因为上拉电阻的存在,SDA2/SCL2电平保持为5V。即可看作左边正常将数据1发送到右边。
—当左边需要发送数据0到右边时,即SDA1/SCL1为低电平0V,Vgs=3.3V,MOS管导通,右边电压就跟左边电平一样了,SDA2/SCL2为低电平0V。即可看作左边正常将数据0发送到右边。
—当右边需要发送数据1到左边时,即SDA2/SCL2为高电平5V,左边SDA1/SCL1因为没有主动拉低总线,所以MOS管不导通,左边保持上拉电平3.3V。即可看作右边将数据1正常发送到左边。
—当右边需要发送数据0到左边时 ,即SDA2/SCL2为低电平0V时,因为MOS管体二极管的存在,体二极管导通,MOS管的S极被拉低,Vgs接近3.3V,MOS管导通,进一步导致左边和右边电平一样,为0V。即可看作右边正常将数据0发送到左边。

由上可知,不论I2C的主设备(Master)接在上面电路的左边(低压电源)还是右边(高压电压),都是能够正常通信的。

以上是电路的工作说明,实际应用中,有以下两点需要注意:
注意事项:
–MOS管的接入方法—MOS管的S极要接到低电源那边,不能接反
–MOS管的选型—MOS管的导通电压需要注意。MOS管导通电压门限(Vgsth里面的最大值)需要小于低电源电压
 

I2C电平转换电路_双向电平转换电路工作原理

如上图是2N7002K的MOS管,1V<Vgs<2.5V。如果5V和3.3V之间的互转,那么可以用这个管子。但如果是3.3V和1.8V之间的互转,那么是不能用的。因为导通门限电压是1-2.5V,因为可能会用到导通电压大于1.8V的器件,那么MOS管就可能永远无法导通了。这个需要特别注意,因为一旦没注意选用了,可能就是有的板子功能OK,有的板子NG。

获得硬件资料,欢迎关注微信公众号:硬件工程师炼成之路
 I2C电平转换电路_双向电平转换电路工作原理

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/169442.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • android的timertask,Android 中 Timer 和 TimerTask的使用「建议收藏」

    Android中Timer是一个普通的类,其中有几个重要的方法;而TimerTask则是一个抽象类,其中含有一个抽象方法run()。使用Timer类中的schedule()方法可以完成对TimerTask的调度,该方法具有三个参数,其函数声明如下:publicvoidschedule(TimerTasktask,longdelay,longperiod)其中第一个参数为TimerTa…

  • 第六章 SDRAM控制器的设计

    第六章 SDRAM控制器的设计介绍的重点:·动态随机存储介绍·介绍SDARM的工作原理与Verilog的实现方法·基本实验:利用基本实例来解释SDRAM控制器顶层模块的设计·高级实验:利用高级实例来完整的描述SDRAM控制器顶层模块的修改技巧与注意事项…

  • Odin Inspector 系列教程 — Show If Attribute

    Odin Inspector 系列教程 — Show If AttributeShowIfAttribute用于任何属性,并且可以在检查器中隐藏该属性。使用此选项可根据对象的当前状态隐藏不相关的属性。这个特性的效果主要是当指定条件满足时,显示对应的属性,默认传入的参数为对应属性的名称,如果为True或者不为null时,显示属性[ShowIf(“IsToggled”)]publicVector2VisibleWh…

  • R和Rstudio安装教程[通俗易懂]

    R和Rstudio安装教程[通俗易懂]一、R的下载和安装1.首先我们去下载一个R,可以直接点击下面的超链接:R下载地址,然后选择与你的操作系统匹配的版本在这里我们用windows系统来举例,点击图片中箭头所指的链接进行下载2.下载完成以后我们就开始进行安装,双击R安装包(R-3.6.0-win.exe)进行安装根据自己的需要选择语言,点击确定点击Next安装位置尽量选择D盘如果电脑是32位的,就把64位去…

  • 什么是敏捷开发_一个完整的敏捷开发的流程

    什么是敏捷开发_一个完整的敏捷开发的流程0、先来一张导图1、概念简单的说,敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,

  • arduino 超声波测距误差较大_超声波测距的背景

    arduino 超声波测距误差较大_超声波测距的背景arduino实现超声波测距涉及模块:四线超声波测距模块,LCD1602ALCD1602连接实验代码:#include<LiquidCrystal.h>LiquidCrystallcd(12,11,5,4,3,2);constintTrigPin=7;constintEchoPin=6;floatcm;voidsetup(){lcd.begin(16,2);pinMode(TrigPin,OUTPUT);pinMode

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号