數字接口――I2C 總線(xiàn)
了解內部集成電路總線(xiàn)(一種基本的低成本互聯(lián)方案)的連接和格式。
內置集成電路 (I2C) 總線(xiàn)是一種單端、多主控雙線(xiàn)總線(xiàn),適合在半雙工模式下進(jìn)行高效的內部集成電路通信。該總線(xiàn)使用漏極開(kāi)路技術(shù),因此通過(guò)電阻器連接到 VDD 時(shí)就需要兩根信號線(xiàn),分別為串行數據 (SDA) 線(xiàn)和串行時(shí)鐘線(xiàn) (SCL),如圖 1 所示。
圖 1 I2C 總線(xiàn)
將線(xiàn)路拉低至接地認為是邏輯 0,而使線(xiàn)路浮置則為邏輯 1。通常將這用作通道接入方式。當 SCL 為低電平時(shí),必將發(fā)生邏輯狀態(tài)變化;當 SSL 為高電平時(shí),若發(fā)生變化則認為是 START 和 STOP 條件。盡管系統允許提供更高或更低的電壓,但典型的電源電壓為 3.3V 和 5V。
I2C 通信采用 7 位地址空間(具有 16 個(gè)預留地址),因此在同一總線(xiàn)上,理論上最多可以和 112 個(gè)節點(diǎn)通信。但實(shí)際上,節點(diǎn)數會(huì )受到總線(xiàn)上規定的總體總電容 (400 pF) 限制,從而將通信距離限制為幾米。規定的信號傳輸速率為 100 kbit/s(標準模式)、400 kbit/s(快速模式)、1 Mbit/s(快速模式Plus,FM+)和 3.4 Mbit/s(高速模式)。
總線(xiàn)上的節點(diǎn)有主從之分。主節點(diǎn)負責發(fā)布時(shí)鐘和從節點(diǎn)地址,并且還開(kāi)始和結束數據處理。從節點(diǎn)負責接收時(shí)鐘和地址,并響應來(lái)自主節點(diǎn)的請求。圖 2 顯示了主從節點(diǎn)之間典型的數據傳送示例。
圖 2 完整的數據傳輸時(shí)序圖
主節點(diǎn)通過(guò)創(chuàng )建一個(gè) START 條件發(fā)布一個(gè)數據處理,緊接著(zhù)發(fā)布希望與其進(jìn)行通信的從節點(diǎn)的 7 位地址。隨后發(fā)送一個(gè)信號讀寫(xiě)位,表示主節點(diǎn)是否愿意寫(xiě)入到從節點(diǎn) (0) 或者自從節點(diǎn)讀取 (1)。接下來(lái),主節點(diǎn)將釋放 SDA 線(xiàn),以允許從節點(diǎn)對數據接收作出應答。
在第 9 個(gè) SCL 時(shí)鐘脈沖的整個(gè)高電平期間,從節點(diǎn)通過(guò)將 SDA 拉至低電平以回應一個(gè)應答位 (ACK),之后主節點(diǎn)一直處于傳輸或接收模式(根據發(fā)送的讀寫(xiě)位而定),而從節點(diǎn)則一直處于對應的互補模式(分別為接收或傳輸)。
發(fā)送地址和 8 位數據字節時(shí)首先發(fā)送最高位 (MSB)。當 SCL 為高電平時(shí),通過(guò) SDA 由高電平向低電平跳變來(lái)指示 START 位。而當 SCL 為高電平時(shí),則通過(guò) SDA 由低電平向高電平跳變來(lái)產(chǎn)生 STOP 條件。
當主節點(diǎn)寫(xiě)入到從節點(diǎn)時(shí),它會(huì )在從節點(diǎn)發(fā)送 ACK 位時(shí)重復發(fā)送一個(gè)字節。在這種情況下,主節點(diǎn)將處于主傳輸模式,而從節點(diǎn)則處于從接收模式。當主節點(diǎn)自從節點(diǎn)讀取時(shí),它會(huì )重復接收自從節點(diǎn)的字節,同時(shí)對每個(gè)字節的接收作出應答 (ACK),但最后一個(gè)字節除外,請參見(jiàn)圖 3。這種情況下,主節點(diǎn)將處于主接收模式,而從節點(diǎn)則處于從傳輸模式。
評論