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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

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圮時(shí)曲('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屏驅(qū)動(dòng),TypePicture- I . iIM 1

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

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

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

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

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

11、011110000 00000000 0; 即: 0111100(7位OLED設(shè)備地址)+ 0( 讀寫為,0為寫,1為讀)+0 (ACK回應(yīng))+00000000 (寄存器 reg)+ (0xAE OLED off 命令);(這里還有一點(diǎn)我還沒弄明白就是reg后沒有回應(yīng),還望大家不吝賜教)F面當(dāng)我來隨便發(fā)送一個(gè)地址時(shí),比如當(dāng)我發(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 (設(shè)備地址)+0 (讀 寫位)+1 (NACK5應(yīng)答),由于沒有相應(yīng)的I2C設(shè)備因此無應(yīng)答ACK 信號(hào),于是就停止傳輸;三、總結(jié) 由以上可知,可以通過查看I2C總線數(shù)據(jù)來確認(rèn)跟蹤I2C設(shè)備,已更 好地確定是軟件問題還是硬件問題;I2C的概念原理網(wǎng)上都有就不說了,這里只把我把兩個(gè)開發(fā)板通過I2C通訊的調(diào)試經(jīng)驗(yàn)記錄分享一下。I2C要求要有一個(gè)主設(shè)備,負(fù)責(zé)發(fā)起請(qǐng)求和控制時(shí)鐘;其它為從設(shè)備,通過設(shè)備ID地址來識(shí)別并響應(yīng)主設(shè)備請(qǐng)求。主從設(shè)備要輪流控制SDA開始我沒搞明白這一點(diǎn),直接加了寫I2C數(shù)據(jù)代碼,然后用示波器 在SDA和SCL腳測量,卻只能找到些凌亂的

13、波形,沒有預(yù)期的效果。后來把從設(shè)備接上,兩邊寫好代碼,互相有了響應(yīng),這才在示波器上 看到波形。這里我找了一個(gè)主設(shè)備往從設(shè)備寫數(shù)據(jù)的例子,代碼如下:char buf128;int len;Strep y(buf,".huz_hello_i2c/n");len二 strle n( buf);o-SSglent *1.迂訂玳:卜:;" rti 'iro 回應(yīng)*肢據(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時(shí);: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號(hào)的ASCII碼,符合預(yù)期輸出;2.還有其它數(shù)據(jù)和最后的停止位,圖中被截掉了。從圖中可知,縱向一格是200mV則SDA和SCL的電平大概就是350mV 由于信號(hào)筆上設(shè)置了信號(hào)x10,因此實(shí)際

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論