I2C總線(xiàn)簡(jiǎn)介(很經(jīng)典)_第1頁(yè)
I2C總線(xiàn)簡(jiǎn)介(很經(jīng)典)_第2頁(yè)
I2C總線(xiàn)簡(jiǎn)介(很經(jīng)典)_第3頁(yè)
I2C總線(xiàn)簡(jiǎn)介(很經(jīng)典)_第4頁(yè)
I2C總線(xiàn)簡(jiǎn)介(很經(jīng)典)_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、i2c總線(xiàn)簡(jiǎn)介(很經(jīng)典)i2c總線(xiàn)簡(jiǎn)介i.概述:l2c 是 inter-integrated circuit 的縮寫(xiě),發(fā)音為eye-squared cee or eye-two-cee” ,它是一種兩線(xiàn)接口。pc只是用兩條雙向的線(xiàn),一條ser ial data line (sda),另一條serial clock (scl) oscl:上升沿將數(shù)據(jù)輸入到每個(gè)eeprom器件中;下降沿驅(qū)動(dòng)eeprom器件輸出數(shù)據(jù)。(邊 沿觸發(fā))sda:雙向數(shù)據(jù)線(xiàn),為0d門(mén),與其它任意數(shù)量的0d與0c門(mén)成”線(xiàn)與“關(guān)系。2.輸出級(jí)sdasda串行時(shí)鐘膈出 -申行數(shù)據(jù)箍出 -串行時(shí)抻 鐳入串行數(shù)據(jù) 摘入c苒線(xiàn)接口內(nèi)都

2、結(jié)構(gòu)每一個(gè)i2c總線(xiàn)器件內(nèi)部的sda、scl引腳電路結(jié)構(gòu)都是一樣的,引腳的輸出驅(qū)動(dòng)與輸 入緩沖連在一起。其中輸出為漏極開(kāi)路的場(chǎng)效應(yīng)管,輸入緩沖為一只高輸入阻抗的同 相器,這種電路具有兩個(gè)特點(diǎn):1)由于sda、scl為漏極開(kāi)路結(jié)構(gòu)(0d),因此它們必須接有上拉電阻,阻值的大小常為 1k8, 4k7 and 10k ,但1k8時(shí)性能最好;當(dāng)總線(xiàn)空閑時(shí),兩根線(xiàn)均為高電平。連到 總線(xiàn)上的任一器件輸出的低電平,都將使總線(xiàn)的信號(hào)變低,即各器件的sda及scl都 是線(xiàn)“與“關(guān)系。2)引腳在輸出信號(hào)的同時(shí)還將引腳上的電平進(jìn)行檢測(cè),檢測(cè)是否與剛才輸出一致,為” 時(shí)鐘同步和“總線(xiàn)仲裁”提供了硬件基礎(chǔ)。3 .主設(shè)備

3、與從設(shè)備系統(tǒng)中的所有外圍器件都具有一個(gè)7位的”從器件專(zhuān)用地址碼”,其中高4位為器件類(lèi) 型,由生產(chǎn)廠(chǎng)家制定,低3位為器件引腳定義地址,由使用者定義。主控器件通過(guò)地 址碼建立多機(jī)通信的機(jī)制,因此12c總線(xiàn)省去了外圍器件的片選線(xiàn),這樣無(wú)論總線(xiàn)上 掛接多少個(gè)器件,其系統(tǒng)仍然為簡(jiǎn)約的二線(xiàn)結(jié)構(gòu)。終端掛載在總線(xiàn)上,有主端和從端 之分,主端必須是帶有cpu的邏輯模塊,在同一總線(xiàn)上同一時(shí)刻便能有一個(gè)主端,可 以有多個(gè)從端,從端的數(shù)量受地址空間和總線(xiàn)的最大電容400pf的限制。 主端主要用來(lái)驅(qū)動(dòng)scl i ine; 從設(shè)備對(duì)主設(shè)備產(chǎn)生響應(yīng);二者都可以傳輸數(shù)據(jù),但是從設(shè)備不能發(fā)起傳輸,且傳輸是受到主設(shè)備控制的。v:

4、 i 0&i 03 i d2 e7 lj8為了加深對(duì)12c總線(xiàn)的理解,用c語(yǔ)言模擬hc總線(xiàn),邊看源代碼邊讀波形:如下圖所示的寫(xiě)操作的時(shí)序圖:void總線(xiàn)到始化( 33;delay(); 3c1-l;,delay(): )void starz() 開(kāi)始售w (odar ; 釋放sdr總線(xiàn) delay(); scl=;delay (); oda一:;,被控著:位地址:w匕控器發(fā)送一個(gè)字節(jié)delay 0;vo-d zesponso 應(yīng)答scl在高電平期司sd工被(uchar i;scl=l:delay ();r/w: ack;,d7veld wrice &yce (uchar dare) 號(hào)-三五一

5、個(gè)三fuchar if*enx;enp=daterfor(1- :i: :i4-4)2mp_ 工二二/把氐工,因?yàn)橹徽诜肿有凇辈?delay();sda=cy:delay ():501.7/301,比對(duì)2da上花效搞史的敖拓delay0:sc1=1/拉低3cl,為下;t冢指?jìng)鬏斪龊脺?zhǔn)才做好才3d;-:,*或加點(diǎn)線(xiàn),換下親自從發(fā)各且從設(shè)分delay ();void stop ()/停止-3(至多等待25。個(gè)cpu時(shí)轉(zhuǎn)司期miil.e(sda )&qcc ) ) i4+ : 奚j;讀取應(yīng)答,否則等待 dcay();) ,??匦?;應(yīng)瞥;delay():3cl=二;delay();3da=;一

6、delay();i ack :一?主控器廠(chǎng)栽 : stcp ,應(yīng)存;信號(hào)該bit結(jié)束主控器發(fā)送一個(gè)字節(jié)數(shù)據(jù)的時(shí)序讀時(shí)序的理解同理。對(duì)于時(shí)序不理解的朋友請(qǐng)參考“i2c總線(xiàn)之(二)一-時(shí)序完整的程序如下:電#include#define uchar unsigned char#define uint unsigned int#define writeadd oxaottdefine read.add oxal uchar a;sbit sda=p20;sbit scl=p21;void somenop ();短延時(shí)void init ();初始化void check_ack(void);void

7、i2cstart(void);void i2cstop(void);void write.byte (uchar dat); 寫(xiě)字節(jié)void delay(uint z);uchar read_byte (); 讀字節(jié)void write (uchar addr, ucheir dat); 指定地址寫(xiě) uchar read (uchar addr);指定地址讀bit flag; 應(yīng)答標(biāo)志位 void main() (init();write_add (5, oxaa); 向地址 5 寫(xiě)入 oxaadelay(10);延時(shí),否則被坑呀! !pl=read_add (5); 讀取地址5的值 whil

8、e (1);)/*4q|q|c* 林 *我*40|0|(*林* void delay()簡(jiǎn)單延時(shí)函數(shù) ; * *和k* 和|*我* 加(評(píng)* 粕|c* void start () 開(kāi)始信號(hào)scl在高電平期間,sda一個(gè)下降沿則表示啟動(dòng)信號(hào) (sda=l; 釋放sda總線(xiàn)delay ();scl=l;delay ();sda=0;delay ();)/* void stopo 停止scl在高電平期間,sda一個(gè)上升沿則表示停止信號(hào)sda=0;delay ();scl=l;delay ();sda=l;delay ();)/*10|我*狂* 我 *mc*ho|o|c* 我* void respon

9、s () 應(yīng)答scl在高電平期間,sda被從設(shè)備拉為低電平表示應(yīng)答(uchar i;scl=l;delay ();至多等待250個(gè)cpu時(shí)鐘周期while (sda=l)&(i250) i+;scl=0;delay ();)*我*void init()總線(xiàn)初始化將總線(xiàn)都拉高一釋放總線(xiàn)發(fā)送啟動(dòng)信號(hào)前,要先初始化總線(xiàn)。即總有 檢測(cè)到總線(xiàn)空閑才開(kāi)始發(fā)送啟動(dòng)信號(hào)sda=l;delay ();scl=l;delay ();)/*void write_byte (uchar date) 寫(xiě)一個(gè)字節(jié)uchar i, temp; temp=date;for(i=0;i8;i+)temp=templ;scl=0

10、;拉低scl,因?yàn)橹挥性跁r(shí)鐘信號(hào)為低電平期間按數(shù)據(jù)線(xiàn)上的高低電平狀態(tài)才允許變 化;并在此時(shí)和上一個(gè)循環(huán)的scl=l 一起形成一個(gè)上升沿delay ();sda=cy;delay ();scl=l ;拉高scl,此時(shí)sda上的數(shù)據(jù)穩(wěn)定delay ();scl=0;拉低scl,為下次數(shù)據(jù)傳輸做好準(zhǔn)備delay ();sda=l;釋放sda總線(xiàn),接下來(lái)由從設(shè)備控制,比如從設(shè)備接收完數(shù)據(jù)后,在scl為高時(shí),拉 低sda作為應(yīng)答信號(hào)delay ();)k k f /uchar re&d_byte()讀一個(gè)字節(jié)uchar i,k;scl=o;delay ();sda=l;delay ();for(i=0;

11、i8;i+)scl=l;上升沿時(shí),hc設(shè)備將數(shù)據(jù)放在sda線(xiàn)上,并在高電平期間數(shù)據(jù)己經(jīng)穩(wěn)定,可以接收啦delay ();k= (kl) | sda;scl=0;拉低scl,使發(fā)送端可以把數(shù)據(jù)放在sda上 delay ();)return k;)/* void write.add (uchar address, uchar date) 任意地址寫(xiě)一個(gè)字節(jié)start (); 啟動(dòng)write_byte(oxao); 發(fā)送從設(shè)備地址respons ();等待從設(shè)備的響應(yīng)write_byte (address);發(fā)出芯片內(nèi)地址respons (); 等待從設(shè)備的響應(yīng)write_byte(date); 發(fā)送數(shù)據(jù)respons (); 等待從設(shè)備的響應(yīng)stop ();停止/* uchar read_add (uchar address) 讀取一個(gè)字節(jié)uchar date;start。;啟動(dòng)write_byte (oxao);發(fā)送發(fā)送從設(shè)備地址寫(xiě)操作 r

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論