<object id="2yooo"><optgroup id="2yooo"></optgroup></object>
<tr id="2yooo"></tr>
<rt id="2yooo"></rt>
<tr id="2yooo"><wbr id="2yooo"></wbr></tr>
<tr id="2yooo"><xmp id="2yooo">
<object id="2yooo"><option id="2yooo"></option></object>
<wbr id="2yooo"><wbr id="2yooo"></wbr></wbr>

首頁 > 應用 > 單片機應用
[導讀]SI2I2C總線是PHLIPS公司推出的一種串行總線,是具備多主機系統所需的包括總線裁決和高低速器件同步功能的高性能串行總線。

SI2I2C總線是PHLIPS公司推出的一種串行總線,是具備多主機系統所需的包括總線裁決和高低速器件同步功能的高性能串行總線。

I2C總線只有兩根雙向信號線。一根是數據線SDA,另一根是時鐘線SCL。

一.I2C系統結構

 

這里寫圖片描述

每個接到I2C總線上的器件都有唯一的地址。主機與其它器件間的數據傳送可以是由主機發送數據到其它器件,這時主機即為發送器。由總線上接收數據的器件則為接收器。

二.數據位的有效性規定

 

這里寫圖片描述

I2C總線進行數據傳送時,時鐘信號為高電平期間,數據線上的數據必須保持穩定,只有在時鐘線上的信號為低電平期間,數據線上的高電平或低電平狀態才允許變化。

三.字節傳送與應答

 

這里寫圖片描述

每一個字節必須保證是8位長度。數據傳送時,先傳送最高位(MSB),每一個被傳送的字節后面都必須跟隨一位應答位(即一幀共有9位)。

四.驅動程序

#define uchar unsigned char

#define uint unsigned int

#define somenop() _nop_(),_nop_(),_nop_(),_nop_(),_nop_(),_nop_()

sbit SCL=P2^1;

sbit SDA=P2^0;

1

2

3

4

5

1.起始信號和終止信號

 

這里寫圖片描述

SCL線為高電平期間,SDA線由高電平向低電平的變化表示起始信號;

SCL線為高電平期間,SDA線由低電平向高電平的變化表示終止信號。

起始和終止信號都是由主機發出的,在起始信號產生后,總線就處于被占用的狀態;在終止信號產生后,總線就處于空閑狀態

void I2C_Start() //起始

{

SCL=1;

somenop();

SDA=1;

somenop();

SDA=0;

somenop();

SCL=0;

somenop();

}

void I2C_Stop() //終止

{

SDA=0;

somenop();

SCL=1;

somenop();

SDA=1;

somenop();

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

2.發送數據

void I2C_SendByte(uchar dat, uchar ack) //發送一個字節

{

uchar i,j,b=0;

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

{

SCL=0;

somenop();

SDA=(bit)(dat&0x80); //每次取最高位進行發送

dat<<=1; //從最高位開始發送,左移使每一位逐漸成為最高位

SCL=1; //上升沿時發送數據

somenop();

}

SCL=0;

somenop();

SDA=1;

somenop();

SCL=1;

_nop_();

while((SDA==1)&&(j<250)) j++; //等待應答,也就是等待從設備把SDA拉低

SCL=0;

_nop_();

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

3.讀取數據

uchar I2C_ReadByte() //讀一個字節

{

uchar i,dat=0;

SCL=0; //此處也可以不置低,因為起始和發送一個字節之后SCL都是0

somenop();

SDA=1; //拉高準備數據讀取

_nop_();

for(i=0;i<8;i++) //讀取8位數據

{

SCL=1;

somenop();

dat<<=1;

if(SDA==1)

dat=dat|0x01;

somenop();

SCL=0; //下降沿時讀取數據

somenop();

}

return dat;

}

換一批

延伸閱讀

[汽車電子] 新能源車補兩年總計51億,比亞迪竟然拿了這么多!

新能源車補兩年總計51億,比亞迪竟然拿了這么多!

9月25日,工信部發布了《關于2017年及以前年度新能源汽車推廣應用補助資金初步審核(補充)情況的公示》,最終經專家組核定后應清算補助資金為50.9億元。......

關鍵字:新能源 補貼 比亞迪

[消費類電子新聞] 大疆發布公開信說了什么?為什么大疆發布公開信?

大疆發布公開信說了什么?為什么大疆發布公開信?

大疆發布公開信說了什么?據美國《紐約時報》報道,中國知名民用無人機企業大疆公司剛剛宣布了一系列重要的舉措,以讓公司在當前這個敏感的時局下更好地在美國市場發展下去。同時,大疆方面還在其官網上發布了一封寫給美國政府的數千字公開信。......

關鍵字:大疆發布公開信 大疆 無人機

[消費類電子新聞] 跑到日本和阿里競爭?騰訊微信與Line合作提供移動支付功能

跑到日本和阿里競爭?騰訊微信與Line合作提供移動支付功能

支付寶和微信支付在國內普及的差不多了,現在他們又開始要為境外消費的中國用戶提供服務了,支付寶和軟銀的合作已經在日本展開了, 騰訊微信也將和Line合作在日本提供移動支付服務。 ......

關鍵字:阿里巴巴 騰訊微信 Line

[消費類電子新聞] 劉強東和史玉柱的恩怨,史玉柱時隔兩年多報了仇?

劉強東和史玉柱的恩怨,史玉柱時隔兩年多報了仇?

劉強東和史玉柱竟然還有陳年恩怨,日前史玉柱發微博暗諷劉強東在美國犯事兒,而在兩年前,劉強東對他也是甚是不屑,說有的人弄各種假的保健品,狂打電視廣告,賺了幾百億,雖然沒有指名道姓,但大家都知道他的矛頭是史玉柱。 ......

關鍵字:劉強東 史玉柱 馬云

[智能硬件] 事態更嚴重了!美國司法部起訴晉華與聯電:涉嫌竊取價值千億美元市場商業機密 ...

事態更嚴重了!美國司法部起訴晉華與聯電:涉嫌竊取價值千億美元市場商業機密 ...

現在美國司法部也加入了美國商務部的行動,本周四宣布起訴晉華集團及聯華電子,理由是這兩家公司涉嫌竊取美國芯片廠商美光的知識產權及商業機密,改市場價值1000億美元,給美光造成的損失將近90億美元。 ......

關鍵字:晉華 聯電 美光

我 要 評 論

網友評論

技術子站

更多

項目外包

更多

推薦博客

啪啪影院伦理片