怎么分析I2C波形(2)_第1頁
怎么分析I2C波形(2)_第2頁
怎么分析I2C波形(2)_第3頁
怎么分析I2C波形(2)_第4頁
怎么分析I2C波形(2)_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、i2c specI I 打C3E master to slave匚 from alsvB' to masterSlave ADDRESSADATAWASri Slave addressRWAATApAl PIr fcytes(n bytes*act.freac or write read or write * 孔丄not ahad&cl because Transr Ei厝ction 少 data and ackrledge bi僅 depends on R.<W bits.蠱r = repeated START conditiondirection of trana&#

2、39;cr ffliay Charge a: this point.niJcSC?sSLAVE ADDRESSAataAdataA/APti3.t3 trapsferred(write)in bs + ackflOhtedgeJA = acknowledge (SDA LOW|S = rci 曲knew edge (宮DA HiOmJS = STAfT coTKjitiOTP* STOP conditionirbcS:fig 11. A master-transmitter addressing: a slave receiver with a 7-bit address (the t陽nsf

3、er direction is not changed)sSlave ADDRESS I fwADATAADATA SiP'aa圮時曲('H bytes + ackncw'edgej m&ceoeFig 12* A master reads a slave immediately after the first byteFig 13. Combinedl formatThe Ack no wledge sig nalis defi nedas follows:thetran smitter ?releases the SDA line (Wei: p ut SD

4、A at 1 state) duri ng the ack no wledge clock pu Ise so the receiver can p ull theSDA line LOW and it?remains stableLOW during the HIGH period of this clock pulse ?(Wei: if the high of clock is hold on, SDA is kept atLOW! ) (see Figure 4). Set-up and?hold times (sp ecified in Secti on 6) must also b

5、e take n into acco unt.Whe n SDA remai ns HIGH duri ng this nin th clock pu Ise, this is defined as the Not?Ack no wledge sig nal.我的波形:80C51, NAK波形。Whe n SDA remai ns HIGH duri ng this nin th clock pu Ise, this is defined as the Not?Ack no wledge sig nal.chg 2aemti最新在開發(fā)OLED屏驅動,TypePicture- I . iIM 1

6、60 jjsCHf<312riUM Posi£.45ins需要用到I2C總線,下面大體上講解一下I2C設備的調(diào)試及波形分析,為大家做一些參考,由于剛涉及這部分內(nèi)容,因此有什么錯誤的,還請賜教、概要I2C總線只需要兩條線,一條SDA數(shù)據(jù)線,一條SCL時鐘線;根據(jù)這兩條線的高低電平、上升沿、下降沿就可以實現(xiàn)主機與I2C設備的通 訊;其中有:(1) I2C總線相關傳輸開始條件:SCL處于高電平,SDA下降沿時;傳輸接收條件:SCL處于高電平,SDA上升沿時;傳輸數(shù)據(jù):開始傳輸后,SCL處于高電平時,SDA的數(shù)據(jù)為所傳輸?shù)?數(shù)據(jù);回應:當傳輸完一個字節(jié)后,I2C設備需要回應一個ACK這

7、樣主機 才繼續(xù)發(fā)送;因此回應信號是在傳輸完8bit后的下一個數(shù)據(jù)位(SDA 值),當SDA為0表示有回應,為1表示沒回應;正常 I2C 總線的數(shù)據(jù)是:Start + I2C devece id + R/W+ ACK+ Data(first byte )+ ACK + . + Data(n) + ACK + Stop(2) I2C設備相關設備地址:有7位和10位兩種,具體見I2C設備芯片的Datasheet, 由于目前用到的是7位,因此下面主要針對7位講述;在講I2C設備 地址是有可能有兩種說法,主要是用8位表示還是用7為表示,比如 對于我的OLED來說,當用8位表示時則為0x78地址,當用7位

8、時則 為0x3c (即0x78右移1為),在驅動中用0x78還是用0x3c要看具 體平臺的I2C總線驅動,我在 AMLOGI平臺上用的是0x78,而在MV平臺上用的是0x3c; 寄存器reg : 一般的I2C設備芯片都有帶reg,一般在傳輸正式的數(shù) 據(jù)之前需要先傳輸reg地址,比如我的OLED來說,在傳控制命令時 需要先發(fā)送0x00的reg地址,在傳輸數(shù)據(jù)時需要發(fā)送0x40的reg地 址;二、調(diào)試及波形分析般當我們拿到一個I2C設備時,就必須涉及到驅動的編寫,就比如 對于OLED來說,就要用編寫OLE驅動,這樣我們才能控制它,對于OLED屏來說,第一步也是最重要的一步就是點亮它;當我們做完這r

