IIC工作原理 MCU微控制器

2021-10-14 12:29:25 字數 2803 閱讀 6396

一、常用的序列匯流排協議

目前常用的微機與外設之間進行資料傳輸的序列匯流排主要有uart、1-write、i2c和spi匯流排。

1.uart:非同步方式進行通訊(一條資料輸入線、一條資料輸出線)。

2.1-write:單線匯流排,又稱為單匯流排(只有一條資料輸出線)。

3.i2c:同步序列2線方式(一條時匯流排,一條資料線)。

4.spi:同步序列3線方式通訊(一條時鐘線,一條資料輸入線,一條資料輸出線)。

【注】i2c匯流排是phlips公司推出的一種序列匯流排,它只有兩根雙向訊號線,一根資料線

sda(serial data i/o),另一根scl(serial clock)。

每一條i2c匯流排可以掛載多個器件,而每個器件都有*

*唯一的位址*

*,這樣可以標識通訊目標。

資料的通訊採用主從機的方式,主機負責主動聯絡從機,

從機負責被動回應資料。(如下圖)從機無法主動傳送、讀取數

多主機系統中,為了避免混亂,

採用匯流排仲裁,決定哪一台主機控制匯流排 >

1.i2c匯流排構成

i2c匯流排通過上拉電阻接正電源,當匯流排空閒時,兩根線均為高電平。連線到匯流排上的任一器件輸出的低電平,都將使匯流排的訊號變低,即各器件的sda及scl都是線「與」的關係。

二、i2c匯流排傳輸協議

1.資料位的有效性規定

scl為高電平期間,資料線上的資料必須保持穩定,只有scl訊號為低電平期間,sda的狀態才允許變化

2.i2c的起始和終止訊號

起始訊號:scl線為高電平期間,sda由高電平向低電平的變化表示起始訊號;

終止訊號:scl線為高電平期間,sda線由低電平向高電平的變化表示終止訊號。

3.i2c位元組的傳送與應答

每乙個位元組必須保證是8位長度。資料傳送時,先傳最高位,每乙個被傳送的位元組後面都必須跟隨一位應答位(即一幀共有9位)

3.資料幀格式

i2c匯流排上傳送的資料訊號是廣義的,既包括位址訊號,又包括真正的資料訊號。

【注】在起始訊號後必須傳送乙個從機的位址(7位),第8位時資料的傳送方向(r/t),採用「0」

表示主機傳送資料(t),「1」表示主機接收資料(r)。每次資料傳送總是由主機產生的終止訊號結束。

4.i2c匯流排的定址

i2c匯流排協議有明確規定:採用7位的定址位元組(定址位元組是起始訊號的第乙個位元組)

1>定址位元組定義

【注】d7~d1位組成從機位址,d0是資料傳輸方向位。

2>主機傳送位址時,匯流排上的每個主機都將這7位位址碼與自己的位址比較,如果相同,則認為自己正在被主機定址,根據r/t位將自己確定為傳送器或接收器。

3>從機的位址由固定部分和可程式設計部分組成,在乙個系統中如果希望接入多個相同的從機,從機位址的可程式設計部分決定接入器件的最大數目。例如,乙個從機的7位位址,有4位固定位址,3位可程式設計位址,那麼最大的接入數目就是8個。

電子元器件手冊查詢**:**www.alldatasheetcn.com**

4.軟體模擬i2c通訊時序

為保證資料的可靠性,i2c匯流排的資料傳送有嚴格的時序要求,i2c匯流排的起始、終止,傳送0、1的模擬時序如下圖

//1. i2c起始訊號程式

void

i2cstar()

//2. i2c終止訊號的變化

void

i2cstop()

//3. i2c主機讀從機應答

bit readack()

else

}//4. i2c主機傳送應答

void

sendack

(bit i)

傳送資料

void

i2csendbyte

(uchar dat)

scl =0;

//拉低時鐘匯流排,允許sda釋放

sda =1;

//釋放資料匯流排

}傳送資料

#define i2cread 1

//i2c讀方向位

#define i2cwrite 0

//i2c寫方向位

bit ackflag;

//應答標誌位

void

i2cwrite

(uchar addr, uchar dat)

讀取資料

uchar i2creadbyte()

return

(dat)

;//返回讀出的資料

}接收資料

uchar i2cread

(uchar addr)

51微控制器 IIC

iic inter intergrated circuit 匯流排是一種由philips公司開發的兩線式序列匯流排。用於連線微控制器及其外圍裝置。iic只需兩根線sda 資料線 scl 時鐘 iic支援多主控,當然,在任何時間點上只能有乙個主控,而spi是一主多從。iic各種被控制電路均併聯在這條匯...

迷人的MCU微控制器

mcu microcontroller unit,微控制單元,又稱單片微型計算機 single chip microcomputer 簡稱微控制器,是把 處理器 central process unit cpu 的頻率與規格做適當縮減,並將記憶體 定時器 usb a d轉換 uart plc dma...

微控制器(六) IIC匯流排

iic是積體電路匯流排,它是一種序列匯流排,iic只有兩根雙向訊號線,一根資料線sda,一根訊號線scl。要掌握iic匯流排通訊協議,需要掌握以下六點 1.起始訊號。2.終止訊號。3.寫資料。4.讀資料。5.應答訊號。6.非應答訊號。下面我們來看看他們各自的時序。由此我們可以寫出他的程式 起始 vo...