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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 結(jié)合單片機(jī)用匯編實(shí)現(xiàn)I2CBUS總線協(xié)議

          結(jié)合單片機(jī)用匯編實(shí)現(xiàn)I2CBUS總線協(xié)議

          作者: 時(shí)間:2013-02-16 來(lái)源:網(wǎng)絡(luò) 收藏

            I2C數(shù)據(jù)的傳輸

            在I2C總線傳輸過(guò)程中,如圖3所示將兩種特定的情況定義為開(kāi)始和停止條件,開(kāi)始和停止條件由主控器產(chǎn)生:錄SCL保持“高”,SDA由“高”變?yōu)椤暗汀睍r(shí)為開(kāi)始條件,SCL保持“高”,SDA由“低”變?yōu)椤案摺笔菫橥V箺l件。使用硬件接口可以很容易地檢測(cè)開(kāi)始和停止條件,沒(méi)有這種接口的微機(jī)必須以每時(shí)鐘周期至少兩次對(duì)SDA取樣以便檢測(cè)這種變化。

          只有當(dāng)SCL線上的時(shí)鐘信號(hào)為低時(shí),數(shù)據(jù)線上的“高”或“低”狀態(tài)才可以改變,在SDA線上的每個(gè)字節(jié)必須是8位,且傳輸?shù)淖止?jié)不限,但是每個(gè)字節(jié)必須有一個(gè)應(yīng)答ACK。如果一接收器件在完成其他功能(如一內(nèi)部中斷)前不能接收另一數(shù)據(jù)的完整字節(jié)時(shí),它可以保持時(shí)鐘線SCL為低,以促使發(fā)送器進(jìn)入等待狀態(tài),當(dāng)接收器準(zhǔn)備好接受數(shù)據(jù)的其它字節(jié)并釋放時(shí)鐘SCL后,數(shù)據(jù)傳輸繼續(xù)進(jìn)行。I2C數(shù)據(jù)總線傳達(dá)時(shí)序如圖4。

            數(shù)據(jù)傳送必須有應(yīng)答。與應(yīng)答對(duì)應(yīng)的時(shí)鐘脈沖由主控制產(chǎn)生,發(fā)送器在應(yīng)答期間必須下拉SDA線。當(dāng)導(dǎo)址的被控器件不能應(yīng)答時(shí),數(shù)據(jù)保護(hù)為高,接著主控制產(chǎn)生停止條件終止傳輸。

            I2C總線的應(yīng)用

            下面就是用GMS97C2051(武漢力源公司產(chǎn)品,與AT89C2051兼容)的通用I/O口作為I2C總線接口,由軟件控制實(shí)現(xiàn)數(shù)據(jù)傳送,圖5為其連線路圖。

            在單主控器的系統(tǒng)中,時(shí)鐘線僅由主控器驅(qū)動(dòng),因此可以用51的一根I/O線作為SCL信號(hào)線,將其設(shè)置為輸出方式,由軟件控制產(chǎn)生串行時(shí)鐘信號(hào),在實(shí)際系統(tǒng)中使用P1.3,另一根I/O線P1.2作為I2C總線的串行數(shù)據(jù)線,由軟件控制在時(shí)鐘的低電平期間讀取或輸出數(shù)據(jù)。系統(tǒng)傳輸數(shù)據(jù)的過(guò)程如下:先由給出一個(gè)啟始數(shù)據(jù)信號(hào),接著送出要訪問(wèn)器件的7位地址數(shù)據(jù),并等待被控器件的就答信號(hào),當(dāng)收到應(yīng)答信號(hào)后,根據(jù)訪問(wèn)要求進(jìn)行相應(yīng)的操作。如果是讀入數(shù)據(jù),則數(shù)據(jù)線可一直設(shè)為輸入方式,中間不需要改變SDA線的工作方式,在每讀和主個(gè)字節(jié),均應(yīng)依次檢測(cè)應(yīng)答信號(hào),如果是輸出數(shù)據(jù),則首先將SDA設(shè)置為輸出方式,當(dāng)發(fā)送完一個(gè)字節(jié)后,需要改變SDA線為輸入方式,此時(shí)讀入被控器件的應(yīng)答信號(hào),至此完成了一個(gè)字節(jié)的傳送。當(dāng)所有數(shù)據(jù)傳輸完比,應(yīng)向SDA發(fā)出一個(gè)停止信號(hào),結(jié)束該次數(shù)據(jù)傳輸。

          在一個(gè)串行數(shù)據(jù)通道中.I2C總線控制器可以配置成主模式或從模式。開(kāi)發(fā)過(guò)程中,MPC8250的I2C總線控制器工作在主模式,作為主設(shè)備;與總線相連的I2C設(shè)備為AT24C01A型EEPROM,作為從設(shè)備。主設(shè)備和從設(shè)備都可以工作于接收和發(fā)送狀態(tài)??偩€必須由主設(shè)備控制,主設(shè)備產(chǎn)生串行時(shí)鐘控制總線的傳輸方向,并產(chǎn)生起始和停止條件。

            以下用51匯編語(yǔ)言實(shí)現(xiàn)啟始、停止、讀、寫(xiě)、應(yīng)答的程序。

           ?。?)啟始位程序:

            ACK:CLR P1.3

            NOP

            NOP

            SETB P1.2

            NOP

            NOP

            NOP

            CPL P1.3 ;P1.3=1

            NOP

            NOP

            NOP

            DENGDAI:JB P1.2,DENGDAI RET



          評(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); })();