色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          I2C總線注意要點(diǎn)

          作者: 時(shí)間:2016-12-15 來源:網(wǎng)絡(luò) 收藏
          1、只要求兩條總線線路:一條串行數(shù)據(jù)線SDA,一條串行時(shí)鐘線SCL。


          本文引用地址:http://cafeforensic.com/article/201612/330279.htm

          2、每個(gè)連接到總線的器件都可以通過唯一的地址和一直存在的簡(jiǎn)單的主機(jī)/從機(jī)關(guān)系軟件設(shè)定地址,主機(jī)可以作為主機(jī)發(fā)送器或主機(jī)接收器。

          3、在傳輸數(shù)據(jù)的時(shí)候,SDA線必須在時(shí)鐘的高電平周期保持穩(wěn)定,SDA的高或低電平狀態(tài)只有在SCL線的時(shí)鐘信號(hào)是低電平時(shí)才能改變。


          4、SCL線是高電平時(shí),SDA線從高電平向低電平切換,這個(gè)情況表示起始條件。

          5、SCL線是高電平時(shí),SDA線由低電平向高電平切換,這個(gè)情況表示停止條件。


          6、數(shù)據(jù)傳輸必須帶響應(yīng),相關(guān)的響應(yīng)時(shí)鐘脈沖由主機(jī)產(chǎn)生。在響應(yīng)的時(shí)鐘脈沖期間發(fā)送器釋放SDA線(高)。響應(yīng)的時(shí)鐘脈沖期間,接收器必須將SDA線拉低,使它在這個(gè)時(shí)鐘脈沖的高電平期間保持穩(wěn)定的低電平。


          7、第一個(gè)字節(jié)的頭7位組成了從機(jī)地址,最低位(LSB)是第8位,它決定了傳輸?shù)姆较颉5谝粋€(gè)字節(jié)的最低位是“0”,表示主機(jī)會(huì)寫信息到被選中的從機(jī);“1”表示主機(jī)會(huì)向從機(jī)讀信息,當(dāng)發(fā)送了一個(gè)地址后,系統(tǒng)中的每個(gè)器件都在起始條件后將頭7位與它自己的地址比較,如果一樣,器件會(huì)判定它被主機(jī)尋址,至于是從機(jī)接收器還是從機(jī)發(fā)送器,都由R/W位決定的。

          voidI2C_delay(void)

          {

          u8i=200;

          while(i)

          {

          i--;

          }

          }

          voidI2C_Start(void)

          {

          SDA_H;

          I2C_delay();

          SCL_H;//SCL線是高電平時(shí),SDA線從高電平向低電平切換,總線開始

          I2C_delay();

          SDA_L;

          I2C_delay();

          SCL_L;

          I2C_delay();

          }

          voidI2C_Stop(void)

          {

          SDA_L;

          I2C_delay();

          SCL_H;//SCL線是高電平時(shí),SDA線由低電平向高電平切換,總線結(jié)束。

          I2C_delay();

          SDA_H;

          I2C_delay();

          }

          //等待ACK應(yīng)答

          voidWaitACK1(void)

          {

          u8errtime=225;

          SDA_IN();//設(shè)置SDA端口為輸入模式

          I2C_delay();

          SCL_H;

          I2C_delay();

          while(SDA_read)//SCL拉高后,等待SDA被拉低(ACK)

          {

          errtime--;

          if(errtime==0)

          {

          I2C_Stop();

          SDA_OUT();

          break;

          }

          }

          SCL_L;

          SDA_OUT();

          I2C_delay();

          }

          //寫入單字節(jié)數(shù)據(jù)

          voidWritebyte(unsignedcharData)

          {

          unsignedchari;

          for(i=0;i<8;i++)

          {

          if((Data<

          {

          SDA_H;

          }

          else

          {

          SDA_L;

          }

          I2C_delay();

          SCL_H;

          I2C_delay();

          SCL_L;

          }

          SDA_L;

          I2C_delay();

          WaitACK1();

          I2C_delay();

          }



          關(guān)鍵詞: I2C總線注意要

          評(píng)論


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

          關(guān)閉