配置IIC為什麼要使用開漏輸出

2021-10-02 19:54:10 字數 867 閱讀 3822

圖為stm32f103-gpio

iic是兩線式串列埠匯流排,分別為scl線和sda線,對主機而言scl的io口要實現輸出高低電平的功能,sda的io口要實現輸出高低電平和輸入掃瞄的功能,眾所周知,我們配置iic都是使用開漏輸出配置的,那是為什麼???

**1.iic電路存在上拉電阻.**我們得先明白什麼是開漏輸出,一句話,開漏輸出如果不接上拉電阻是沒有輸出高電平的能力的,只有輸出低電平的能力,然iic電路存在上拉電阻,讓配置開漏輸出成為了可能.當不連線上拉電阻時,輸出邏輯1,p-mos未啟用,輸出電路開路,不能輸出高電平;輸出邏輯0,n-mos啟用,輸出低電平.當連線上拉電阻時,輸出邏輯1,p-mos未啟用,有上拉電壓存在,輸出高電平;輸出邏輯0,n-mos啟用,輸出低電平.

**2.根據上圖兩張圖gpio的輸入輸出配置,**當只有輸出配置時,輸入檢測功能還是可以存在使用的.所以我們完全有理由給scl和sda都配置輸出功能即可實現iic,不用再給scl和sda單獨進行輸入配置.

3.配置方式

scl線可以配置推挽輸出,開漏輸出(有上拉電壓存在)都可,因為不用兼具輸入掃瞄功能;

sda線必須配置開漏輸出,因為要兼具輸入掃瞄功能,

如果是配置推挽輸出,當要實現輸入檢測時,就會受到輸出電路沒有關閉的影響,因為之前的輸出電平還是存在的,造成輸入電路和輸出電路的短接等現象.配置開漏輸出的目的當需要輸入檢測時輸出邏輯1,p-mos未啟用,使輸出電路開路,不對輸入電路產生影響.

為什麼要使用blog

有哥們問我,你為什麼使用blog?我總結了一下,覺得有如下幾個原因。1對自己的督促 有了blog,就會經常記得寫點東西 就會經常翻翻網上的新文章,了解一下新技術,不至於迷失在忙碌的生活中 如果把自己的所感所想所學寫出了,自己對自己也會有個概念,不至於迷迷糊糊 還有,畢竟是掛在網上的文字,心中難免擔心...

為什麼要使用XML

xml 代表擴充套件標記語言 extensible markup language 是由 world wide web consortium w 3c 的 xml工作組定義的。這個工作組是這樣描述該語言的 擴充套件標記語言 xml 是 sgml 的子集,其目標是允許普通的 sgml 在web 上以目...

為什麼要使用Nginx?

有人說這些基準測試是不準確的,因為在這樣那樣的環境下,做的比較不一致。我傾向同意基準測試只是告訴了我們其中一部分情況,你能做的是消除偏見 有人見過所有人都同意乙個基準測試是公平的嗎?我是沒見過。我們投資的一些公司把web平台切換到nginx後,可以顯著的解決擴充套件問題。nginx明顯有效的實現了今...