0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

開漏輸出在IIC通信中的作用

Q4MP_gh_c472c21 ? 來源:玩轉(zhuǎn)嵌入式 ? 作者:玩轉(zhuǎn)嵌入式 ? 2022-03-12 10:48 ? 次閱讀

最近在調(diào)ICM20602模塊(一個六軸陀螺儀和加速度計(jì)), 使用IIC通信協(xié)議, 這個過程中遇到一個困擾我很長時(shí)間的問題。

IIC協(xié)議正確, 但是一直讀取失敗.最后發(fā)現(xiàn)因?yàn)闆]配置GPIO為開漏輸出。

開漏輸出在IIC通信中的作用

推挽輸出和開漏輸出

推挽輸出: 輸出邏輯0,則N-MOS激活;輸出邏輯1,則P-MOS激活。

開漏輸出:在不接上拉電阻時(shí), 輸出邏輯0,則N-MOS激活;輸出邏輯1,P-MOS不會激活, 不會輸出高電平。在接上拉電阻時(shí), 輸出邏輯0,則N-MOS激活;輸出邏輯1,P-MOS激活, 可以輸出高電平。

也就是說開漏輸出如果不接上拉電阻, 沒有輸出高電平的能力。如果需要開漏輸出有輸出高電平的能力需要接一個上拉電阻. 目前很多單片機(jī)GPIO可以通過軟件配置上拉電阻.

開漏輸出在IIC通信中的作用

左圖為開漏輸出(接上拉電阻), 右圖為推挽輸出

開漏輸出的作用

防止短路: 在一些情況下(比如總線), 多個GPIO口可能會連接在同一根線上, 存在某個GPIO輸出高電平, 另一個GPIO輸出低電平的情況. 如果使用推挽輸出, 你會發(fā)現(xiàn)這個GPIO的VCC和另一個GPIO的GND接在了一起, 也就是短路了(涼涼了). 如果換成開漏輸出呢? VCC和GND多了個電阻, 這樣電路就是安全的.所以總線一般會使用開漏輸出.

開漏輸出在IIC通信中的作用

線與: 開漏輸出還能實(shí)現(xiàn) 線與 (自行百度), 減少一個與門, 簡化電路.

IIC為什么用開漏輸出和上拉電阻

IIC協(xié)議支持多個主設(shè)備與多個從設(shè)備在一條總線上, 如果不用開漏輸出, 而用推挽輸出, 會出現(xiàn)主設(shè)備之間短路的情況.

至于為什么需要上拉電阻, 那是因?yàn)镮IC通信需要輸出高電平的能力.

為了實(shí)現(xiàn)多個主設(shè)備搶占總線時(shí)的仲裁.IIC只有兩根線(SCL和SDA), 怎么判斷哪個主設(shè)備占用總線(當(dāng)然是先來后到了).

假設(shè)主設(shè)備A需要啟動IIC, 他需要在SCL高電平時(shí), 將SDA由高電平轉(zhuǎn)換為低電平作為啟動信號. 主設(shè)備A在把SDA拉高后, 它需要再檢查一下SDA的電平。

為什么? 因?yàn)榫€與. 如果主設(shè)備A拉高SDA時(shí), 已經(jīng)有其他主設(shè)備將SDA拉低了. 由于 1 & 0 = 0 那么主設(shè)備A在檢查SDA電平時(shí), 會發(fā)現(xiàn)不是高電平, 而是低電平. 說明其他主設(shè)備搶占總線的時(shí)間比它早, 主設(shè)備A只能放棄占用總線. 如果是高電平, 則可以占用。

這就是開漏輸出在IIC通信中的另一個作用。

SDA是高電平, 說明主設(shè)備A可以占用總線, 然后主設(shè)備A將SDA拉低, 開始通信.SDA是低電平, 說明有人已經(jīng)捷足先登了, 主設(shè)備A不能占用總線, 結(jié)束通信.

因此, 模擬IIC一定要將GPIO端口設(shè)置為開漏輸出并加上上拉電阻.(硬件IIC會自動配置為開漏輸出)。

原文標(biāo)題:IIC為什么需要用開漏輸出和上拉電阻?

文章出處:【微信公眾號:嵌入式ARM】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 電阻
    +關(guān)注

    關(guān)注

    86

    文章

    5514

    瀏覽量

    172041
  • IIC
    IIC
    +關(guān)注

    關(guān)注

    11

    文章

    300

    瀏覽量

    38338
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1204

    瀏覽量

    52104

原文標(biāo)題:IIC為什么需要用開漏輸出和上拉電阻?

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    N溝道輸出和CMOS輸出是什么?

    N溝輸出、CMOS輸出是表示輸出端子的輸出構(gòu)成的種類。
    的頭像 發(fā)表于 09-04 16:09 ?6210次閱讀
    N溝道<b class='flag-5'>開</b><b class='flag-5'>漏</b><b class='flag-5'>輸出</b>和CMOS<b class='flag-5'>輸出</b>是什么?

    推挽輸出輸出

    推挽輸出輸出的區(qū)別 推挽輸出:可以輸出高,低電平,連接數(shù)字器件;
    發(fā)表于 11-18 22:05

    IIC總線的總結(jié)與問題(IIC輸出輸出 硬件IIC要求從設(shè)備有應(yīng)答能力 IC在多字節(jié)的讀取的時(shí)候必須要正確的給出應(yīng)答)

    本文摘錄于本人博客:http://blog.csdn.net/chengdong1314/article/details/51995861IIC輸出
    發(fā)表于 11-14 00:23

    IIC為什么用輸出和上拉電阻?

    IIC通信協(xié)議推挽輸出輸出
    發(fā)表于 02-26 06:48

    串行通信中IIC總線工作原理是什么

    串行通信中IIC總線工作原理51本身不帶IIC總線 ,使用程序模擬IIC通信協(xié)議常用的串行總線協(xié)議UART、1-wire、I2C和SPI總
    發(fā)表于 12-08 07:52

    輸出_什么是輸出

    什么是輸出,輸出:OC門的輸出就是
    發(fā)表于 03-31 15:31 ?7358次閱讀

    輸出與推挽輸出比較

    stm32 gpio 輸出與推挽輸出的區(qū)別。
    發(fā)表于 05-19 15:32 ?16次下載

    IIC為什么要用輸出和上拉電阻?

    最近在調(diào)ICM20602模塊(一個六軸陀螺儀和加速度計(jì)), 使用IIC通信協(xié)議, 這個過程中遇到一個困擾我很長時(shí)間的問題。 IIC協(xié)議正確, 但是一直讀取失敗.最后發(fā)現(xiàn)因?yàn)闆]配置GPIO為
    的頭像 發(fā)表于 03-09 13:57 ?1.8w次閱讀
    <b class='flag-5'>IIC</b>為什么要用<b class='flag-5'>開</b><b class='flag-5'>漏</b><b class='flag-5'>輸出</b>和上拉電阻?

    IIC 輸出相關(guān)分析資料下載

    電子發(fā)燒友網(wǎng)為你提供IIC 輸出相關(guān)分析資料下載的電子資料下載,更有其他相關(guān)的電路圖、源代碼、課件教程、中文資料、英文資料、參考設(shè)計(jì)、用戶指南、解決方案等資料,希望可以幫助到廣大的
    發(fā)表于 03-28 08:44 ?16次下載
    <b class='flag-5'>IIC</b> <b class='flag-5'>開</b><b class='flag-5'>漏</b><b class='flag-5'>輸出</b>相關(guān)分析資料下載

    輸出和推挽輸出

    在STM32或者GD32中,普通的輸出GPIO輸出方式主要是輸出和推挽輸出,下面我們開始講解
    的頭像 發(fā)表于 11-24 10:23 ?1.4w次閱讀
    <b class='flag-5'>開</b><b class='flag-5'>漏</b><b class='flag-5'>輸出</b>和推挽<b class='flag-5'>輸出</b>

    推挽輸出輸出講解

    推挽輸出輸出講解
    的頭像 發(fā)表于 07-28 14:01 ?2070次閱讀
    推挽<b class='flag-5'>輸出</b>與<b class='flag-5'>開</b><b class='flag-5'>漏</b><b class='flag-5'>輸出</b>講解

    什么是浮動輸入和輸出

    一些微控制器輸出可以設(shè)置為(或者只能設(shè)置為)。
    的頭像 發(fā)表于 11-27 15:45 ?1256次閱讀
    什么是浮動輸入和<b class='flag-5'>開</b><b class='flag-5'>漏</b><b class='flag-5'>輸出</b>

    輸出為什么加上拉電阻

    輸出(Open-Drain Output)是一種常見的電子電路輸出方式,廣泛應(yīng)用于數(shù)字電路、模擬電路和混合信號電路中。
    的頭像 發(fā)表于 07-14 10:46 ?2108次閱讀

    輸出默認(rèn)是高還是低

    輸出(Open-Drain Output)是一種電子電路的輸出方式,通常用于數(shù)字信號的傳輸。在這種輸出方式中,
    的頭像 發(fā)表于 07-14 10:48 ?1599次閱讀

    IIC信號線需要增加上拉電阻,是因?yàn)?b class='flag-5'>IIC的IO是什么

    IIC通信中扮演著至關(guān)重要的角色,而上拉電阻的加入則是實(shí)現(xiàn)這種通信方式有效性和可靠性的關(guān)鍵。以下是對此現(xiàn)象的介紹: 一、IIC通信
    的頭像 發(fā)表于 10-06 15:50 ?715次閱讀