新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > I2C總線學習感想總結(一)

        I2C總線學習感想總結(一)

        作者: 時間:2016-11-25 來源:網絡 收藏
        一:起始與終止

        本文引用地址:http://www.104case.com/article/201611/321549.htm

        1:I2C起始條件

        SCL高電平期間,SDA從高電平向低電平切換。

        2:I2C終止條件

        SCL高電平期間,SDA從低電平向高電平切換。

        二:數據傳輸

        1:進行數據傳送時,在SCL呈現高電平期間,SDA上的電平必須保持穩定

        SDA上的數據只能在SCL為低電平期間變化。

        2:I2C總線每個CLK發送或接收一個位的數據(或地址)

        在CLK上升沿,把數據bit(或地址)送到SDA線上

        在CLK下降沿,從SDA線上讀取數據bit

        C程序實例:

        void Start_I2c()


        {
        SDA=1;
        _Nop();
        SCL=1;
        _Nop();
        _Nop();
        _Nop();
        _Nop();
        _Nop();
        SDA=0;
        _Nop();
        _Nop();
        _Nop();
        _Nop();
        _Nop();
        SCL=0;
        _Nop();
        _Nop();
        }

        void Stop_I2c()
        {
        SDA=0;
        _Nop();
        SCL=1;
        _Nop();
        _Nop();
        _Nop();
        _Nop();
        _Nop();
        SDA=1;
        _Nop();
        _Nop();
        _Nop();
        _Nop();
        }

        void SendByte(uchar c)
        {
        uchar BitCnt;

        for(BitCnt=0;BitCnt<8;BitCnt++)
        {
        if((c<
        else SDA=0;
        _Nop();
        SCL=1;
        _Nop();
        _Nop();
        _Nop();
        _Nop();
        _Nop();
        SCL=0;
        }

        _Nop();
        _Nop();
        SDA=1;
        _Nop();
        _Nop();
        SCL=1;
        _Nop();
        _Nop();
        _Nop();
        if(SDA==1)ack=0;
        else ack=1;
        SCL=0;
        _Nop();
        _Nop();
        }

        uchar RcvByte()
        {
        uchar retc;
        uchar BitCnt;

        retc=0;
        SDA=1;
        for(BitCnt=0;BitCnt<8;BitCnt++)
        {
        _Nop();
        SCL=0;
        _Nop();
        _Nop();
        _Nop();
        _Nop();
        _Nop();
        SCL=1;
        _Nop();
        _Nop();
        retc=retc<<1;
        if(SDA==1)retc=retc+1;
        _Nop();
        _Nop();
        }
        SCL=0;
        _Nop();
        _Nop();
        return(retc);
        }



        關鍵詞: I2C總線學習感

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 唐海县| 惠东县| 鄯善县| 昭苏县| 长垣县| 武山县| 漯河市| 灯塔市| 逊克县| 梁山县| 白河县| 涞源县| 尖扎县| 大同县| 紫阳县| 海晏县| 瓮安县| 电白县| 绥滨县| 大同县| 石河子市| 德保县| 阿拉善右旗| 清河县| 区。| 周口市| 二手房| 石台县| 镇宁| 海伦市| 盐津县| 四平市| 京山县| 青龙| 瓦房店市| 佛冈县| 梅州市| 平武县| 深水埗区| 石河子市| 合阳县|