單片機訪問IIC總線技術
等所有器件數完了它們的低電平周期后,時鐘線會被釋放為高電平。之后所有器件開始數他們的高電平,最早數完高電平的器件會再次把SCL拉低,因此高電平周期是由高電平周期最短的器件決定的。
總線仲裁 同步時鐘時序圖:

仲裁:
主機只能在總線空閑的時候啟動傳輸。兩個或多個主機可能在起始條件的最小持續時間內產生一個起始條件,結果在總線上產生一個規定的起始條件。
當SCL線是高電平時,仲裁在SDA線發生:在其他主機發送低電平時,發送高電平的主機將斷開它的數據輸出級,因為總線上的電平與它自己的電平不同。
仲裁可以持續多位。最開始是比較地址位,如果有相同主機嘗試尋址相同的器件,仲裁會繼續比較數據位(如果是主機-發送器),或者比較響應位(如果是主機-接收器)。因為IIC總線的地址和數據信息由贏得仲裁的主機決定,在仲裁過程中不會丟失信息。即最后贏得總線的主機是發送或接受的數據是正確的主機。
丟失仲裁的主機可以產生時鐘脈沖知道丟失仲裁的該字節末尾。
由于HS模式的主機有一個唯一的8位主機碼,因此一般在第一個字節就可以結束仲裁。
如果主機也結合了從機的功能,而且在尋址階段丟失仲裁,它很可能就是贏得仲裁的主機在尋址的器件。因此丟失仲裁的主機要立即切換到從機模式。
兩個主機搶總線的時序圖:

IIC總線的控制只由地址或主機碼以及競爭主機發送的數據決定,沒有中央主機,總線也沒有任何定制的優先權。
注意:在串口傳輸時,當重復起始條件或停止條件發送到IIC總線的時候,仲裁過程仍在進行。
下面情況仲裁不發送:
1. 重復其實條件和數據位
2. 停止條件和數據位
3. 重復起始條件和停止條件
從機不會介入仲裁過程。
用時鐘同步機制作為握手
在字節級的快速傳輸中,器件可以快速接受字節,但是需要更多的時間保存接受到的字節或準備另一個要發送的字節。因此,從機可以以一種握手過程在接受和響應一個字節后使SCL線保持低電平,迫使主機進入等待狀態,直到從機準備好下一個要傳輸的字節。時序參考Fig.6。
在位傳輸級可以通過延長每個時鐘的低電平周期減慢總線時鐘。從而使主機和從機都能適應器件內部的操作速率。
HS模式,握手功能只能在字節級使用。
數據格式:
7位的地址格式:
數據的傳輸如下圖格式:

在起始條件(S)后,發送了一個從機的地址。地址共7位,緊接著的第8位是數據方向位(R/W)-‘0’ 表示發送寫,‘1’表示請求數據讀。數據傳輸一般由主機產生的停止位(P)終止。但是主機還希望在總線上通訊,它可以產生重復起始條件(Sr)和尋址另一個從機,而不是首先產生一個停止條件。在這種傳輸中,可能有不同的讀/寫格式組合。
如下圖:



7位尋址:
IIC總線的尋址過程是在起始條件后的第一個字節決定了主機選擇哪個主機。廣播呼叫‘地址除外。使用這個地址,理論上所有器件都會發出一個響應。也可以使器件忽略這個地址。廣播呼叫地址的第二個字節定義了要采取的行動。
當主機在總線上發送了7個地址位之后,系統中的每個器件都在其實條件后講頭7位與自己的地址比較。如果一樣,器件會被主機尋址,從機的工作模式有第八位覺得(接受/發送)。

從機的地址位是由固定地址部分和可編程地址部分組成。如有4位固定的和3位通過芯片引腳可編程的那么可以掛載8個相同的芯片到IIC總線。
IIC地址的分配由IIC總線委員會協調進行。
起始位之后的第一個字節的一些特殊地址含義:
如下表:



評論