ZHCUAN9C February 2013 – November 2023 TAS2505 , TAS2505-Q1
TAS2505 支持 I2C 控制協議,并會響應 I2C 地址 0011?000。I2C 是兩線制開漏接口,支持單根總線上的多個器件和主器件。I2C 總線上的器件通過將總線接地只將其驅動為低電平;不會將總線驅動為高電平。總線由上拉電阻拉至高電平,因此當沒有器件將總線驅動為低電平時,總線為高電平。這樣,兩個器件就不會發生沖突;如果兩個器件同時驅動總線,不會發生驅動器爭用。
I2C 總線上的通信始終在兩個器件之間進行,一個器件用作主器件,另一個器件用作從器件。主器件和從器件都可以讀取和寫入,但從器件只能在主器件的指示下執行上述操作。一些 I2C 器件可用作主器件或從器件,但 TAS2505 只能用作從器件。
I2C 總線由 SDA 和 SCL 這兩條線組成。SDA 傳輸數據,SCL 信號提供時鐘。所有數據以八位一組的形式通過 I2C 總線進行傳輸。為在 I2C 總線上發送一個位,SDA 線將驅動至適當電平,同時 SCL 為低電平(SDA 低電平表示該位為 0,高電平表示該位為 1)。
SDA 線穩定后,SCL 線變為高電平,然后變為低電平。SCL 線上的這一脈沖會在時鐘沿將 SDA 位輸入到接收器移位寄存器中。
I2C 總線是雙向的:SDA 線用于發送和接收數據。當主器件向從器件讀取數據時,從器件驅動數據線;當主器件將數據發送到從器件時,主器件驅動數據線。
大多數時候,總線處于空閑狀態,沒有通信發生,兩條線都處于高電平。當進行通信時,總線處于運行狀態。只有主器件才能在總線上開始通信。通常,數據線只能在時鐘線為低電平時改變狀態。如果數據線在時鐘線為高電平時改變狀態,則它要么是開始條件,要么是與之對應的停止條件。開始條件是指時鐘線為高電平,且數據線從高電平變為低電平。停止條件是指時鐘線為高電平,且數據線從低電平變為高電平。
主器件發出開始條件后,它會發送一個字節來選擇從器件進行通信。此字節稱為地址字節。I2C 總線上的每個器件都具有一個等待響應的唯一 7 位地址。(從器件也可以具有 10 位地址;有關詳細信息,請參閱 I2C 規范。)主器件在地址字節中發送地址,并一同發送一個位以表明它是否希望向從器件讀取或寫入。
在 I2C 總線上發送的每個字節無論是地址還是數據,都通過一個確認位進行確認。當主器件已完成向從器件發送一個字節(8 個數據位)時,它將停止驅動 SDA 并等待從器件確認此字節。從器件通過將 SDA 拉至低電平確認此字節。主器件隨后發送一個時鐘脈沖對確認位計時。同樣,當主器件已完成讀取一個字節時,它會將 SDA 拉至低電平以向從器件進行確認。然后,它發送一個時鐘脈沖對此位計時。(請記住,主器件始終驅動時鐘線。)
只需在確認周期內將 SDA 保持為高電平即可執行非確認。如果總線上沒有器件,而主器件嘗試對其進行尋址,則將收到非確認,因為該地址上沒有器件將線路拉至低電平。
當主器件完成與從器件的通信時,它可能會發出停止條件。發出停止條件時,總線再次變為空閑狀態。主器件也可能發出另一開始條件。當在總線處于運行狀態下發出開始條件時,這稱為重復開始條件。
TAS2505 還可以響應和確認通用廣播(即主器件利用從器件地址字節 00h 發出命令)。此功能在默認情況下處于禁用狀態,但可通過頁 0 寄存器 34 位 D5 啟用。
圖 3-22 I2C 寫入
圖 3-23 I2C 讀取對于 I2C 寄存器寫入,如果主器件未發出停止條件,則器件將進入自動遞增模式。因此在接下來的八個時鐘內,SDA 上的數據將被視為下一增量寄存器的數據。
同樣,對于 I2C 寄存器讀取,在器件從尋址到的寄存器發送出 8 位數據后,如果主器件發出確認,從器件將接管 SDA 總線的控制權,并在接下來的 8 個時鐘內發送下一增量寄存器的數據。