<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Coo1Runner-Ⅱ器件I2C接口協(xié)議

          Coo1Runner-Ⅱ器件I2C接口協(xié)議

          作者: 時(shí)間:2011-12-22 來源:網(wǎng)絡(luò) 收藏
            這里將說明I2C的主要通信協(xié)議,更詳細(xì)的說明和時(shí)序圖請參考I2C規(guī)范文檔。
            I2C總線包括兩個(gè)信號(hào)線,即SDA和SCL。所有通信都發(fā)生在這兩個(gè)信號(hào)線上,連接到同一條總線上的設(shè)備數(shù)目受限于最大的總線電容。SDA和SCL都是雙向的,通過上拉電阻連接到系統(tǒng)電源??偩€空閑時(shí),這兩個(gè)總線保持高電平。在總線上的I2C設(shè)備的輸出數(shù)據(jù)階段,必須是漏極開路或是集電極開路以實(shí)現(xiàn)線與功能。

            每個(gè)設(shè)備都有唯一的地址,可以工作在發(fā)送模式或接收狀態(tài),也可以被配置為主設(shè)備或從設(shè)務(wù)。方設(shè)備啟動(dòng)一次總線數(shù)據(jù)傳輸,并產(chǎn)生時(shí)鐘信號(hào),總線上任何其他設(shè)備都會(huì)被視為從設(shè)備。I2C協(xié)議同時(shí)還具有仲裁機(jī)制,如果多臺(tái)主設(shè)備同時(shí)申請控制總線,只有一臺(tái)設(shè)備成功獲取總線而不會(huì)丟失數(shù)據(jù)。

            一次數(shù)據(jù)傳輸開始于一個(gè)START命令,結(jié)束于一個(gè)STOP命令。SDA在時(shí)鐘SOL低電平時(shí)變化,高電平時(shí)保持穩(wěn)定。START被定義為當(dāng)SOL為高電平時(shí),SDA由高到低的跳變;STOP被定義為當(dāng)SOL為高時(shí),SDA由低到高的跳變,如圖所示。

          I2C總線的—次數(shù)據(jù)傳輸



            如圖 I2C總線的—次數(shù)據(jù)傳輸

            每個(gè)數(shù)據(jù)包包含8位數(shù)據(jù),后跟一個(gè)ACK位。因此一次數(shù)據(jù)傳輸共需要9個(gè)SOL,首先傳輸MSB。發(fā)送設(shè)備在ACK周期釋放SDA,接收設(shè)備必須在過程中驅(qū)動(dòng)SDA為低。如果從設(shè)備沒有將SDA驅(qū)動(dòng)為低,則表明其不能夠接收數(shù)據(jù),主設(shè)備將產(chǎn)生一個(gè)STOP狀態(tài)以退出本次傳輸;如果主設(shè)備沒有將SDA驅(qū)動(dòng)為低,則表明從設(shè)備發(fā)送的是最后一個(gè)字節(jié)。標(biāo)準(zhǔn)I2C通信包含4部分,即起始位、從地址、數(shù)據(jù)傳輸和停止位。I2C協(xié)議規(guī)定了兩種地址格式,即7位和10位,本設(shè)計(jì)為7位。起始位之后是7位地址,第8位是讀寫位,“0”為寫;“1”為讀。僅僅與地址相匹配的從設(shè)備在第9個(gè)SOL發(fā)一個(gè)ACK到SDA,將SDA拉低。

            一旦地址匹配成功,主從之間數(shù)據(jù)傳輸就會(huì)建立,讀/寫位決定數(shù)據(jù)傳輸方向。主設(shè)備發(fā)一個(gè)STOP命令終止一次傳輸。然而,主設(shè)備在沒有發(fā)出STOP之前也可能產(chǎn)生一個(gè)START信號(hào),此情況被定義為重復(fù)開始(Repeat START)。


          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();