I2C七宗罪之第四罪——電平轉換

2021-02-20 EDA365電子論壇

今天來說一道Facebook的面試題,曾經我的一個朋友夢想去美國矽谷工作,Facebook的工程師在面試時問了一道關於I2C的問題,比較簡單也比較直接,可惜我的那個兄弟由於太緊張,沒有答好,大家在看這篇文章時,不妨自測一下自己能不能準確答出來。

我們先來看一張圖,熟悉I2C的人一看,這不是I2C的level shifter電路嘛,在Philip的I2C標準裡面有,沒有啥複雜的。

我們先來解讀下這張圖,I2C的level shifter是通過NMOS管來實現的,有人可能會問,為什麼不用PMOS呢?一般情況下,只有在外部電源輸入端,我們設計INRUSH電流緩啟動或者防反插電路的時候才會用到PMOS。理由很簡單, PMOS是低電平打開,電源插入瞬間系統其實還沒有用於打開MOSFET的高電平,所以只能選擇PMOS, 而NMOS體積小,RDSON低,在系統內部會更多選擇NMOS。

言歸正傳,我們來繼續討論I2C問題。首先我們要牢牢記住,I2C是Open-drain,所以level shifter電路的兩邊都是上拉電阻Rp的,下面講下這個電路是怎麼工作的。

下圖是兩張I2C的基本操作時序圖,分別是Master對Slave所做的讀和寫:

我們可以看到, SDA一定是雙向的,既然是雙向的,那麼就有四種情況,我們來一一解釋level shifter是怎麼來cover它們的。(注意:這裡面會含有一個Facebook的問題,不要忘記自測哦。)

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的轉換。

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,完成低電平的轉換。

1) 右邊Slave SDA_2為輸出,驅H-5V;

2) 左邊Master SDA_1為輸入,對外高阻, 被RP1上拉到3.3V;

3) NMOS 因為VGS=0一直關閉;

4) NMOS關閉,Master SDA_1維持3.3V高電平,完成電平轉換。

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。

我們看到由於體二極體的作用,打開NMOS管,使得右邊Slave輸出的L=0順利到達左邊的Master SDA_1輸入端。

當你看著這張圖,按圖索驥,也許不難發現答案,但是在面試的時候,一是緊張,二是沒有清晰的電路提示,有時候容易發揮不出來,你們覺得呢?

今天這個小坑就先講解到這裡,後面的第五宗罪——負載會更加精彩哦!

