嵌入式系統
I²C 匯流排(Inter-Integrated Circuit)
I²C 讓一個控制器只用兩條共用的線——時脈線(SCL)與資料線(SDA)——就能和數十顆周邊晶片對話,靠的是給每個裝置一個獨一無二的 7 位元位址。它像一條多方共線電話:控制器喊出一個位址,只有名字對上的裝置回應,其他人都安靜。正是這套定址機制讓 I²C 與眾不同——一把感測器、一顆即時時鐘、一顆 EEPROM 和一塊顯示器全都能掛在同樣兩條線上,而 UART 每接一個裝置就得多一對線。
兩條線都是「開汲極(open-drain)」:任何晶片只能把線拉低;放開時由上拉電阻把它拉回高電位,因此絕不會有兩個裝置在匯流排上互相對打。控制器負責驅動時脈,並用起始條件、位址、讀/寫位元,接著一個個 8 位元位元組(每個都由接收端回 ACK 確認)框住每次傳輸,最後以停止條件結束。標準速度為 100 kHz 到 400 kHz(高速模式可達 3.4 MHz)——比 SPI 慢,卻在腳位上極為省。代價是複雜:定址、ACK 握手、時脈延展,還有那惡名昭彰的時刻——兩顆晶片出廠時帶著相同的固定位址,在匯流排上撞個正著。
忘了在 SDA 和 SCL 上接上拉電阻是 I²C 接線的頭號錯誤:沒有上拉電阻,線就永遠回不到高電位,匯流排根本動不了。兩個裝置共用同一固定位址則是第二大頭痛問題。
又称
另见