|

【Maker電子學】I2C 界面解密 — PART 7 拉起電阻

   
作者:Bird

我們花了好幾回的篇幅聊了  I2C(以下寫作 I2C)  的通訊協定,包括它的定址方法、傳輸格式、時脈擴展以及 bus 上的仲裁機制。這一回我們要回到 I2C bus 的實體層,來聊一下 I2C bus 的拉起電阻(pull-up resistors)。

至關重要的拉起電阻

我們在一開始說明 I2C 的 bus 架構時,就說過 I2C bus 是一個「wired-AND」的電路:bus 上的任何裝置都只能把 SCL 或 SDA 訊號拉 low,而不能讓訊號變爲 high 的狀態。

這個驅動訊號的特性是因爲 I2C 裝置的輸出是 open-drain 電路:它只有 low-side 的電晶體可以用來把輸出腳拉到 low,而當 I2C 裝置想要把 SCL 或 SDA 設爲 high 時,實際上只是關掉這顆 low-side 的驅動電晶體。

(圖片來源:Bird 提供)

因爲電路中並沒有 high-side 的驅動電晶體,因此當 I2C 裝置想要把 SCL 或 SDA 設爲 high 時,實際上輸出腳的特性就會變成高阻抗。什麼是高阻抗呢?就是這個裝置好像從人間蒸發一樣,不存在這個電路上了;換句話說,open-drain 輸出的 output high,事實上就只是「不驅動」電路而已。

如果沒有人驅動線路,那線路上的位準要怎麼變成 high 呢?這時候就輪到 pull-up 電阻登場了。在 I2C 的規範中有明確的提到,SCL 和 SDA 一定要各有一個 pull-up 電阻,將這兩根訊號線拉到 VCC,也就是系統的邏輯準位電源上。

本文為會員限定文章

立即加入會員! 全站文章無限看~

                               

已經是會員? 按此登入

只需不到短短一分鐘...

輸入您的信箱與ID註冊即可享有一切福利!

會員福利
1

免費電子報

2

會員搶先看

3

主題訂閱

4

好文收藏

Liang Bird

Author: Liang Bird

在外商圈電子業中闖蕩多年,經歷過 NXP、Sony、Crossmatch 等企業,從事無線通訊、影像系統、手機、液晶面板、半導體、生物辨識等不同領域產品開發。熱愛學習新事物,協助新創團隊解決技術問題。台大農機系、台科大電子所畢業,熱愛賞鳥、演奏管風琴、大提琴、法國號,亦是不折不扣的熱血 maker。

Share This Post On

5 Comments

  1. 雖然是翻譯問題 但業界應是使用上拉電阻作為翻譯

    Post a Reply
  2. 經過 4 us,CBUS上的電壓會達到 63% VCC
    但是63%的橫軸是1s @@

    Post a Reply
    • Liang Bird

      橫軸的單位不是秒,是無因次的 time constant,也就是我們文中計算的 RC 時間常數的倍率。文中示範的電路時間常數的 4us,因此橫軸爲 1 時就是 4us。

      Post a Reply
  3. Rise time 或 fall time 太長,都有可能造成接收端判定邏輯準位錯誤

    Post a Reply
  4. 請問tf (fall time) 小於規格值的話, 會有甚麼問題或是風險呢?

    Post a Reply

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *