0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

IIC協(xié)議長文詳解-解惑版

云深之無跡 ? 來源:云深之無跡 ? 2023-12-10 14:51 ? 次閱讀

嵌入式的世界里面有幾個經(jīng)典的協(xié)議:IIC,SPI,UART,CAN,1-WIRE,這些協(xié)議都是低速的,而且而是必須要掌握的內(nèi)容,經(jīng)常在使用和面試中出現(xiàn)。

現(xiàn)在應(yīng)該是使用不成問題,但是細節(jié)里面的諸多細節(jié)要考慮,而且在每次使用的時候在看時序圖時仍有若干疑惑的地方,協(xié)議除了傳感器MCU之間的通訊,其本身也可以傳輸數(shù)據(jù),最終想實現(xiàn)的效果是可以在兩個MCU之間使用協(xié)議來傳輸自己的數(shù)據(jù)包。ElectronBot-數(shù)字舵機篇,就好像這篇文章里面寫的一樣,自己封裝,自己定義。這樣的優(yōu)點就是若干個MCU可以組合在一起,真正的形成一種MCU傳感器網(wǎng)絡(luò)。當(dāng)然看起來很美好,但是可能實現(xiàn)起來由于各種原因可能會鴿。

但是無傷大雅,一些疑惑是肯定要解的。

51單片機模擬IIC以及引腳模式

佳能 EF 鏡頭 SPI詳細協(xié)議

MCP3421-18bit ADC 調(diào)試,不過這個ADC寫的是真不錯

Seeed-XIAO-ESP32-C3-ADS1115測試

ADS1115-16Bit ADC 調(diào)試.上

Ti.ADS1115-15Bit差分ADC,TI的ADC也是補足了一些疑惑

這也是是之前寫的,感覺還是有點不求甚解了。

本來也想上示波器的,但是在家里面沒帶。

這次呢會使用一個ST家的傳感器(原因是便宜易得):

VL53L0X集成了領(lǐng)先的SPAD陣列(單光子雪崩二極管),并內(nèi)嵌意法半導(dǎo)體第二代FlightSense專利技術(shù)。 VL53L0X的940 nm VCSEL發(fā)射器(垂直腔面發(fā)射激光器)完全不為人眼所見,加上內(nèi)置的物理紅外濾光片,使其測距距離更長,對環(huán)境光的免疫性更強,對蓋片的光學(xué)串?dāng)_表現(xiàn)出更好的穩(wěn)定性。

70a1c0cc-971f-11ee-8b88-92fbcf53809c.png

NXP現(xiàn)在是IIC的協(xié)議的標(biāo)準(zhǔn)文檔

70bfc478-971f-11ee-8b88-92fbcf53809c.png

而且各家呢,因為想變得有差異性,也會起一些自己的名字,但是大體上是換湯不換藥的。就是IIC這個名字和SDA,SCL上面有改動。

70d99510-971f-11ee-8b88-92fbcf53809c.png

這個是一個傳感器的拓撲圖

以前問,IIC到底是幾根線,其實應(yīng)該是一個2線的協(xié)議,這里就不加電源和中斷線了。

SDA 和 SCL 都是雙向線路都通過一個電流源或上拉電阻連接到正的電源電壓,當(dāng)總線空閑時這兩條線路都是高電平連接到總線的器件輸出級必須是漏極開路或集電極開路才能執(zhí)行線與的功能。

I2C 總線上數(shù)據(jù)的傳輸速率在標(biāo)準(zhǔn)模式下可達 100kbit/s 在快速模式下可達 400kbit/s 在高速模式下可達4Mbit/s 連接到總線的接口數(shù)量只由總線電容是 400pF 的限制決定。

下面的這個圖就是全文最精華的圖,數(shù)據(jù)究竟是什么時候傳的?

70efc83a-971f-11ee-8b88-92fbcf53809c.png

看綠色的框,永遠都是時鐘小于數(shù)據(jù)

數(shù)據(jù)的有效性在時鐘的HIGH時段,SDA線上的數(shù)據(jù)必須是穩(wěn)定的。

70fd6030-971f-11ee-8b88-92fbcf53809c.png

只有當(dāng)SCL線上的時鐘信號為LOW時,數(shù)據(jù)線的HIGH或LOW狀態(tài)才能改變(見圖上)。每傳輸一個數(shù)據(jù)位產(chǎn)生一個時鐘脈沖。

也就是另一個疑惑,時序圖里面這個互相交叉的線是什么意思,它在數(shù)據(jù)傳輸上的意思是,這個地方,進行了高低電平的變換,1是高,0是低,在時序上的意思是,在時鐘信號為LOW時,數(shù)據(jù)可以進行變化。

710b1b1c-971f-11ee-8b88-92fbcf53809c.png

這個是MCP3421的時序圖

可以看到交叉是時鐘的LOW,在數(shù)據(jù)上的意思是,處于data和ACK的位置,自然是有不同的狀態(tài)。

我再換個說法重復(fù)一次上面的內(nèi)容:

I2C總線進行數(shù)據(jù)傳送時,在SCL的每個時鐘脈沖期間傳輸一個數(shù)據(jù)位,時鐘信號SCL為高電平期間,數(shù)據(jù)線SDA上的數(shù)據(jù)必須保持穩(wěn)定,只有在時鐘線SCL上的信號為低電平期間,數(shù)據(jù)線SDA上的高電平或低電平狀態(tài)才允許變化,因為當(dāng)SCL是高電平時,數(shù)據(jù)線SDA的變化被規(guī)定為控制命令(START或STOP,也就是前面的起始信號和停止信號)。

7125c44e-971f-11ee-8b88-92fbcf53809c.png

數(shù)據(jù)有效傳輸在scl信號的高電平期間,sda數(shù)據(jù)線保持穩(wěn)定,在scl為低電平時允許sda數(shù)據(jù)線變化。

數(shù)據(jù)傳輸必須帶響應(yīng),相關(guān)的響應(yīng)SCL時鐘脈沖由主機產(chǎn)生,在響應(yīng)的時鐘脈沖期間,發(fā)送器釋放 SDA 線(輸出高阻態(tài)使SDA線被上拉電阻拉高)。在響應(yīng)的時鐘脈沖期間,接收器必須將 SDA 線拉低,使它在這個時鐘脈沖的高電平期間保持穩(wěn)定的低電平。必須考慮建立和保持時間。

我覺得是應(yīng)該是講明白了,以前這就是個疑惑沒有人告訴我。

接下來就是開始和停止:

71337008-971f-11ee-8b88-92fbcf53809c.png

啟動和停止條件所有事務(wù)都以START (S)開始,并以STOP (P)終止(參見圖上)。SDA線上的HIGH到LOW轉(zhuǎn)換(SCL為HIGH)定義了START條件。

SCL為HIGH時,SDA線上的LOW到HIGH轉(zhuǎn)換定義了一個停止條件。

這里的細節(jié)我覺得知道這些就可以了,在SDA拉低以后,這個通訊資源就相當(dāng)于是獨占了。

下面說傳輸?shù)臄?shù)據(jù)格式:

71647e32-971f-11ee-8b88-92fbcf53809c.png

717ad52e-971f-11ee-8b88-92fbcf53809c.png

這里也給一個中文的翻譯

byte組織:SDA上的數(shù)據(jù)傳輸是以8bit即一個字節(jié)為單位傳輸?shù)?,每一次傳輸?shù)淖止?jié)數(shù)沒有限制,每傳輸完一個字節(jié)后必須跟隨一個應(yīng)答位。 以01001001(0X49)為例,其時序圖如下:

719d14b8-971f-11ee-8b88-92fbcf53809c.png

放在SDA線路上的每個字節(jié)必須是8位長。每次傳輸可以傳輸?shù)淖止?jié)數(shù)不受限制。每個字節(jié)后面必須跟一個確認位。數(shù)據(jù)首先以最高有效位(MSB)傳輸。

如果目標(biāo)不能接收或傳輸另一個完整的數(shù)據(jù)字節(jié),直到它執(zhí)行了一些其他功能,例如服務(wù)內(nèi)部中斷,它可以保持時鐘線SCL LOW以迫使控制器進入等待狀態(tài)。然后,當(dāng)目標(biāo)準(zhǔn)備好接收另一個字節(jié)數(shù)據(jù)并釋放時鐘線SCL時,數(shù)據(jù)傳輸繼續(xù)進行。

看懂了嗎?這就是一次傳多個字節(jié)的奧秘,在時鐘線上,拉低向MCU說還沒有搞完,在準(zhǔn)備了,好了以后就把線拉高,開始。

說說ACK,NACK信號:

確認發(fā)生在每個字節(jié)之后。確認位允許接收方通知發(fā)送方該字節(jié)已成功接收,并且可以發(fā)送另一個字節(jié)??刂破鳟a(chǎn)生所有時鐘脈沖,包括確認第九時鐘脈沖。

確認信號的定義如下:在確認時鐘脈沖期間,發(fā)射機釋放SDA線,因此接收器可以將SDA線拉低,并在該時鐘脈沖的高電平期間保持穩(wěn)定低電平。

71ad3776-971f-11ee-8b88-92fbcf53809c.png

就是這個圖

設(shè)置和保持時間也必須考慮在內(nèi)。當(dāng)SDA在第9個時鐘脈沖期間保持高電平時,這被定義為不確認信號。

然后控制器可以生成一個STOP條件來中止傳輸,或者一個重復(fù)的START條件來開始新的傳輸。

也就是說這個ack信號會影響之后的數(shù)據(jù)傳輸,也好理解,都沒有收到之后的發(fā)送都是無用功,就不發(fā)了??梢灾匦掳l(fā),也可以停掉。

有五個條件會導(dǎo)致NACK的產(chǎn)生:

1. 總線上不存在具有傳輸?shù)刂返慕邮掌?,因此沒有設(shè)備響應(yīng)確認。

2. 接收器無法接收或發(fā)送,因為它正在執(zhí)行一些實時功能,還沒有準(zhǔn)備好開始與控制器通信。

3. 在傳輸過程中,接收方接收到它不理解的數(shù)據(jù)或命令。

4. 在傳輸過程中,接收方不能再接收任何數(shù)據(jù)字節(jié)。

5. 控制器-接收器必須向目標(biāo)發(fā)送器發(fā)出傳輸結(jié)束的信號。

下面說時鐘:

時鐘同步兩個控制器可以同時在空閑總線上開始傳輸,并且必須有一種方法來決定哪一個控制總線并完成傳輸。這是通過時鐘同步和仲裁完成的。

在單控制器系統(tǒng)中,不需要時鐘同步和仲裁。時鐘同步是使用I2C接口到SCL線的有線與連接來執(zhí)行的。

71c99e02-971f-11ee-8b88-92fbcf53809c.png

這意味著SCL線上的HIGH到LOW轉(zhuǎn)換導(dǎo)致相關(guān)控制器開始計數(shù)其LOW周期,一旦控制器時鐘已變?yōu)長OW,它將SCL線保持在該狀態(tài),直到時鐘達到HIGH狀態(tài)(見圖上)。

然而,如果另一個時鐘仍在其LOW周期內(nèi),則該時鐘的LOW到HIGH轉(zhuǎn)換可能不會改變SCL線的狀態(tài)。因此,SCL線由具有最長低電平周期的控制器保持低電平。低周期較短的控制器在此期間進入高等待狀態(tài)。

這個是我沒有看到過的東西,就是兩個時鐘信號對協(xié)議信號的影響,不過就記住我上面的黑色部分就好。

當(dāng)所有相關(guān)的控制器都計算出它們的LOW周期時,時鐘線被釋放并變?yōu)镠IGH。然后,控制器時鐘和SCL線的狀態(tài)之間沒有區(qū)別,并且所有控制器開始計數(shù)它們的HIGH周期。第一個完成其HIGH周期的控制器再次將SCL線拉至LOW。這樣,就會生成一個同步的SCL時鐘,其LOW周期由時鐘LOW周期最長的控制器決定,HIGH周期由時鐘HIGH周期最短的控制器決定。

一個IIC的信號周期的長短由兩個MCU時鐘信號來決定。

這里的多傳感器數(shù)據(jù)沖突我就不講了,目前好像還沒有用到。

接下來說數(shù)據(jù)傳輸,和上面有點一樣:

71d62046-971f-11ee-8b88-92fbcf53809c.png

數(shù)據(jù)傳輸遵循圖上所示的格式,第二個字節(jié)有看頭

71ec1df6-971f-11ee-8b88-92fbcf53809c.png

這個是MSB先行

在START條件(S)之后,發(fā)送一個目標(biāo)地址。這個地址有7位長,后面跟著第8位數(shù)據(jù)方向位(R/W)——“0”表示傳輸(WRITE),“1”表示數(shù)據(jù)請求(READ)

由控制器產(chǎn)生的停止條件(P)。但是,如果控制器仍然希望在總線上進行通信,它可以生成重復(fù)的START條件(Sr),并在不首先生成STOP條件的情況下處理另一個目標(biāo)。在這樣的傳輸中,讀/寫格式的各種組合是可能的。

接了個電話,思路都沒有了,撲街。。。

可能的數(shù)據(jù)傳輸格式有:

a,其實是A上面有一個橫杠,就是不響應(yīng)的意思,下面丟失了。產(chǎn)生這個信號以后,主機發(fā)出了停止信號。

71f9bb96-971f-11ee-8b88-92fbcf53809c.png

控制器-發(fā)射機發(fā)送到目標(biāo)-接收機。傳輸方向沒有改變。目標(biāo)接收方確認每個字節(jié)。

叨叨兩句吧,就是主機一直發(fā)數(shù)據(jù),傳感器就應(yīng)答收到了,像極了被罵的的我,是是是,對對對。

72154dfc-971f-11ee-8b88-92fbcf53809c.png

控制器在第一個字節(jié)之后立即讀取目標(biāo)。在第一次確認的時刻,控制-發(fā)送者成為控制-接收者,目標(biāo)-接收者成為目標(biāo)-發(fā)送者。這個第一個確認仍然由目標(biāo)生成??刂破魃珊罄m(xù)確認。STOP條件由控制器生成,控制器在STOP條件之前發(fā)送一個不確認(a)。

這個呢就是讀取傳感器的值,瘋狂的拿,必要時候會說,拿到了。

72319016-971f-11ee-8b88-92fbcf53809c.png

組合格式。在傳輸過程中改變方向時,START條件和目標(biāo)地址都是重復(fù)的,但是R/W位顛倒了。如果控制器-接收器發(fā)送一個重復(fù)的START條件,它在重復(fù)的START條件之前發(fā)送一個nottacknowledge (a)。

復(fù)合格式:傳輸改變方向的時侯,起始條件和從機地址都會被重復(fù) 但 R/ W 位取反,如果主機接收器發(fā)送一個重復(fù)起始條件,它之前應(yīng)該發(fā)送了一個不響應(yīng)信號 A。相當(dāng)于是沒搭理,信號斷了,傳感器主動的找MCU。復(fù)合格式可以用于例如控制一個串行存儲器在第一個數(shù)據(jù)字節(jié)期間 要寫內(nèi)部存儲器的位置在重復(fù)起始條件和從機地址后數(shù)據(jù)可被傳輸。

注:1. 例如,可以使用組合格式來控制串行存儲器。必須在寫入第一個數(shù)據(jù)字節(jié)期間寫入內(nèi)部存儲器位置。重復(fù)START條件和目標(biāo)地址后,即可傳輸數(shù)據(jù)。

2. 所有關(guān)于先前訪問的內(nèi)存位置的自動遞增或遞減的決定,等等,都是由設(shè)備的設(shè)計者做出的。

3. 每個字節(jié)后面跟著一個確認位,由序列中的A或A塊表示。

4. pc總線兼容設(shè)備必須在接收到START或重復(fù)START條件時重置其總線邏輯,以便它們都預(yù)期目標(biāo)的發(fā)送地址,即使這些START條件沒有按照正確的格式定位。

5. START條件緊跟著STOP條件(無效消息)是一種非法格式。然而,許多設(shè)備被設(shè)計為在這種條件下正常運行。

6. 連接到總線的每個設(shè)備都可以通過唯一的地址尋址。通常存在一個簡單的控制器/目標(biāo)關(guān)系,但也可能有多個相同的目標(biāo)可以同時接收和響應(yīng),例如在組廣播中。

說說尋址:I2C總線的尋址過程是通常在起始條件后的第一個字節(jié)決定了主機選擇哪一個從機例外的情況是可以尋址所有器件的廣播呼叫地址使用這個地址時 理論上所有器件都會發(fā)出一個響應(yīng)但是也可以使器件忽略這個地址廣播呼叫地址的第二個字節(jié)定義了要采取的行動。

總有人不回答,媽的。

從機地址由一個固定和一個可編程的部分構(gòu)成由于很可能在一個系統(tǒng)中有幾個同樣的器件從機地址的可編程部分使最大數(shù)量的這些器件可以連接到I2C總線上器件可編程地址位的數(shù)量由它可使用的管腳決定

例如:如果器件有 4 個固定的和 3 個可編程的地址位那么相同的總線上共可以連接8個相同的器件。

724f4a66-971f-11ee-8b88-92fbcf53809c.png

原來這些都是找過飛利浦買的

725ffe74-971f-11ee-8b88-92fbcf53809c.png

總結(jié)了I2C總線系統(tǒng)特性的規(guī)范要求,包括了強制和可選部分 Table 2 i2c總線協(xié)議特性的要求 M = 強制; O = 可選; n/a = 不適用

聽累沒有?估計沒有幾個看到這里的。

726fb670-971f-11ee-8b88-92fbcf53809c.png

來看一個真實的協(xié)議信號

IIC的輸入輸出結(jié)構(gòu)采用的是開漏的結(jié)構(gòu)。開漏結(jié)構(gòu)不能夠自主得到高電平,所以需要通過外部上拉電阻Rp來的實現(xiàn)IIC通信過程中的高電平。Rp的大小取決于IIC不同模式時的灌電流大小。 下面兩個圖是描述IIC獲得高低電平的情景。因為一條IIC總線上面可能會同時連接上多個設(shè)備,如果IIC使用的是推挽輸出的話容易引起短路。 IIC設(shè)備可以通過控制N-MOS管的開關(guān)來控制輸出信號的電平高低。當(dāng)MOS管G極為低電平時MOS管截止IIC總線上面由于有上拉電阻的存在而為高電平;當(dāng)MOS管G極為高電平時MOS管導(dǎo)通,IIC總線相當(dāng)于直接接地為低電平。 IIC的輸入是通過TTL肖特基觸發(fā)器將數(shù)據(jù)傳輸?shù)捷斎霐?shù)據(jù)寄存器當(dāng)中,再提供給處理器處理。

728c6b12-971f-11ee-8b88-92fbcf53809c.png

729beac4-971f-11ee-8b88-92fbcf53809c.png

72ba3c40-971f-11ee-8b88-92fbcf53809c.png

由于種類的設(shè)備都有可能連接到IIC總線上面,比如說CMOS、NMOS等,所以IIC的高電平和低電平的標(biāo)準(zhǔn)是不一定的。高電平和低電平的值分別為0.7VDD和0.3VDD。

IIC的總線連接可以接受多主機的模式,也就是說一條IIC總線上面可以有多個設(shè)備可以作為主機來使用,但是在一次數(shù)據(jù)的傳輸過程中只能有一個設(shè)備作為主機。一條IIC總線上面誰是主機取決于總線上面的時鐘和數(shù)據(jù)信號由誰控制。

如果兩個MCU同時發(fā)起開始信號時(都試圖成為主機),這時候IIC的仲裁機制會發(fā)揮作用來判定誰成為主機。

72c8bbb2-971f-11ee-8b88-92fbcf53809c.png

IIC的仲裁機制得益于其開漏的輸入輸出結(jié)構(gòu)。例如如圖所示,當(dāng)SCL線上掛載的多個設(shè)備,其中的MCU2的SCL輸出低電平,那么這條IIC總線SCL就會被MCU2拉低,這也就是“與”的特性。 IIC上的仲裁主要是由兩部分組成SCL時鐘同步、SDA線仲裁。

72e3d6cc-971f-11ee-8b88-92fbcf53809c.png

如圖所示CLK1和CLK2都是連接在一條SCL線上的設(shè)備同時產(chǎn)生的時鐘信號,由于IIC總線存在“與”的特性,所以兩個設(shè)備高電平相同的部分形成了SCL最終的時鐘,也就是說同一條IIC總線上面的時鐘都是相同的。

那突然就理解了上面文章里面的時鐘是什么意思。

72f86cea-971f-11ee-8b88-92fbcf53809c.png

同樣SDA仲裁也是基于“與”的特性。如圖所示當(dāng)兩個設(shè)備同時發(fā)出開始信號想要傳送數(shù)據(jù)時,在第一個和第二個周期內(nèi)DATA1和DATA2的數(shù)據(jù)都是相同的,然后兩者繼續(xù)傳送數(shù)據(jù),當(dāng)在第三個時鐘周期時DATA2與SDA的數(shù)據(jù)不一致,這個時候設(shè)備2就會停止發(fā)送數(shù)據(jù),轉(zhuǎn)而啟動接收模式。這樣SDA的數(shù)據(jù)就會與DATA1的數(shù)據(jù)保持一致,并且設(shè)備2停止發(fā)送數(shù)據(jù)也不會影響SDA的數(shù)據(jù)。

730e127a-971f-11ee-8b88-92fbcf53809c.png

所示是示波器采集的IIC信號,得到這一段IIC包含的信息,主機向地址為0XA0 的設(shè)備寫入0X0C。

感謝夢源得文章,通了這次。

OKOK,看傳感器吧,不想寫了。

7327da70-971f-11ee-8b88-92fbcf53809c.png

最大是400kHz

7332f216-971f-11ee-8b88-92fbcf53809c.png

有中斷腳

7357b57e-971f-11ee-8b88-92fbcf53809c.png

XSHUT是可以控制功耗的引腳

上電和啟動順序有兩個選項可用于設(shè)備上電/啟動。

選項1:XSHUT引腳連接并從主機控制。此選項有助于優(yōu)化功耗,因為VL53LOX可以在不使用時完全斷電,然后通過主機GPIO(使用XSHUT引腳)喚醒。

73665958-971f-11ee-8b88-92fbcf53809c.png

HW待機模式定義為AVDD存在且XSHUT處于低電平的時間段。

737a729e-971f-11ee-8b88-92fbcf53809c.png

選項2:XSHUT引腳不受主機控制,通過上拉電阻連接到AVDD。如果XSHUT引腳不受控制,則上電順序如圖所示。在這種情況下,設(shè)備在FW啟動后自動進入SW STANDBY,不進入HW STANDBY。

SW是待機時刻。

7387c516-971f-11ee-8b88-92fbcf53809c.png

也是IIC的接口,看時序圖吧,應(yīng)該很好懂了

信息被封裝在8位數(shù)據(jù)包(字節(jié))中,后面總是跟著一個確認位,Ac表示VL53LOX確認,Am表示主確認(主機總線主)。

內(nèi)部數(shù)據(jù)是在SCL上升沿采樣SDA產(chǎn)生的。在SCL的高峰期,外部數(shù)據(jù)必須是穩(wěn)定的。

例外情況是SDA下降或上升時的啟動(S)或停止(P)條件,而SCL較高。消息包含一系列字節(jié),前面是開始條件,后面是停止或重復(fù)開始(另一個開始條件,但沒有前面的停止條件),然后是另一個消息。第一個字節(jié)包含設(shè)備地址(Ox52),還指定了數(shù)據(jù)方向。如果最低有效位很低(即Ox52),則消息是主向從機寫。如果設(shè)置了Isb(即Ox53),則消息是從從機讀取的主消息。

7398cca8-971f-11ee-8b88-92fbcf53809c.png

地址,MSB先行

73af0bc6-971f-11ee-8b88-92fbcf53809c.png

寫,Ac是傳感器收到

當(dāng)數(shù)據(jù)被從機接收時,它被一點一點地寫入串行/并行寄存器。從服務(wù)器接收到每個數(shù)據(jù)字節(jié)后,將生成一個確認,然后將數(shù)據(jù)存儲在當(dāng)前索引尋址的內(nèi)部寄存器中。

在讀取消息期間,當(dāng)前索引所尋址的寄存器的內(nèi)容在設(shè)備地址字節(jié)后面的字節(jié)中讀出。該寄存器的內(nèi)容被并行加載到串行/并行寄存器中,并通過SCL的下降沿從設(shè)備中進行時鐘輸出。

73c5e71a-971f-11ee-8b88-92fbcf53809c.png

在每個字節(jié)的末尾,在讀和寫消息序列中,接收設(shè)備(即,用于寫的VL53LOX和用于讀的主機)發(fā)出確認。

消息只能由總線主機在讀取操作期間讀取完整字節(jié)后,通過發(fā)出停止條件或通過負確認(即不將SDA線拉低)來終止。

該接口還支持自動增量索引。傳輸完第一個數(shù)據(jù)字節(jié)后,索引自動加1。因此,主服務(wù)器可以連續(xù)地向從服務(wù)器發(fā)送數(shù)據(jù)字節(jié),直到從服務(wù)器無法提供確認或者主服務(wù)器以停止條件終止寫通信。如果使用了自動增量特性,主機就不必發(fā)送地址索引來伴隨數(shù)據(jù)字節(jié)。

73cfed82-971f-11ee-8b88-92fbcf53809c.png

順序?qū)懭?/p>

73dc4f0a-971f-11ee-8b88-92fbcf53809c.png

順序讀

73f616d8-971f-11ee-8b88-92fbcf53809c.png

7402c298-971f-11ee-8b88-92fbcf53809c.png

32bit寄存器實列

這個是比較奇怪的,API的文檔不在數(shù)據(jù)手冊里面。

740d3afc-971f-11ee-8b88-92fbcf53809c.png

寫不動了。。。太多了。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 總線
    +關(guān)注

    關(guān)注

    10

    文章

    2851

    瀏覽量

    87843
  • I2C
    I2C
    +關(guān)注

    關(guān)注

    28

    文章

    1468

    瀏覽量

    122791
  • IIC協(xié)議
    +關(guān)注

    關(guān)注

    0

    文章

    16

    瀏覽量

    3918

原文標(biāo)題:IIC協(xié)議長文詳解-解惑版