相關焦點

  • I2C七宗罪之第二罪
    前面說的「I2C七宗罪之第一罪」和復位有關係, 這一次我們來說說:提到電源大家的心理通常是緊張滴,不自覺地發問:是不是問題很嚴重?是的, 非常嚴重, 而且通過軟體是沒有辦法解決的。
  • i2c總線用來做什麼_i2c總線數據傳輸過程
    打開APP i2c總線用來做什麼_i2c總線數據傳輸過程 網絡整理 發表於 2020-11-24 14:16:18 從機在處理其他事件而不能接收數據時,可以通過控制SCL保持低電平來等待數據接收,等到準備好繼續傳輸時,釋放SCL。在總線上每個模塊具有唯一的地址,當然亦可以設計廣播地址,通知所有其他模塊。
  • 《冰菓》中說的「七宗罪」,折木奉太郎犯下「懶惰」之罪,你呢?
    本文,咱們講講《冰菓》中提到的「七宗罪」,折木奉太郎的節能主義,大概就犯下了「懶惰」之罪吧,你又犯了哪些大罪呢?所謂的「七宗罪」,指的便是憤怒、傲慢、暴食、貪婪、嫉妒、色慾和懶惰。看到這些名詞,再結合《冰菓》的人物性格來看,折木奉太郎首先領取了「懶惰」這一項,對此,折木自己也曾表示,我所犯下的大罪,光是懶惰便已足夠了。另外,由於「七宗罪」的話題是由伊原摩耶花生氣而引起的,因此,首先來說說生氣吧。
  • STM32F103編程學習——I2C通信
    這兩條信號線都需要上拉至電源,確保總線空閒時,兩者電平都是高電平。工作原理I2C總線進行數據傳輸時,SCL線為高電平期間,SDA線由高電平向低電平的變化表示起始信號,SCL線為高電平期間,SDA線由低電平向高電平的變化表示終止信號。具體時序如下圖所示。
  • ARM核心板之-電平轉換電路(下)
    在上篇,小編為大家介紹了兩種電平轉換電路,這節將繼續以致遠電子MiniARM工控核心板的實例來給大家介紹其他幾種電平轉換電路。
  • 《rt-thread驅動框架分析》-i2c驅動
    scl引腳和sda引腳的獲取電平和設置電平接口和延時函數(udelay)。並對接bit_opt層提供的操作結構體:struct rt_i2c_bit_ops。並通過rt_i2c_bit_add_bus註冊,提供給bit_opt層回調。
  • 電子設計教程: 電平轉換電路
    打開APP 電子設計教程: 電平轉換電路 發表於 2019-08-30 09:12:05 電子設計教程: 電平轉換電路
  • 將TTl電平轉換為USB電平的eCH340 USB轉換串口電路設計
    打開APP 將TTl電平轉換為USB電平的eCH340 USB轉換串口電路設計 捕蟲少年 發表於 2020-10-20 13:44:00
  • 程序猿眼中的華為海思晶片之I2C配置
    I2C總線上的器件有主從之分,在嵌入式系統上的主器件一般是嵌入式主晶片(MCU),主器件負責啟動、終止數據傳送,產生時鐘信號。從器件一般是外部設備,像小編所在行業的外部設備包括溫度傳感器、Tunner、HDMI等。I2C主設備配置了解了I2C總線的定義和基本原理後,我們怎樣做才能讓I2C總線正常工作呢?
  • RS232電平和TTL電平有什麼不同?如何轉換?
    同時我們知道這些模塊的內部控制單元都是單片機,其電平為TTL電平。那麼TTL電平和RS232電平有什麼不同?它們之間又是怎麼轉換的呢?今天這篇文章,我們就來談談這個話題。TTL電平是TTL電路輸出的電平,其中「TTL」是英文「Transistor-Transistor Logic」的縮寫,中文翻譯為「電晶體-電晶體邏輯」,因此TTL電路就是「電晶體-電晶體邏輯電路」。
  • 幾種常用的電平轉換方案總結
    前段時間在設計NB-IOT模塊與STM32的硬體通訊時用到了電平轉換。當主控晶片引腳電平與外部連接器件電平不匹配的時候就需要用電平轉換電路來進行轉換。這幾乎是每一個電子工程師都會遇到的一個問題。今天我就總結一下幾種常用的電平轉換方案,希望對大家有所幫助。 1.使用電平轉換晶片 這可能是所有方案裡面最穩定可靠省事的了,給轉換晶片兩側供需要轉換的兩個電源,然後在晶片的輸入輸出接上需要轉換的輸入輸出信號就OK了,所有轉換部分都由晶片內部完成。
  • 鋼之鍊金術師FA,七宗罪之人造人……
    拉絲特(色慾)Lust「燒瓶小人」以分理處的七種情緒製作的七個人造人之一,七個人造人分別代表「七宗罪」,而拉絲特則為「lust」的音譯,代表色慾。屬於七宗罪中的暴食之罪。擁有靈敏的嗅覺,可以在黑暗的環境中確定敵人的位置。曾被愛德華等人抓獲,在見到燒死拉絲特的仇人羅伊·馬斯坦時暴走誤將恩維、愛德華和姚麟一起吞了。後由於愛德華在其體內的空間中施展鍊金術將眾人分解後轉移到現實空間中重構而回歸。最終格拉託尼被普萊德認為在交戰中受了重傷無法再利用而吞噬並吸收了賢者之石而死。
  • 使用Verilog來實現EEPROM的讀寫,進行一個簡單的I2C實戰應用
    使用Verilog來實現EEPROM的讀寫,進行一個簡單的I2C實戰應用 李倩 發表於 2018-08-31 17:17:42 I2C在晶片的配置中應用還是很多的,比如攝像頭、VGA轉HDMI轉換晶片,之前博主分享過一篇
  • RS232與TTL電平轉換的分立器件電路
    RS232與TTL電平轉換電路:
  • 接口電路設計——電流倒灌和電平轉換
    如果單片機IO口比較脆弱,或者兩邊電壓不也一樣需要低成本進行電平轉換,且是但一方向,速率比較低(比如串口)的時候就可以選擇該方案。二極體要選擇肖特基二極體才比較好電平轉換在電路設計過程中,會碰到處理器MCU的I/O電平與模塊的I/O電平不相同的問題,為了保證兩者的正常通信,需要進行電平轉換。
  • 三極體的電平轉換及驅動電路分析
    3.3V-5V電平轉換電路  如上圖,左端接3.3VCMOS電平,可以是STM32、FPGA等的IO口,右端輸出為5V電平,實現3.3V到5V電平的轉換。  假設沒有R91,當US_CH0電平狀態不確定時,默認是要Trig輸出高電平還是低電平呢?因此R91起到固定電平的作用。同時,如果無R91,則只要輸入>0.7V就導通三極體,門檻電壓太低了,R91有提升門檻電壓的作用(可參見第二小節關於蜂鳴器的分析)。
  • 最佳犯罪片《七宗罪》,高智商兇手籌劃連環謀殺案,結局逆天高能
    1995年,美國著名導演大衛·芬奇就根據天主教的七大原罪為靈感,創作了電影《七宗罪》。這部電影常年穩居豆瓣電影TOP250之列,評分8.8,好於98%的懸疑片,好於98%的犯罪片。《七宗罪》把「7」運用得淋漓盡致,故事發生在7天,7場大雨,7宗罪惡,7場判罰,就連結局也由兇手設定在第7天的7時7刻。
  • 三極體顯身手 電平轉換及驅動電路
    本文就將分享一種三極體的電平轉換以及驅動電路。    如上圖,左端接3.3V CMOS電平,可以是STM32、FPGA等的IO口,右端輸出為5V電平,實現3.3V到5V電平的轉換。  假設沒有R91,當US_CH0電平狀態不確定時,默認是要Trig輸出高電平還是低電平呢?因此R91起到固定電平的作用。同時,如果無R91,則只要輸入>0.7V就導通三極體,門檻電壓太低了,R91有提升門檻電壓的作用(可參見第二小節關於蜂鳴器的分析)。
  • I2C總線協議分析
    常見的硬體結構圖(一個適配器,兩根線,若干設備而已)I2C總線通信時序使用I2C通信時,必須指定主從設備,一般包含有I2C控制器的處理器被配置成主設備,掛接在i2c總線上的外設作為從設備。通信開始都是由主設備發起的,在i2c總線上的每個設備都有一個7bit位的地址,稱為i2c設備地址。主設備如何發起開始和停止通信信號?
  • 【E電路】3V-5V電平轉換電路圖
    本文主要講了一下關於3V-5V電平轉換電路圖,下面一起來學習一下:本文引用地址:http://www.eepw.com.cn/article/201609/296664.htm  如圖左端接3.3VCMOS電平,可以是STM32、FPGA