




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、I2C通信:起始條件:SCL為高電平,SDA電平從高變低,這一變化即完成了通 信的起始條件。起始條件和數(shù)據(jù)通信間,通常會有延時要求具體的指標(biāo)見設(shè)備說明。數(shù)據(jù)傳輸階段:一字節(jié)需要9個時鐘周期;且每一位需要一個時鐘周 期;如上圖所示,ADDRESS目標(biāo)設(shè)備的地址,R/ w為通信的的方 向位;"1"時表示讀,即后續(xù)的數(shù)據(jù)由目標(biāo)設(shè)備發(fā)出,主機進行接收; "0"時表示寫,即后續(xù)的數(shù)據(jù)由主機發(fā)出目標(biāo)設(shè)備進行接收。當(dāng)ACK信號為"0"時,說明接收成功;為"1"時,說明接收失敗。 每個字節(jié)的傳輸都是由高位(MSB劇低位(LS咪次進
2、行傳輸。 在數(shù)據(jù)通信過程中,總是由數(shù)據(jù)接收方發(fā)出ACK信號。終止階段:當(dāng)主機完成數(shù)據(jù)通信,并終止本次傳輸時會發(fā)出終止信號。 當(dāng)SCL是高電平時,SDA電平由低變高,這個變化意味著傳輸終止。注:每個時鐘周期的高電平期間,SDA的數(shù)據(jù)狀態(tài)達到穩(wěn)定。下面給出了模擬I2C總線進行讀寫的偽代碼,用以說明如何使用GPIO實現(xiàn)I2C通信:int i2c_start()初始化GPIO 口set_gpio_direction(SDA, OUTP); set_gpio_direction (SCL, OUTP);set_gpio_value(SDA, 1);set_gpio_value(SCL, 1);delay
3、();/起始條件set_gpio_value(SDA, 0);delay();void i2c_stop()set_gpio_value(SCL, 1);set_gpio_direction(SDA, OUTP);set_gpio_value(SDA, 0);delay();set_gpio_value(SDA, 1);/* I2C讀取ACK信號(寫數(shù)據(jù)時使用 非0表示ACK信號無效*/unsigned char i2c_read_ack()unsigned char r;set_gpio_direction(SDA, INP);/* I2C 起始條件*/設(shè)置SDA方向為輸出設(shè)置SCL方向為輸
4、出設(shè)置SDA為高電平設(shè)置SCL為高電平/ 延時/SCL為高電平時,SDA由高變低/適當(dāng)延時/* I2C 終止條件*/SCL高電平時,SDA由低變高)返回值:。表示ACK信號有效;/設(shè)置SDA方向為輸入set_gpio_value(SCL,0);r = get_gpio_value(SDA);delay();set_gpio_value(SCL,1);/ SCL變低/讀取ACK言號/ SCL變高delay();return r;/* I2C發(fā)出ACK信號(讀數(shù)據(jù)日t使用)*/int i2c_send_ack()set_gpio_direction(SDA, OUTP);set_gpio_valu
5、e(SCL,0);set_gpio_value(SDA, 0);delay();set_gpio_value(SCL,1);delay();void i2c_write_byte(unsigned char b) /* I2C 字節(jié)寫int i;set_gpio_direction(SDA, OUTP);for (i=7; i>=0; i-)set_gpio_value(SCL, 0);delay();set_gpio_value(SDA, b & (1<<i);set_gpio_value(SCL, 1);delay();i2c_read_ack();/設(shè)置SDA方
6、向為輸出/ SCL變低/發(fā)出ACK信號/ SCL變高*/設(shè)置SDA方向為輸出/ SCL變低/從高位到低位依次發(fā)送數(shù)據(jù)/ SCL變高檢查目標(biāo)設(shè)備的ACK信號/* I2C 字節(jié)讀 */unsigned char i2c_read_byte()int i;unsigned char r = 0;設(shè)置SDA方向為輸入/ SCL變低/ 高 位到低 位依次數(shù)據(jù)讀取/ SCL變高向目標(biāo)設(shè)備發(fā)送ACK信號set_gpio_direction(SDA, INP);for (i=7; i>=0; i-)set_gpio_value(SCL, 0);delay();r = (r <<1) | ge
7、t_gpio_value(SDA);set_gpio_value(SCL, 1);delay();i2c_send_ack();return r;/* I2C讀操作 addr:目標(biāo)設(shè)備地址buf:讀緩沖區(qū) len:讀入字節(jié)的長度*/ void i2c_read(unsigned char addr, unsigned char* buf, int len) int i;unsigned char t;/起始條件,開始數(shù)據(jù)通信/低位為 1,表示讀數(shù)據(jù)i2c_start();/發(fā)送地址和數(shù)據(jù)讀寫方向t = (addr << 1) | 1;i2c_write_byte(t);/讀入數(shù)據(jù)for (i=0; i<len; i+)bufi = i2c_read_byte();/終止條件,結(jié)束數(shù)據(jù)通信i2c_stop();/* I2C寫操作 addr:目標(biāo)設(shè)備地址buf:寫緩沖區(qū) len:寫入字節(jié)的長度*/ void i2c_write (unsigned char addr, unsigned char* buf, int len) int i;unsigned char t;/ 起始條件,開始數(shù)據(jù)通信/ 低位為0,表示寫數(shù)據(jù)i2c_start();/發(fā)送地址和數(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 大腳丫跳芭蕾教學(xué)設(shè)計
- 《財務(wù)分析的教學(xué)方法和流程》課件
- 《市場監(jiān)管法規(guī)與實踐》課件
- 射陽三中初一試卷及答案
- 陜西地生會考試卷及答案a卷
- 廈門二中體考試卷及答案
- 2025民間房屋買賣合同范本
- 2025商場電力供應(yīng)合同模板
- 浙江國企招聘2025衢州古城文化旅游區(qū)運營管理有限公司招聘21人筆試參考題庫附帶答案詳解
- 石棉制品在油氣管道的保溫應(yīng)用考核試卷
- GB/T 17872-1999江海直達貨船船型系列
- GB/T 12027-2004塑料薄膜和薄片加熱尺寸變化率試驗方法
- 中醫(yī)手診培訓(xùn)資料課件
- 消防主機運行記錄表(標(biāo)準(zhǔn)范本)
- DB2110T 0004-2020 遼陽地區(qū)主要樹種一元、二元立木材積表
- 應(yīng)急處置措施交底
- 基于深度學(xué)習(xí)的問題鏈講座課件(44張PPT)
- Q∕GDW 12154-2021 電力安全工器具試驗檢測中心建設(shè)規(guī)范
- 第四章 金融監(jiān)管(商業(yè)銀行管理-復(fù)旦大學(xué))
- 中波發(fā)射臺搬遷建設(shè)及地網(wǎng)鋪設(shè)、機房設(shè)備的安裝與調(diào)整實踐
- 影像診斷學(xué)-—-總論PPT課件
評論
0/150
提交評論