新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > I2C之知(五)--I2C總線的10bit地址以及通用廣播地址

I2C之知(五)--I2C總線的10bit地址以及通用廣播地址

作者: 時間:2016-12-15 來源:網絡 收藏
其實,10bit地址我沒用過,通用廣播地址更沒用過.通用廣播地址應該是在多個mcu之間用i2c進行通信時使用的.雖說沒用到,但還是做了翻譯,說不定以后有機會用到:

10bit地址
10bit的尋址擴展可能尋址的數目.有7bit地址和10bit地址的設備可以連接到相同的I2C總線上,而且7bit尋址和10bit尋址都可以用在所有的總線速度模式下.不過,10bit尋址用的不多.
10bit的從機地址由開始條件(S)或重復開始條件(Sr)后的兩個字節(jié)組成.第一個字節(jié)的前7位是1111 0XX,XX是10bit地址的最高有效位的前兩位.第一個字節(jié)的第8bit是讀寫位,決定傳輸方向.
盡管1111 XXX有8種可能的組合,然后只有1111 0XX這四種可以用于10bit尋址.剩下的1111 1XX這四種是為將來I2C擴展用的.
前面描述的用于7bit尋址的讀寫格式都適用于10bit尋址.詳情如下:
1.主-發(fā)送器傳輸到從-接收器(10bit從機地址)

從圖中看出傳輸方向不變.當接收到開始條件后的10bit地址,從機就和它自己的地址比較從機地址的第一個字節(jié)(1111 0XX),并檢查第八個bit(讀寫位)是否為0.有可能多個設備都匹配并產生應答(A1).接下來所有從機開始匹配自己地址與第二個字節(jié)的8個bit(XXXX XXXX),這時就只有一個從機匹配并產生應答(A2).被主機尋址匹配的從機會保持被尋址的狀態(tài)直到接收到終止條件或者是重復開始條件后跟著一個不同的從機地址.
2.主-接收器從從-發(fā)送器接收數據(10bit從地址)
在第二個讀寫位之后傳輸方向就會改變.

在第二個應答A2之前,處理過程與上面的主-發(fā)送器尋址從-接收器一致.在重復開始條件(Sr)之后,匹配的從機會保持被尋址上的狀態(tài).這個從機會檢查Sr之后的第一個字節(jié)的前7bit是否正確,然后測試第8bit是否為1(讀).如果這也匹配的話,從機就認定它被作為一個發(fā)送器被尋址到了并產生應答A3.從-發(fā)送器會保持被尋址的狀態(tài)知道接收到終止條件(P)或者重復開始條件(Sr)跟著一個不同的從機地址.然后這個時候的重復開始條件下,所有的從機會比較它們的地址與11110XX比較并測試第八位(讀寫位).然而它們不會尋址到,因為對于10bit設備,讀寫位是1,或者對于7bit的設備,1111 0XX的從機地址不匹配.

保留地址
下表是保留的兩組地址的描述:

[1]通用廣播地址是用來包括軟件復位的幾個功能
[2]沒有設備可以應答開始字節(jié)
[3]CBUS地址是保留的,使得同一個系統(tǒng)可CBUS總線兼容的設備和I2C總線兼容的設備.I2C兼容的設備不允許響應這個地址
[4]為不同總線格式保留的

通用廣播地址
通用廣播地址是用來同時尋址所有連接到I2C總線上的設備.如果一個設備在廣播地址時不需要數據,它可以不產生應答來忽略.如果一個設備從通用廣播地址請求數據,它可以應答并當作一個從-接收器.當一個或多個設備響應時主機并不知道有多少個設備應答了.每一個可以處理這個數據的從-接收器可以響應第二個字節(jié).從機不處理這些字節(jié)的話,可以響應NA.如果一個或多個從機響應,主機就無法看到NA.通用廣播地址的含義一般在第二個字節(jié)中指明.

有兩種情況需要考慮:
1.最低有效位B是0
2.最低有效位B是1
當B是0,第二個字節(jié)有如下的定義:
1.0000 0110(06h):復位并通過硬件寫從機地址的可編程部分.在接收到這樣的2個字節(jié)時,所有可以響應這個廣播地址的設備將復位并進入地址的可編程部分.要采取預防措施來確保設備不會在加上電源電壓后將SDA或SCL拉低,因為這些低電平會阻塞總線.
2.0000 0100(04h):通過硬件寫從機地址的可編程部分.行為同上,但設備不復位
3.0000 0000(00h):這個不應該作為第二個字節(jié)使用
編程過程的順序參考相應設備的datasheet




軟件復位
在通用廣播(0000 0000)之后發(fā)送0000 0010(06h)作為第二個字節(jié)會引起軟件復位.這個特性是可選的,不是所有的設備都會響應這個命令.在接收到這樣的2個字節(jié)時,所有可以響應這個廣播地址的設備將復位并進入地址的可編程部分.要采取預防措施來確保設備不會在加上電源電壓后將SDA或SCL拉低,因為這些低電平會阻塞總線.

開始字節(jié)
微控制器有兩種方式連接到I2C總線上.有片上的硬件I2C總線接口的微控制器可以變成為只接收總線的中斷請求.當設備沒有這樣的接口,它必須要通過軟件手段來檢測總線.很明顯,微控制器檢測的時間或者輪詢總線的時間越多,實現自己功能的時間就越少.
因此快速硬件設備和依賴軟件輪詢的相對慢速微控制器是有速度差別的.
在這種情況下,數據傳輸前有一個比正常時間長很多的起始過程.起始過程組成如下:
一個開始條件(S)
一個開始字節(jié)(0000 0001)
應答位(ACK)
重復的開始條件(Sr)


主機發(fā)送完開始條件后,發(fā)送開始字節(jié)(0000 0001).另外的微控制器可以以低采樣率來采樣SDA線知道開始字節(jié)的7個0中的一個被偵測到.在偵測到SDA線的低電平后,微控制器可以切換到更高的采樣率來探測用于同步的重復開始條件.
在開始字節(jié)后一個應答相關的時鐘脈沖產生.設備不允許應答開始字節(jié).

本文引用地址:http://m.butianyuan.cn/article/201612/330189.htm


評論


技術專區(qū)

關閉