一、常用的序列匯流排協議
目前常用的微機與外設之間進行資料傳輸的序列匯流排主要有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...