我們花了好幾回的篇幅聊了 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註冊即可享有一切福利!
會員福利
免費電子報
會員搶先看
主題訂閱
好文收藏
2022/12/16
雖然是翻譯問題 但業界應是使用上拉電阻作為翻譯
2021/08/11
經過 4 us,CBUS上的電壓會達到 63% VCC
但是63%的橫軸是1s @@
2022/05/27
橫軸的單位不是秒,是無因次的 time constant,也就是我們文中計算的 RC 時間常數的倍率。文中示範的電路時間常數的 4us,因此橫軸爲 1 時就是 4us。
2021/03/02
Rise time 或 fall time 太長,都有可能造成接收端判定邏輯準位錯誤
2021/02/26
請問tf (fall time) 小於規格值的話, 會有甚麼問題或是風險呢?