<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

I2C通訊為什么要用開漏輸出和上拉電阻?

朱老師物聯網大講堂 ? 2024-05-16 08:10 ? 次閱讀

一、I2C總線簡介

I2C(Inter-Integrated Circuit)總線是一種雙向串行通信總線,由兩根線組成:SDA(數據線)和SCL(時鐘線)。這兩根線都是雙向的,并且是開漏輸出的,這意味著每個設備都可以將線拉低(Ground),但不能將線拉高(Vcc)。這種設計使得多個設備可以共享同一條總線,以進行通信。

b9fa7726-1318-11ef-9118-92fbcf53809c.png

二、I2C接口接外部上拉電阻的原因

I2C(Inter-Integrated Circuit)接口在使用時需要連接外部上拉電阻,主要原因包括以下幾點:
開漏(Open-drain)或開集電極(Open-collector)輸出:I2C總線上的設備如主設備和從設備使用開漏或開集電極的輸出方式來驅動總線。這意味著,設備只能將線路拉低(接地),而不能直接將線路拉高至供電電壓。因此,需要外部上拉電阻來將線路拉高。多主設備配置:I2C允許多個主設備存在于同一總線上。為了防止輸出沖突(例如,一個設備嘗試將線路拉高,而另一個設備嘗試將線路拉低),I2C設計為只能通過外部上拉電阻來將信號線拉高,從而簡化了總線管理。邏輯狀態的穩定和可靠性:外部上拉電阻確保在沒有設備主動驅動線路時,數據線(SDA)和時鐘線(SCL)能穩定地保持在高電平狀態。這有助于提高信號的可靠性和減少誤讀。靈活的電壓級別:由于I2C設備可以支持不同的邏輯電平,使用外部上拉電阻可以方便地匹配總線電平到特定的系統電壓,例如3.3V或5V等,從而使得不同電壓等級的設備可以共存于同一總線。電氣特性的優化:通過選擇合適的上拉電阻值,可以優化總線的電氣特性,如上拉速率、功耗和噪聲容限。電阻值太低會增加功耗和可能導致總線驅動器過載,而電阻值太高則可能導致信號上升時間過長,影響總線速率。所以綜上所述,外部上拉電阻在I2C通信中發揮著至關重要的作用,保證了通信的穩定性和靈活性。在I2C通信中,使用推挽(push-pull)輸出并不是標準的實現方式,因為這種輸出方式與I2C設計的開漏(open-drain)或開集電極(open-collector)輸出方式存在本質上的差異。下面詳細解釋為什么通常不使用推挽輸出:總線沖突的風險:I2C總線設計為多主設備和多從設備可以共享同一總線。如果使用推挽輸出,當一個設備試圖將總線拉高而另一個設備試圖將其拉低時,將會發生總線沖突,可能導致設備損壞。信號完整性問題:推挽輸出可以同時驅動高電平和低電平,這在總線空閑和活躍時都維持總線狀態。然而,這種方式缺乏開漏輸出的靈活性,例如在總線檢測和仲裁過程中動態改變控制權,這是I2C協議重要的一部分。電平匹配和靈活性降低:使用推挽輸出意味著所有設備必須在相同的電壓級別上操作,這限制了不同電壓級別設備的互操作性。相比之下,開漏輸出允許通過外部上拉電阻選擇適當的電壓級別,以匹配不同設備的電壓要求。仲裁和時鐘同步問題:I2C支持總線仲裁和時鐘同步,這依賴于能夠檢測總線上的高電平和低電平狀態。如果總線使用推挽輸出,總線上的電平狀態將由最后一個發送信號的設備完全控制,從而使得仲裁和同步變得困難或不可能。因此,盡管理論上可以通過某些特定設計讓I2C總線上的設備使用推挽輸出,但這樣做通常需要額外的硬件支持和復雜的總線管理策略,且違背了I2C協議的基本設計原則。如果需要在I2C總線上實現類似推挽的功能,通常建議使用其他通信協議,如SPI或UART,這些協議本身就設計為支持推挽輸出。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 上拉電阻
    +關注

    關注

    5

    文章

    351

    瀏覽量

    30314
  • I2C
    I2C
    +關注

    關注

    28

    文章

    1351

    瀏覽量

    121107
  • 串行通信
    +關注

    關注

    4

    文章

    543

    瀏覽量

    35057
收藏 人收藏

    評論

    相關推薦

    求助,Proteus是否無法正確仿真STM32的輸出?

    Proteus仿真。通過STM32CubeMX將上述MCU的PB8、PB9引腳配置為輸出且無內部/下拉電阻,并將兩個引腳分別與PCF8
    發表于 05-29 06:29

    STM32cubemx在和推挽輸出模式下電阻和下拉電阻有什么作用和區別?

    只配置過輸入的時候和下拉電阻。不知道在和推挽輸出模式下
    發表于 03-27 07:20

    PSoc4 I2C配置下不起作用的原因是什么?

    I2C 為 4.7kΩ,驅動模式設置為極\"開路,驅動器低電平\" 但是,使用此設置,I2C 不會發出任何信號。 但是當設置為 “\"
    發表于 01-24 06:27

    請問如何讓PSoc4的I2C配置下工作?

    當設置為 \" 時,低速行駛 \" 沒有信號。 你知道這是什么原因嗎? 設備:cyble-014008-00 I2C CLK:100kHz I2C SDA:P3 [4
    發表于 01-22 06:14

    最簡單的總線通訊!I2C通訊總線的原理原來這么好懂

    通訊I2C
    安泰儀器維修
    發布于 :2024年01月02日 11:16:31

    輸出模式下不外接上電阻有驅動能力嗎?

    輸出模式下不外接上電阻有驅動能力嗎
    發表于 10-15 13:28

    0725_03 I2C SDA信號三態模式的原理與實現 - 第8節

    I2CSDA
    充八萬
    發布于 :2023年08月20日 02:10:30

    0725_03 I2C SDA信號三態模式的原理與實現 - 第7節

    I2CSDA
    充八萬
    發布于 :2023年08月20日 02:09:39

    0725_03 I2C SDA信號三態模式的原理與實現 - 第6節

    I2CSDA
    充八萬
    發布于 :2023年08月20日 02:08:48

    0725_03 I2C SDA信號三態模式的原理與實現 - 第5節

    I2CSDA
    充八萬
    發布于 :2023年08月20日 02:07:57

    0725_03 I2C SDA信號三態模式的原理與實現 - 第4節

    I2CSDA
    充八萬
    發布于 :2023年08月20日 02:07:06

    0725_03 I2C SDA信號三態模式的原理與實現 - 第3節

    I2CSDA
    充八萬
    發布于 :2023年08月20日 02:06:15

    0725_03 I2C SDA信號三態模式的原理與實現 - 第2

    I2CSDA
    充八萬
    發布于 :2023年08月20日 02:05:24

    形式的電路有哪些特點?

    上。通過一只電阻,在不增加任何器件的情況下,形成“與邏輯”關系。這也是I2C,SMBus 等總線判斷總線占用狀態的原理。
    發表于 06-20 08:38

    76e003 P1.3 P1.4輸出上升沿緩慢是怎么回事?

    請教各位大師,我用003P1.3 P1.4 輸出做模擬I2C,
    發表于 06-14 09:09
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>