學習目標:學習iic驅動原理;
一、iic匯流排協議
iic序列匯流排包括一條資料線(sda)和一條時鐘線(scl),支援「一主多從」和「多主機」模式;每個從機裝置都有唯一的位址來識別。
圖 1 iic 主從結構
二、iic訊號和時序
iic匯流排有3種型別訊號:
1)開始訊號s
scl為高電平,sda由高電平跳變為低電平,開始傳輸資料。
2)結束訊號p
scl為高電平,sda由低電平跳變為高電平,結束傳輸資料。
3)響應訊號ack
接收器在接收到8位資料之後,在第9個時鐘週期,拉低sda電平。(如圖acknowledge)
資料傳輸過程中,sda上的資料必須在scl高電平期間保持穩定,sda上的資料在scl為低電平期間變化:
三、資料傳輸格式
iic主從機之間通訊步驟如下:
1. 主機傳送乙個起始訊號s通知匯流排上的從機就位;
2. 主機傳送從機位址和讀寫標誌共8位,其中從機位址佔高7位,讀寫標誌占用最低位(0為寫,1為讀);
3. 從機給主機回覆響應;
4. 緊接著一系列的位元組及其響應:
1)如果是寫模式, 主機傳送一位元組資料等待從機響應,主機收到響應之後如果還有資料要發就繼續傳送第二段資料等待響應…直到傳送完成;
2)如果是讀模式, 此時主機讀取從機發來的資料,並給從機響應, 如果從機還有資料要傳送(接著匯報第二段),主機接著讀取然後傳送響應給從機…
5. 主機發出p訊號結束本次傳輸。
iic寫操作
主機開始訊號-->(7位從機位址+1位寫標識)-->從機ack響應位-->主機發data1-->從機ack響應位.......->主機p訊號
iic讀操作
主機開始訊號-->(7位從機位址+1位讀標識)-->從機ack響應位-->從機發data1-->主機ack響應位.......->主機傳送 nack -->主機p訊號;
IIC驅動程式分析(一)
根據上一節課的分析,我們來解讀這段 include include include include include include include static unsigned short ignore static unsigned short normal addr 位址值是7位 static...
IIC驅動程式分析(二)
在上一節的實驗中,我們採用的是normal i2c 的方式,即 要發出s訊號和裝置位址並得到ack訊號,才能確定存在這個裝置。那麼如果本身不存在這個裝置當然啊不會給出應答訊號,這是就不會呼叫i2c probe adapter,addr data,at24cxx detect 函式中的at24cxx ...
IIC匯流排驅動程式框架分析
我們首先從 drivers i2c chips eeprom.c來分析,這是驅動那一塊的 static struct i2c driver eeprom driver id i2c driverid eeprom,attach adapter eeprom attach adapter,detach...