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

          新聞中心

          S3C2440-IIC

          作者: 時(shí)間:2016-12-02 來(lái)源:網(wǎng)絡(luò) 收藏
          IIC(Inter-Integrated Circuit,I2C)總線(xiàn)是一種由PHILIPS公司開(kāi)發(fā)的兩線(xiàn)式串行總線(xiàn),用于連接微處理器及其外圍設(shè)備,它的最主要優(yōu)點(diǎn)是簡(jiǎn)單和有效。它只需要數(shù)據(jù)線(xiàn)SDA和時(shí)鐘線(xiàn)SCL,就能夠?qū)崿F(xiàn)CPU與被控IC之間、IC與IC之間進(jìn)行雙向傳送。
          s3c2440內(nèi)部有一個(gè)IIC總線(xiàn)接口,因此為我們連接帶有IIC通信模塊的外圍設(shè)備提供了便利。它具有四種操作模式:主設(shè)備發(fā)送模式、主設(shè)備接收模式、從設(shè)備發(fā)送模式和從設(shè)備接收模式。在這里我們只把s3c2440當(dāng)做IIC總線(xiàn)的主設(shè)備來(lái)使用,因此只介紹前兩種操作模式。在主設(shè)備發(fā)送模式下,它的工作流程為:首先配置IIC模式,然后把從設(shè)備地址寫(xiě)入接收發(fā)送數(shù)據(jù)移位寄存器IICDS中,再把0xF0寫(xiě)入控制狀態(tài)寄存器IICSTAT中,這時(shí)等待從設(shè)備發(fā)送應(yīng)答信號(hào),如果想要繼續(xù)發(fā)送數(shù)據(jù),那么在接收到應(yīng)答信號(hào)后,再把待發(fā)送的數(shù)據(jù)寫(xiě)入寄存器IICDS中,清除中斷標(biāo)志后,再次等待應(yīng)答信號(hào);如果不想再發(fā)送數(shù)據(jù)了,那么把0x90寫(xiě)入寄存器IICSTAT中,清除中斷標(biāo)志并等待停止條件后,即完成了一次主設(shè)備的發(fā)送。在主設(shè)備接收模式下,它的工作流程為:首先配置IIC模式,然后把從設(shè)備地址寫(xiě)入接收發(fā)送數(shù)據(jù)移位寄存器IICDS中,再把0xB0寫(xiě)入控制狀態(tài)寄存器IICSTAT中,這時(shí)等待從設(shè)備發(fā)送應(yīng)答信號(hào),如果想要接收數(shù)據(jù),那么在應(yīng)答信號(hào)后,讀取寄存器IICDS,清除中斷標(biāo)志;如果不想接收數(shù)據(jù)了,那么就向寄存器IICSTAT寫(xiě)入0x90,清除中斷標(biāo)志并等待停止條件后,即完成了一次主設(shè)備的接收。在完成上述兩個(gè)模式時(shí),主要用到了控制寄存器IICCON、控制狀態(tài)寄存器IICSTAT和發(fā)送接收數(shù)據(jù)移位寄存器IICDS。由于我們只把s3c2440當(dāng)做主設(shè)備來(lái)用,并且系統(tǒng)的IIC總線(xiàn)上只有這么一個(gè)主設(shè)備,因此用來(lái)設(shè)置從設(shè)備地址的地址寄存器IICADD,和用于仲裁總線(xiàn)的多主設(shè)備線(xiàn)路控制寄存器IICLC都無(wú)需配置。寄存器IICCON的第6位和低4位用于設(shè)置IIC的時(shí)鐘頻率,因?yàn)镮IC的時(shí)鐘線(xiàn)SCL都是由主設(shè)備提供的。s3c2440的IIC時(shí)鐘源為PCLK,當(dāng)系統(tǒng)的PCLK為50MHz,而從設(shè)備最高需要100kHz時(shí),可以將IICCON的第6位置1,IICCON的低4位全為0即可。寄存器IICCON的第7位用于設(shè)置是否發(fā)出應(yīng)答信號(hào),第5位用于是否使能發(fā)送和接收中斷,第4位用于中斷的標(biāo)志,當(dāng)接收或發(fā)送數(shù)據(jù)后一定要對(duì)該位進(jìn)行清零,以清除中斷標(biāo)志。寄存器IICSTAT的高2位用于設(shè)置是哪種操作模式,當(dāng)向第5位寫(xiě)0或?qū)?時(shí),則表示結(jié)束IIC或開(kāi)始IIC通訊,第4位用于是否使能接收/發(fā)送數(shù)據(jù)。
          #include "2440addr.h"
          #define U32 unsigned int
          unsigned char iic_buffer[8];
          U32 length;
          unsigned char add, word;
          int cmd, flag, count, command;
          void delay(int a)
          {
          int k;
          for(k=0;k<a;k++)
          ;
          }
          void __irq UART0_ISR(void){
          char ch;
          rSRCPND |= (0x1<<28);
          rINTPND |= (0x1<<28);
          rSUBSRCPND |= 0x1<<0;
          if(rUTRSTAT0 & 0x1){
          ch = rURXH0;
          while(!(rUTRSTAT0&0x4));
          rUTXH0 = ch;
          if(count == 0)
          command = ch;
          if(command == 0xa1){
          if(count == 1){
          add = ch;
          }
          else
          if(count == 2){
          word = ch;
          }
          else
          if(count == 3){
          length = ch;
          }
          else if(count >= 4)
          {
          iic_buffer[count-4] = ch;
          if(count == length+3){
          count = -1;
          cmd = 0x01;
          }
          }
          count++;
          }
          else if(command == 0xa2)
          {
          if(count == 1)
          add = ch;
          else
          if(count == 2)
          word = ch;
          else
          if(count == 3){
          length = ch;
          count = -1;
          cmd = 0x02;
          }
          count++;
          }
          }
          }
          上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞: S3C2440IIC串行總

          評(píng)論


          技術(shù)專(zhuān)區(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); })();