I2C介面訊號的處理(SCL SDA)

2021-09-25 21:11:01 字數 1248 閱讀 7049

i2c有scl,sda這2根線,對這2個訊號的處理如下:

always@(posedge clk or negedge rstn)begin

if(!rstn)begin

rg_scld1<=1』b1;

rg_scld2<=1』b1;

rg_scld3<=1』b1;

rg_scld4<=1』b1;

rg_scld5<=1』b1;

rg_scld6<=1』b1;

rg_scld7<=1』b1;

rg_scld8<=1』b1;

rg_sdad1<=1』b1;

rg_sdad2<=1』b1;

rg_sdad3<=1』b1;

rg_sdad4<=1』b1;

rg_sdad5<=1』b1;

rg_sdad6<=1』b1;

rg_sdad7<=1』b1;

rg_sdad8<=1』b1;

endelse begin

rg_scld1<=xi_scl;

rg_scld2<= rg_scld1;

rg_scld3<= rg_scld2;

rg_scld4<= rg_scld3;

rg_scld5<= wr_scld5_nxt;

rg_scld6<= rg_scld5;

rg_scld7<= rg_scld6;

rg_scld8<= rg_scld7;

rg_sdad1<=xi_sda;

rg_sdad2<= rg_sdad1;

rg_sdad3<= rg_sdad2;

rg_sdad4<= rg_sdad3;

rg_sdad5<= wr_sdad5_nxt;

rg_sdad6<= rg_sdad5;

rg_sdad7<= rg_sdad6;

rg_sdad8<= rg_sdad7;

endend

assign wr_scld5_nxt=(rg_scld2==rg_scld3&& rg_scld3==rg_scld4)? rg_scld4:

rg_scld5;

assignwr_sdad5_nxt=(rg_sdad2==rg_sdad3&&rg_sdad3==rg_sdad4)? rg_sdad4:rg_scld5;

wr_scld5_nxt,wr_scld5_nxt這2個訊號是當連續的三個延遲量相等則對其進行更新,否則不更新

上述**中xi_scl,xi_sda分別是i2c的介面對外的2個訊號

示波器測量i2c訊號例項

將兩個錶筆接觸 scl sda 觸點,確認錶筆都接觸上的標誌是兩個錶筆都是高電平。將trigger menu中的 觸發方式 設定成邊沿觸發,信源 選擇sda錶筆,邊沿型別 設定成下降沿,觸發mode 先變成auto,將觸發點設定到偏向螢幕的左側,以便能看到更多的波形。scl比sda稍微靠上一點,容易...

數字介面(續) I2C 匯流排

了解內部積體電路匯流排 一種基本的低成本互聯方案 的連線和格式。內建積體電路 i2c 匯流排是一種單端 多主控雙線匯流排,適合在半雙工模式下進行高效的內部積體電路通訊。該匯流排使用漏極開路技術,因此通過電阻器連線到 vdd 時就需要兩根訊號線,分別為序列資料 sda 線和序列時鐘線 scl 如圖 1...

低速通訊介面(二)I2C

i2c引腳定義 都是雙向i o線,介面電路為開漏輸出,需通過上拉電阻接電源。當匯流排空閒時,兩根線都是高電平,連到匯流排上的任一器件輸出的低電平,都將使匯流排的訊號變低。起始訊號與終止訊號 scl線為高電平期間,sda線由高電平向低電平的變化表示起始訊號 scl線為高電平期間,sda線由低電平向高電...