9、H步,那后面剩下的就只是細節(jié)問題了;”萬事開頭難“,這句話真 的不假,對于OLED來說,如何才能點亮,我們該怎么調(diào)試呢?當我 們寫完OLESE動,但OLEC屏還是不亮,可能問題會出現(xiàn)在哪?是硬件問題還是軟件問題?;若為軟件問題,那會是I2C總線驅動問題,還是我們I2C設備驅動有問題?那么我們該如何判斷問題出現(xiàn)位置 呢?這就需要我們對I2C總線上的數(shù)據(jù)進行分析;那么下面我將詳細 講述如何獲取和分析I2C總線上的數(shù)據(jù);(1)示波器對于I2C總線的數(shù)據(jù),我們要用到示波器,這樣我們才能抓取到信號, 而且必須同時采集SDA和SCL的數(shù)據(jù);該如何抓取呢?我這邊的方式是將示波器調(diào)成邊下降沿觸發(fā)模式(因為開始

10、信號是SDA下降沿),并且設置成單次模式(這樣抓取完一次就會stop,便于我們數(shù)據(jù)分析);(2)波形由于我的OLED設備的地址是0x78(8位),而第一次我必須將 OLED設置成of狀態(tài),通過命令表可以查到,必須發(fā)生0xAE,而剛剛有講到在發(fā)送命令前必須先發(fā)送寄存器reg地址,即0x00;于是我發(fā)送的數(shù)據(jù)為0x78+0x00+0xAE下面是我用示波器抓取到的波形:LeCra IHSAVE/REGCHI 500mUCUN 噲 1.00UCH1 >-0.GGmUr L 類型 :-«圉像彳錯存分析(其中黃色的為SDAB號,淺藍色為SCL信號):從上述波形中 我們可以讀取到數(shù)據(jù)依次是:

11、011110000 00000000 0; 即: 0111100(7位OLED設備地址)+ 0( 讀寫為,0為寫,1為讀)+0 (ACK回應)+00000000 (寄存器 reg)+ (0xAE OLED off 命令);(這里還有一點我還沒弄明白就是reg后沒有回應,還望大家不吝賜教)F面當我來隨便發(fā)送一個地址時,比如當我發(fā)送0x56(8位地址),LLjeCrorycsv一出廠謨晝-測到的波形如下:SAVE/KEC呻圏伽諸存 印雪i-K:iiIIWWr+CH1= SeSmLJ CHN= l.SQMO -C 1 SHnCHI sTo.eamUPv1 Pov 土S&.QS i_i V分析

12、:從波形可看出數(shù)據(jù)依次為:0即0101011 (設備地址)+0 (讀 寫位)+1 (NACK5應答),由于沒有相應的I2C設備因此無應答ACK 信號,于是就停止傳輸;三、總結 由以上可知,可以通過查看I2C總線數(shù)據(jù)來確認跟蹤I2C設備,已更 好地確定是軟件問題還是硬件問題;I2C的概念原理網(wǎng)上都有就不說了,這里只把我把兩個開發(fā)板通過I2C通訊的調(diào)試經(jīng)驗記錄分享一下。I2C要求要有一個主設備,負責發(fā)起請求和控制時鐘;其它為從設備,通過設備ID地址來識別并響應主設備請求。主從設備要輪流控制SDA開始我沒搞明白這一點,直接加了寫I2C數(shù)據(jù)代碼,然后用示波器 在SDA和SCL腳測量,卻只能找到些凌亂的

13、波形,沒有預期的效果。后來把從設備接上,兩邊寫好代碼,互相有了響應,這才在示波器上 看到波形。這里我找了一個主設備往從設備寫數(shù)據(jù)的例子,代碼如下:char buf128;int len;Strep y(buf,".huz_hello_i2c/n");len二 strle n( buf);o-SSglent *1.迂訂玳:卜:;" rti 'iro 回應*肢據(jù)-O-ol 血 01110=” '碧宀n.- 劈廠7 .f ,-戶r >_1 nr 4- I;=D*心* _ r y:|< M Ml宀s屮i !f 豈ht n局i- t| I, &#

14、39; iII!IL-.y一用亡5 nbrbcre » : 0i L屛&箏fc煮申I*:IRD-ot燭據(jù)on nil ID回山r -5匚|心T< 7T時;:7丁的iW-I' I:I - illII: 1(傘呻TiTIt 3 布 i/HH- J"沖:第鑑聞I駄騷$忙世D t D t t,« *' ;!rEfCHi 二 20 亦OJ書言彌L 何 25.0p y)w < 1 dHz g''<-_r _-' <匚Hl Z152mV4M Pos:13h0pg號的ASCII碼,符合預期輸出;2.還有其它數(shù)據(jù)和最后的停止位,圖中被截掉了。從圖中可知,縱向一格是200mV則SDA和SCL的電平大概就是350mV 由于信號筆上設置了信號x10,因此實際

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論