文章出處:【微信號:TT1827652464,微信公眾號:云深之無跡】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    FPGA實現(xiàn)IIC協(xié)議的設(shè)計

    今天給大家?guī)淼氖?b class='flag-5'>IIC通信,IIC協(xié)議應(yīng)用非常廣泛,例如與MPU6050進行通信,配置OV5640攝像頭、驅(qū)動OLED屏幕等等,都需要使用到IIC
    的頭像 發(fā)表于 03-04 10:49 ?1122次閱讀
    FPGA實現(xiàn)<b class='flag-5'>IIC</b><b class='flag-5'>協(xié)議</b>的設(shè)計

    IIC總線的特點及讀寫過程

    IIC總線的特點IIC總線協(xié)議詳解IIC總線的讀寫過程
    發(fā)表于 01-04 07:30

    詳解IIC協(xié)議

    IIC是什么?怎樣去計算IIC的頻率呢?
    發(fā)表于 10-18 08:54

    STM32的IIC協(xié)議簡介

    文章目錄(一)IIC協(xié)議簡介(二)物理層和協(xié)議層簡介(三)IIC物理層:3.1、物理層的特點(四)IIC
    發(fā)表于 01-05 06:13

    IIC通信協(xié)議的相關(guān)資料推薦

    IIC通信協(xié)議詳解IIC的概述IIC分為軟件IIC和硬件IICIIC通信
    發(fā)表于 01-20 07:06

    如何使用代碼實現(xiàn)的IIC協(xié)議

    1. 綜述  由上篇博客可知道IIC協(xié)議如何用代碼實現(xiàn),本篇博客就不涉及協(xié)議內(nèi)容,只講解如何使用?! ”敬蔚膶嶒瀭鞲袨椋篋S3231(時鐘模塊),對于時鐘模塊的具體信息我也就不多介紹,大家可以自行度
    發(fā)表于 02-21 06:36

    IIC總線協(xié)議

    IIC總線協(xié)議,感興趣的小伙伴們可以看看。
    發(fā)表于 07-26 16:29 ?58次下載

    IIC總線協(xié)議中文版

    IIC協(xié)議的介紹,中文版,易懂,可以在里面了解到IIC是何物,如何使用以及定義
    發(fā)表于 08-09 15:08 ?0次下載

    嵌入式工程師詳解常用的IIC和SPI總線協(xié)議概念

    )的身影。原因是這兩種通信協(xié)議非常適合近距離低速芯片間通信。Philips(for IIC)和Motorola(for SPI) 出于不同背景和市場需求制定了這兩種標(biāo)準(zhǔn)通信協(xié)議。 IIC
    發(fā)表于 12-22 20:15 ?1433次閱讀
    嵌入式工程師<b class='flag-5'>詳解</b>常用的<b class='flag-5'>IIC</b>和SPI總線<b class='flag-5'>協(xié)議</b>概念

    長文詳解嵌入式Linux系統(tǒng)移植資料下載

    電子發(fā)燒友網(wǎng)為你提供長文詳解嵌入式Linux系統(tǒng)移植資料下載的電子資料下載,更有其他相關(guān)的電路圖、源代碼、課件教程、中文資料、英文資料、參考設(shè)計、用戶指南、解決方案等資料,希望可以幫助到廣大的電子工程師們。
    發(fā)表于 03-31 08:41 ?7次下載
    <b class='flag-5'>長文</b><b class='flag-5'>詳解</b>嵌入式Linux系統(tǒng)移植資料下載

    IIC協(xié)議超詳細解釋(適合小白入門)

    以下內(nèi)容,將解釋以下幾個問題1.IIC協(xié)議是什么?2.IIC協(xié)議用來干什么?3.IIC協(xié)議的通信
    發(fā)表于 12-07 14:21 ?5次下載
    <b class='flag-5'>IIC</b><b class='flag-5'>協(xié)議</b>超詳細解釋(適合小白入門)

    振弦采集模塊的通訊協(xié)議IIC

    振弦采集模塊的通訊協(xié)議IICIIC 通訊協(xié)議本身即是基于設(shè)備地址和寄存器的物理層通訊協(xié)議, VMXXX 使用
    的頭像 發(fā)表于 11-17 10:02 ?783次閱讀
    振弦采集模塊的通訊<b class='flag-5'>協(xié)議</b>( <b class='flag-5'>IIC</b>)

    IIC通訊協(xié)議的電路設(shè)計

    前面我們概述過一些常見的通訊協(xié)議,本文著重講講關(guān)于IIC協(xié)議
    的頭像 發(fā)表于 04-19 11:00 ?1903次閱讀
    <b class='flag-5'>IIC</b>通訊<b class='flag-5'>協(xié)議</b>的電路設(shè)計

    STM32的IIC通信原理詳解

    本文將介紹STM32 IIC的通信原理和協(xié)議。
    的頭像 發(fā)表于 04-25 09:51 ?4142次閱讀
    STM32的<b class='flag-5'>IIC</b>通信原理<b class='flag-5'>詳解</b>

    詳解物聯(lián)網(wǎng)常用協(xié)議IIC和RS485通信協(xié)議

    科技常用的兩種通信協(xié)議——IIC和RS485。IIC通信協(xié)議是一種半雙工通信協(xié)議,雙總線串行,主要用在主機和從機對于數(shù)據(jù)量較少且傳輸距離較短
    的頭像 發(fā)表于 03-02 17:12 ?1351次閱讀
    <b class='flag-5'>詳解</b>物聯(lián)網(wǎng)常用<b class='flag-5'>協(xié)議</b>:<b class='flag-5'>IIC</b>和RS485通信<b class='flag-5'>協(xié)議</b>