亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1978 | 回復(fù): 0
打印 上一主題 下一主題

GPIO編程模擬I2C入門 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2009-02-05 09:10 |只看該作者 |倒序?yàn)g覽

I2C是由Philips公司發(fā)明的一種串行數(shù)據(jù)通信協(xié)議,僅使用兩根信號線:SerialClock(簡稱SCL)和SerialData(簡稱SDA)。I2C是總線結(jié)構(gòu),1個(gè)Master,1個(gè)或多個(gè)Slave,各Slave設(shè)備以7位地址區(qū)分,地址后面再跟1位讀寫位,表示讀(=1)或者寫(=0),所以我們有時(shí)也可看到8位形式的設(shè)備地址,此時(shí)每個(gè)設(shè)備有讀、寫兩個(gè)地址,高7位地址其實(shí)是相同的。
I2C數(shù)據(jù)格式如下:
無數(shù)據(jù):SCL=1,SDA=1;
開始位(Start):當(dāng)SCL=1時(shí),SDA由1向0跳變;
停止位(Stop):當(dāng)SCL=1時(shí),SDA由0向1跳變;
數(shù)據(jù)位:當(dāng)SCL由0向1跳變時(shí),由發(fā)送方控制SDA,此時(shí)SDA為有效數(shù)據(jù),不可隨意改變SDA;
當(dāng)SCL保持為0時(shí),SDA上的數(shù)據(jù)可隨意改變;
地址位:定義同數(shù)據(jù)位,但只由Master發(fā)給Slave;
應(yīng)答位(ACK):當(dāng)發(fā)送方傳送完8位時(shí),發(fā)送方釋放SDA,由接收方控制SDA,且SDA=0;
否應(yīng)答位(NACK):當(dāng)發(fā)送方傳送完8位時(shí),發(fā)送方釋放SDA,由接收方控制SDA,且SDA=1。
當(dāng)數(shù)據(jù)為單字節(jié)傳送時(shí),格式為:
開始位,8位地址位(含1位讀寫位),應(yīng)答,8位數(shù)據(jù),應(yīng)答,停止位。
當(dāng)數(shù)據(jù)為一串字節(jié)傳送時(shí),格式為:
開始位,8位地址位(含1位讀寫位),應(yīng)答,8位數(shù)據(jù),應(yīng)答,8位數(shù)據(jù),應(yīng)答,……,8位數(shù)據(jù),應(yīng)答,停止位。
需要注意的是:
1,SCL一直由Master控制,SDA依照數(shù)據(jù)傳送的方向,讀數(shù)據(jù)時(shí)由Slave控制SDA,寫數(shù)據(jù)時(shí)由Master控制SDA。當(dāng)8位數(shù)據(jù)傳送完畢之后,應(yīng)答位或者否應(yīng)答位的SDA控制權(quán)與數(shù)據(jù)位傳送時(shí)相反。
2,開始位“Start”和停止位“Stop”,只能由Master來發(fā)出。
3,地址的8位傳送完畢后,成功配置地址的Slave設(shè)備必須發(fā)送“ACK”。否則否則一定時(shí)間之后Master視為超時(shí),將放棄數(shù)據(jù)傳送,發(fā)送“Stop”。
4,當(dāng)寫數(shù)據(jù)的時(shí)候,Master每發(fā)送完8個(gè)數(shù)據(jù)位,Slave設(shè)備如果還有空間接受下一個(gè)字節(jié)應(yīng)該回答“ACK”,Slave設(shè)備如果沒有空間接受更多的字節(jié)應(yīng)該回答“NACK”,Master當(dāng)收到“NACK”或者一定時(shí)間之后沒收到任何數(shù)據(jù)將視為超時(shí),此時(shí)Master放棄數(shù)據(jù)傳送,發(fā)送“Stop”。
5,當(dāng)讀數(shù)據(jù)的時(shí)候,Slave設(shè)備每發(fā)送完8個(gè)數(shù)據(jù)位,如果Master希望繼續(xù)讀下一個(gè)字節(jié),Master應(yīng)該回答“ACK”以提示Slave準(zhǔn)備下一個(gè)數(shù)據(jù),如果Master不希望讀取更多字節(jié),Master應(yīng)該回答“NACK”以提示Slave設(shè)備準(zhǔn)備接收Stop信號。
6,當(dāng)Master速度過快Slave端來不及處理時(shí),Slave設(shè)備可以拉低SCL不放(SCL=0將發(fā)生“線與”)以阻止Master發(fā)送更多的數(shù)據(jù)。此時(shí)Master將視情況減慢或結(jié)束數(shù)據(jù)傳送。
在實(shí)際應(yīng)用中,并沒有強(qiáng)制規(guī)定數(shù)據(jù)接收方必須對于發(fā)送的8位數(shù)據(jù)做出回應(yīng),尤其是在Master和Slave端都是用GPIO軟件模擬的方法來實(shí)現(xiàn)的情況下,編程者可以事先約定數(shù)據(jù)傳送的長度,slave不檢查NACK,有時(shí)可以起到減少系統(tǒng)開銷的效果。但是如果slave方是硬件i2c要求一定要標(biāo)準(zhǔn)的NACK,master方是GPIO軟件模擬i2c并沒有正確的發(fā)送NACK,就會出現(xiàn)“slave收不到stop”導(dǎo)致i2c掛死。

本文來自ChinaUnix博客,如果查看原文請點(diǎn):http://blog.chinaunix.net/u/21414/showart_1813689.html
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP