FPGA學習筆記_IIC協議
FPGA學習筆記
IIC協議
1. IIC協議概念
2. IIC協議原理
2.1. 起始位,結束位
2.2. 器件地址
2.3. 儲存器地址
2.4. 應答位
2.5. 讀寫時序
1. IIC協議概念
IIC: inter integrated circuit BUS, 積體電路匯流排,是一種序列通訊匯流排,多為主從結構。 一般用在小資料亮場合,傳輸距離短。
特點:
- 連線簡單:物理層上,IIC協議只有2根匯流排線路:SCL(序列時鐘線), SDA(序列資料線)
- 雙向通訊:兩根線可以完成資料的傳入和傳出。
- 多主多從:一個IIC總線上可以連線多個主機,多個從機。同一時刻,只能有一個主機向匯流排發起傳輸。
- 傳輸速度快:在標準模式下,100kbit/s,快速模式下400kbit/s,高速模式下3.4Mbit/s。主從裝置之間以位元組為單位雙向資料傳輸。
- 唯一ID:總線上的每一個器件有唯一ID。只有總線上的傳輸與該器件的ID匹配時,器件才對總線上的傳輸做出相應的迴應。不會產生衝突。
2. IIC協議原理
-
2.1 起始位,結束位
起始位:SCL訊號為高電平時,SDA出現一個下降沿 開始傳輸資料
停止位: SCL高電平,SDA上升沿 停止傳輸資料
匯流排空閒狀態:SCL高電平;SDA高電平;
SCL高電平:SDA資料穩定;SCL低電平:SDA資料變化 -
2.2. 器件地址
傳輸順序:從高位到低位
Eg. Chip select bits: 3’b100
寫:1010_100_0 -
2.3. 儲存器地址
長度:1或2個位元組(與器件的儲存單元數有關)
位置:主機收到ACK後,主機發出儲存地址 -
2.4. 應答位
當傳送方(圖:主機)將8位資料傳送完成後,等待接收方(圖:從機)傳送一個應答訊號,表示是否已經接收資料。0:應答,1:非應答。(應答訊號在8位資料傳送完後緊接著的時鐘週期(圖:#9)) -
2.5. 讀寫時序
-
讀操作:總線上主機從指定的從機的指定的儲存地址讀取一個(多個)位元組資料的完整時序主機操作過程:
① 主機設定 SDA 為輸出;
② 主機發起起始訊號;
③ 主機傳輸器件地址位元組,其中最低位為 0,表明為寫操作;
④ 主機設定 SDA 為三態門輸入,讀取從機應答訊號;
⑥ 主機設定 SDA 為三態門輸入,讀取從機應答訊號;
⑦ 讀取應答訊號成功,主機設定 SDA 輸出,對於兩位元組地址段器件,傳輸低位元組地址數
⑧ 據;對於 1 位元組地址段器件,無此步驟;
⑨ 主機發起起始訊號;
⑩ 主機傳輸器件地址位元組,其中最低位為 1,表明為讀操作;
⑪ 設定 SDA 為三態門輸入,讀取從機應答訊號;
⑫ 讀取應答訊號成功,主機設定 SDA 為三態門輸入,讀取 SDA 總線上的一個位元組的數
⑬ 據;
⑭ 產生無應答訊號(高電平)(無需設定為輸出高電平,因為匯流排會被自動拉高);
⑮ 主機產生 STOP 位,終止傳輸。 -
寫操作:總線上主機寫一個((多個))指定資料到指定從機的指定出去地址的完整時序
主機操作過程:
① 主機設定 SDA 為輸出;
② 主機發起起始訊號;
③ 主機傳輸器件地址位元組,其中最低位為 0,表明為寫操作;
④ 主機設定 SDA 為三態門輸入,讀取從機應答訊號;
⑤ 讀取應答訊號成功,主機設定 SDA 為輸出,傳輸 1 位元組地址資料;
⑥ 主機設定 SDA 為三態門輸入,讀取從機應答訊號;
⑦ 讀取應答訊號成功,對於兩位元組地址段器件,傳輸地址資料低位元組,對於 1 位元組地址段器件,主機設定 SDA 為輸出,傳輸待寫入的資料;
⑧ 設定 SDA 為三態門輸入,讀取從機應答訊號,對於兩位元組地址段器件,接著步驟 9;對於 1 位元組地址段器件,直接跳轉到步驟 11;
⑨ 讀取應答訊號成功,主機設定 SDA 為輸出,傳輸待寫入的資料(對於兩位元組地址段器件);
⑩ 設定 SDA 為三態門輸入,讀取從機應答訊號(兩位元組地址段器件);
⑪ 讀取應答訊號成功,主機產生 STOP 位,終止傳輸。
參考資料:《FPGA系統設計與驗證實戰指南》
【注】:個人學習筆記,如有錯誤,望不吝賜教,這廂有禮了~~~