<s id="eoqoe"><xmp id="eoqoe">
<button id="eoqoe"><strong id="eoqoe"></strong></button>
<s id="eoqoe"><xmp id="eoqoe">
<button id="eoqoe"><strong id="eoqoe"></strong></button>
<wbr id="eoqoe"></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><label id="eoqoe"></label></wbr>
<button id="eoqoe"></button>
<wbr id="eoqoe"></wbr>
你的位置:首頁(yè) > 互連技術(shù) > 正文

IIC為何需要用開(kāi)漏輸出和上拉電阻?

發(fā)布時(shí)間:2021-02-16 責任編輯:lina

【導讀】最近在調ICM20602模塊(一個(gè)六軸陀螺儀和加速度計), 使用IIC通信協(xié)議, 這個(gè)過(guò)程中遇到一個(gè)困擾我很長(cháng)時(shí)間的問(wèn)題。IIC協(xié)議正確, 但是一直讀取失敗.最后發(fā)現因為沒(méi)配置GPIO為開(kāi)漏輸出。
  
最近在調ICM20602模塊(一個(gè)六軸陀螺儀和加速度計), 使用IIC通信協(xié)議, 這個(gè)過(guò)程中遇到一個(gè)困擾我很長(cháng)時(shí)間的問(wèn)題。IIC協(xié)議正確, 但是一直讀取失敗.最后發(fā)現因為沒(méi)配置GPIO為開(kāi)漏輸出。
 
IIC為何需要用開(kāi)漏輸出和上拉電阻?
 
推挽輸出和開(kāi)漏輸出
推挽輸出: 
輸出邏輯0,則N-MOS激活;
輸出邏輯1,則P-MOS激活。
 
開(kāi)漏輸出:
在不接上拉電阻時(shí), 輸出邏輯0,則N-MOS激活;
輸出邏輯1,P-MOS不會(huì )激活, 不會(huì )輸出高電平。
在接上拉電阻時(shí), 輸出邏輯0,則N-MOS激活;
輸出邏輯1,P-MOS激活, 可以輸出高電平。
 
也就是說(shuō)開(kāi)漏輸出如果不接上拉電阻, 沒(méi)有輸出高電平的能力。
如果需要開(kāi)漏輸出有輸出高電平的能力需要接一個(gè)上拉電阻. 目前很多單片機GPIO可以通過(guò)軟件配置上拉電阻.
 
IIC為何需要用開(kāi)漏輸出和上拉電阻?
左圖為開(kāi)漏輸出(接上拉電阻), 右圖為推挽輸出
 
開(kāi)漏輸出的作用
 
防止短路: 在一些情況下(比如總線(xiàn)), 多個(gè)GPIO口可能會(huì )連接在同一根線(xiàn)上, 存在某個(gè)GPIO輸出高電平, 另一個(gè)GPIO輸出低電平的情況. 如果使用推挽輸出, 你會(huì )發(fā)現這個(gè)GPIO的VCC和另一個(gè)GPIO的GND接在了一起, 也就是短路了(涼涼了). 如果換成開(kāi)漏輸出呢? VCC和GND多了個(gè)電阻, 這樣電路就是安全的.所以總線(xiàn)一般會(huì )使用開(kāi)漏輸出.
 
IIC為何需要用開(kāi)漏輸出和上拉電阻?
 
線(xiàn)與: 開(kāi)漏輸出還能實(shí)現 線(xiàn)與 (自行百度), 減少一個(gè)與門(mén), 簡(jiǎn)化電路.
 
IIC為什么用開(kāi)漏輸出和上拉電阻
IIC協(xié)議支持多個(gè)主設備與多個(gè)從設備在一條總線(xiàn)上, 如果不用開(kāi)漏輸出, 而用推挽輸出, 會(huì )出現主設備之間短路的情況. 
 
至于為什么需要上拉電阻, 那是因為IIC通信需要輸出高電平的能力.
 
為了實(shí)現多個(gè)主設備搶占總線(xiàn)時(shí)的仲裁.IIC只有兩根線(xiàn)(SCL和SDA), 怎么判斷哪個(gè)主設備占用總線(xiàn)(當然是先來(lái)后到了). 
 
假設主設備A需要啟動(dòng)IIC, 他需要在SCL高電平時(shí), 將SDA由高電平轉換為低電平作為啟動(dòng)信號. 主設備A在把SDA拉高后, 它需要再檢查一下SDA的電平。
 
為什么? 因為線(xiàn)與. 如果主設備A拉高SDA時(shí), 已經(jīng)有其他主設備將SDA拉低了. 由于 1 & 0 = 0 那么主設備A在檢查SDA電平時(shí), 會(huì )發(fā)現不是高電平, 而是低電平. 說(shuō)明其他主設備搶占總線(xiàn)的時(shí)間比它早, 主設備A只能放棄占用總線(xiàn). 如果是高電平, 則可以占用。
 
這就是開(kāi)漏輸出在IIC通信中的另一個(gè)作用。
 
SDA是高電平, 說(shuō)明主設備A可以占用總線(xiàn), 然后主設備A將SDA拉低, 開(kāi)始通信.
SDA是低電平, 說(shuō)明有人已經(jīng)捷足先登了, 主設備A不能占用總線(xiàn), 結束通信.
 
因此, 模擬IIC一定要將GPIO端口設置為開(kāi)漏輸出并加上上拉電阻.(硬件IIC會(huì )自動(dòng)配置為開(kāi)漏輸出)。
 
 
免責聲明:本文為轉載文章,轉載此文目的在于傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問(wèn)題,請電話(huà)或者郵箱聯(lián)系小編進(jìn)行侵刪。
 
 
推薦閱讀:
如何解決PCB傳輸線(xiàn)之SI反射問(wèn)題?
分享6款簡(jiǎn)單的電源線(xiàn)路圖
電容在交流電路中的工作原理
用差分電路原理來(lái)分析輸出電壓為何要偏移
常用ADC的內部原理,你了解嗎?
特別推薦
技術(shù)文章更多>>
技術(shù)白皮書(shū)下載更多>>
熱門(mén)搜索
?

關(guān)閉

?

關(guān)閉

久久无码人妻精品一区二区三区_精品少妇人妻av无码中文字幕_98精品国产高清在线看入口_92精品国产自产在线观看481页
<s id="eoqoe"><xmp id="eoqoe">
<button id="eoqoe"><strong id="eoqoe"></strong></button>
<s id="eoqoe"><xmp id="eoqoe">
<button id="eoqoe"><strong id="eoqoe"></strong></button>
<wbr id="eoqoe"></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><label id="eoqoe"></label></wbr>
<button id="eoqoe"></button>
<wbr id="eoqoe"></wbr>