日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

I2C中的10bit地址读写

發(fā)布時(shí)間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 I2C中的10bit地址读写 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 10 bit地址
    • 寫操作
    • 組合操作
  • 10位地址中的保留地址
    • 1.廣播尋址
    • 2.Start Byte
    • 3.Bus clear

系列文章: 《I2C總線(1)–數(shù)據(jù)傳輸格式與7位地址讀寫》; 《I2C總線(3)–時(shí)鐘同步和仲裁》; 《I2C總線(4)–高速模式》; 《I2C總線(5)–線與和上拉電阻》; 《I2C總線(6)–START BYTE》

10 bit地址

I2C總線中使用10位地址擴(kuò)展了7位地址位數(shù),但是10位地址和7位地址的設(shè)備可以連接到相同的I2C總線中,并且7位和10位地址均可以在所有總線速度模式中使用。

  • 在產(chǎn)生開始條件或重復(fù)開始后,緊跟其后產(chǎn)生10位地址。
  • 10位地址要占據(jù)兩個(gè)字節(jié)。
  • 第一個(gè)字節(jié)中,前7位是組合1111 0XX,其中后兩位XX是10位地址的兩個(gè)最高有效位(MSB)。
  • 第一個(gè)字節(jié)中,第8位是R/W位,決定傳輸方向。
  • 第二個(gè)字節(jié)(XXXX XXXX)用于多個(gè)從設(shè)備應(yīng)答的情況,可進(jìn)一步比較地址。

寫操作

采用10bit地址讀寫和7bit地址讀寫是相同的,下面重點(diǎn)是闡述出不同之處。

  • 在啟動(dòng)條件滿足后,會(huì)發(fā)送從地址的第一個(gè)字節(jié)(之前說過,10bit地址要發(fā)送兩個(gè)字節(jié))。
  • 每個(gè)從設(shè)備將從地址第一個(gè)字節(jié)的前七位(1111 0XX)與自己的地址進(jìn)行比較,并檢測(cè)第8位是否為0。
  • 與從地址第一個(gè)字節(jié)相匹配的從設(shè)備會(huì)返回一個(gè)ACK(記為A1),
  • 但是,有個(gè)能會(huì)有多個(gè)從設(shè)備匹配并生成應(yīng)答信號(hào)(A1)。
  • 緊接發(fā)送10bit從地址的第二個(gè)字節(jié),所有應(yīng)答A1的從設(shè)備的地址與第二個(gè)字節(jié)(XXXX XXXX)進(jìn)行比較,最終只有一個(gè)從設(shè)備地址匹配,并生成應(yīng)答信號(hào)ACK(記為A2)。
  • 主設(shè)備生成停止條件,或者生成重復(fù)開始條件。

組合操作

單純的讀操作與7bit無太大差異,這里不再贅述。下面介紹先寫后讀的操作,有些地方需要注意。

  • 下圖傳輸方向在第2個(gè)RW位改變,所以在應(yīng)答信號(hào)A2之前為讀操作。
  • 重復(fù)開始信號(hào)啟動(dòng)后,匹配的從設(shè)備會(huì)記住它之前被尋址過。
  • 然后這個(gè)從設(shè)備會(huì)檢查Sr條件后的前7位,是否與之前讀操作時(shí)從地址第一個(gè)字節(jié)相同,并檢測(cè)第8位是否為1。
  • 如果匹配,則從設(shè)備認(rèn)為它已經(jīng)作為一個(gè)發(fā)送器被尋址,并生成確認(rèn)信號(hào)ACK(A3),不會(huì)再比較10位從地址的第二個(gè)字節(jié)

10位地址中的保留地址

有兩組地址(0000 XXX 和 1111 XXX)是保留的,用以實(shí)現(xiàn)其他的功能。如下:

下面分別介紹幾個(gè)特殊功能。

1.廣播尋址

廣播尋址(0000 0000)用于同時(shí)尋址連接到I2C總線的每個(gè)設(shè)備。

  • 如果設(shè)備不需要廣播提供的任何數(shù)據(jù),它可以回復(fù)NACK來忽略廣播地址;
  • 如果設(shè)備需要來自廣播的數(shù)據(jù),會(huì)對(duì)廣播地址進(jìn)行ACK,并作為一個(gè)從接收設(shè)備;
  • 如果多個(gè)設(shè)備響應(yīng)廣播地址ACK,主設(shè)備并不知道有多少個(gè)設(shè)備回應(yīng)。每個(gè)能夠處理此數(shù)據(jù)的從接收設(shè)備第二個(gè)和后面的字節(jié)ACK。

一般廣播地址的含義總是在地址的第二個(gè)字節(jié)中指定,如下圖:

對(duì)于LSB(最低有效位)要分為兩種情況考慮:

  • LSB為 0 時(shí)
廣播地址(第二字節(jié))描述
0000 0110 (10‘h06)1.從設(shè)備回應(yīng)廣播地址復(fù)位,并接受地址可編程部分;2.必須采取防御措施 ,以確保設(shè)備在施加電壓后不會(huì)拉低SDA或SCL,因?yàn)檫@些低電平會(huì)阻塞總線
0000 0100 (10‘h04)1.設(shè)備不復(fù)位;2.通過硬件編寫從地址的可編程部分;3.也有要防御措施
0000 0000 (10‘h00)這個(gè)代碼不允許出現(xiàn)在第二個(gè)字節(jié)
  • LSB為 1 時(shí)

當(dāng)LSB=1時(shí),2個(gè)字節(jié)的地址序列是一個(gè)硬件通用調(diào)用。這意味著地址序列是由硬件主設(shè)備傳輸?shù)?#xff0c;例如鍵盤掃描器。第二個(gè)字節(jié)剩下的7位包含硬件主設(shè)備地址,這個(gè)地址會(huì)被一個(gè)連接到總線的智能設(shè)備(例如微控制器)識(shí)別,然后總線接受來自硬件設(shè)備的信息。

由于硬件主設(shè)備實(shí)現(xiàn)不知道消息必須要傳輸?shù)?哪個(gè)設(shè)備,因此它只能生成這個(gè)硬件通用調(diào)用和他自己的地址,然后標(biāo)識(shí)給系統(tǒng)。

2.Start Byte

微控制器連接I2C總線上,如果微控制器上有片上硬件I2C接口,那么這個(gè)控制器可以被編程為“只能被總線的請(qǐng)求中斷”。而當(dāng)微控制器沒有這樣的接口時(shí),它必須不斷地通過軟件監(jiān)控總線。顯然,微控制器監(jiān)控或輪詢總線的次數(shù)越多,它執(zhí)行預(yù)期功能所需要的時(shí)間越短。然后,這種情況下,由于微控制器對(duì)總線的監(jiān)控和輪詢,數(shù)據(jù)傳輸之前就要使用一個(gè)比正常情況要長得多start啟動(dòng)。

啟動(dòng)過程:啟動(dòng)條件(S)+ 啟動(dòng)字節(jié)(0000 0001,Start Byte的地址)+ 確認(rèn)時(shí)鐘脈沖(ACK)+ 重復(fù)開始條件(Sr)

3.Bus clear

在概率極低地情況中,時(shí)鐘SCL會(huì)一直卡在低電平,那么就要對(duì)總線進(jìn)行復(fù)位。

  • 如果I2C設(shè)備有硬件復(fù)位輸入,優(yōu)先考慮使用這個(gè);
  • 如果沒有,則激活強(qiáng)制的內(nèi)部通電復(fù)位(POR)電路;此時(shí)主設(shè)備應(yīng)該發(fā)送9個(gè)時(shí)鐘脈沖,控制總線拉低的設(shè)備要在這個(gè)9個(gè)時(shí)鐘內(nèi)釋放總線。

總結(jié)

以上是生活随笔為你收集整理的I2C中的10bit地址读写的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。