找回密码
 注册
关于网站域名变更的通知
查看: 5227|回复: 4
打印 上一主题 下一主题

I2C七宗罪之第四罪

[复制链接]
  • TA的每日心情
    开心
    2023-5-19 15:05
  • 签到天数: 339 天

    [LV.8]以坛为家I

    跳转到指定楼层
    1#
    发表于 2019-2-25 17:43 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    本帖最后由 EDA365_PCB 于 2024-1-22 17:24 编辑 ( ?0 S  z7 g0 Q

    + W' F& d2 |+ t/ h4 b" F
    I2C七宗罪之第四罪——电平转换
    EDA365原创 作者:John

    ' u8 A- E. E: r; g
    今天来说一道Facebook的面试题,曾经我的一个朋友梦想去美国硅谷工作,Facebook的工程师在面试时问了一道关于I2C的问题,比较简单也比较直接,可惜我的那个兄弟由于太紧张,没有答好,大家在看这篇文章时,不妨自测一下自己能不能准确答出来。
    我们先来看一张图,熟悉I2C的人一看,这不是I2C的level shifter电路嘛,在Philip的I2C标准里面有,没有啥复杂的。
    $ Y( I* r1 z; G9 _% a
    6 p5 x; ]( W: N2 m6 z7 O6 ]
    我们先来解读下这张图,I2C的level shifter是通过NMOS管来实现的,有人可能会问,为什么不用PMOS呢?一般情况下,只有在外部电源输入端,我们设计INRUSH电流缓启动或者防反插电路的时候才会用到PMOS。理由很简单, PMOS是低电平打开,电源插入瞬间系统其实还没有用于打开MOSFET的高电平,所以只能选择PMOS, 而NMOS体积小,RDSON低,在系统内部会更多选择NMOS。
    我们来举个PMOS的用例:
    言归正传,我们来继续讨论I2C问题。首先我们要牢牢记住,I2C是Open-drain,所以level shifter电路的两边都是上拉电阻Rp的,下面讲下这个电路是怎么工作的。
    下图是两张I2C的基本操作时序图,分别是Master对Slave所做的读和写:
    我们可以看到, SDA一定是双向的,既然是双向的,那么就有四种情况,我们来一一解释level shifter是怎么来cover它们的。(注意:这里面会含有一个Facebook的问题,不要忘记自测哦。)

    3 z' X$ ?: [  W5 d7 T9 R- `5 [
    1、第一步,Master往Slave发数据1
    1) 左边MasterSDA_1为输出,驱H-3.3V,NMOS的VGS=0, 此时NMOS关闭;
    2) 右边的Slave的SDA_2是输入,对外呈现高阻;
    3) NMOS关断和SLAVE为输入,导致SDA_2悬空;
    4) 最终SDA_2依靠RP2上拉到5V,完成3.3V到5V的转换。
    . O6 C( D  Q, ]2 O8 c) w: S
    2、第二步,Master往Slave发数据0
    1) 左边MasterSDA_1为输出,驱Low=0,NMOS的VGS>0, 此时NMOS打开;
    2) 右边的Slave的SDA_2是输入,对外呈现高阻;
    3) NMOS打开和SLAVE为输入,导致SDA_2=SDA_1=0;
    4) 最终SDA_2被SDA_1拉到0,完成低电平的转换。

    - ~- m7 x1 Q2 v/ B
    3、第三步,Slave往Master发数据1
    4 g# E) _& ]0 s$ ^+ y- Z% s
    1) 右边Slave SDA_2为输出,驱H-5V;
    2) 左边Master SDA_1为输入,对外高阻, 被RP1上拉到3.3V;
    3) NMOS 因为VGS=0一直关闭;
    4) NMOS关闭,Master SDA_1维持3.3V高电平,完成电平转换。

    7 N2 O5 [1 ~; I& b+ {% M
    4、第三步,Slave往Master发数据0
    1) 右边Slave SDA_2为输出,驱LOW;
    2) 左边Master SDA_1为输入,对外高阻, 被RP1上拉到3.3V;
    3) NMOS 因为VGS=0一直关闭;
    4) NMOS关闭,Master SDA_1为3.3V高电平。
    问题来了,我们看到右边的SDA_2位Low,但是左边的是SDA_1位High,那不是失败了嘛,不可能啊,这个电路是好的啊。
    我们来看看下一步会发生什么,其实这个问题没有那么难,仔细看看这张图,还是比较容易发现线索的。
    我们来揭晓答案:大家看看上图的NMOS下面多了一个二极管,我们把这个二极管叫做Body Diode,它会在这个时候发挥作用。
    5) 由于左边SDA_1为高,右边SDA_2为LOW, Body Diode导通;
    6) SDA_1被拉低,导致NMOS VGS>0 后打开;
    7) NOMO打开后,SDA_1和SDA_2相当于短在一起;
    8) 最终左边SDA_1被右边的SDA_2拉低变为LOW。

    2 W3 e4 w. L0 P/ o: V( R/ c
    我们看到由于体二极管的作用,打开NMOS管,使得右边Slave输出的L=0顺利到达左边的Master SDA_1输入端。
    当你看着这张图,按图索骥,也许不难发现答案,但是在面试的时候,一是紧张,二是没有清晰的电路提示,有时候容易发挥不出来,你们觉得呢?
    今天这个小坑就先讲解到这里,后面的第五宗罪——负载会更加精彩哦!
    / u) i4 P* V: {
    注:本文为EDA365电子论坛原创文章,未经允许,不得转载。

    0 C6 O/ N7 z' z  o7 ]3 E

    本帖被以下淘专辑推荐:

    该用户从未签到

    2#
    发表于 2019-8-27 16:28 | 只看该作者
    一直用这个电路,不知原理。今日雄文,解我多年疑惑。谢了!

    该用户从未签到

    3#
    发表于 2019-11-19 18:19 | 只看该作者
    各位,有john大神的联系方式吗,很想认识一下,我邮箱2929219135@qq.com

    该用户从未签到

    4#
    发表于 2020-5-10 10:54 | 只看该作者

    该用户从未签到

    5#
    发表于 2023-6-12 19:02 | 只看该作者
    有图片没加载出来,楼主能麻烦再更新下图片吗

    “来自电巢APP”

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-8-1 18:48 , Processed in 0.125000 second(s), 28 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表