DM642 I2C介面經驗總結

2021-06-05 22:04:14 字數 1586 閱讀 2226

一、dm642的i2c介面及i2c協議簡單介紹

傳送start位後再傳送被控裝置的位址,其中高7位為位址碼,第0位為讀/寫控制標誌rw,rw=0表示向被控裝置寫資料,rw=1表示從被控裝置讀資料。

i2c協議的讀寫操作可以概括如下步驟:

寫操作:

1.當主控裝置檢測到i2c匯流排處於空閒狀態時,首先傳送s位獲得i2c匯流排控制權;

2.傳送定址位元組(7位位址位+1位讀寫控制位0);

3.主控裝置等待被控裝置傳送應答位(ack);

4.主控裝置接收到ack位後開始傳送第1個資料位元組;

5.主控裝置等待被控裝置傳送的應答位,如果應答位是ack,則繼續傳送資料,如果應答位是nack,停止傳送資料;

6.主控裝置傳送完全部資料後,傳送乙個stop停止位,接收i2c通訊釋放匯流排控制權。

讀操作:

1.主控裝置檢測到i2c匯流排空閒時,傳送s起始位;

2.傳送位址位元組(7位位址位+1位讀寫控制位1);

3.被定址的裝置傳送應答訊號ack;

4.主控裝置接收到ack後釋放資料匯流排,開始接收第1個資料位元組;

5.主控裝置接收到資料後,傳送ack應答訊號表示繼續傳送資料,傳送nack訊號表示傳送資料結束;

6.主控裝置接收完全部資料後,傳送乙個stop停止位,接收i2c通訊。

引腳狀態                            寫操作                                 讀操作

0                                       0xb8                                     0xb9

1                                       0xba                                     0xbb

2.saa7121h的裝置位址由sa引腳確定,該引腳為低電平時,裝置位址為0x88,該引腳為高電平時,裝置位址為0x8c。

由tvp5150a和saa7121h裝置位址可以知道,當i2csel或sa引腳電平確定時,裝置的位址是唯一確定的!saa7121h比較好理解唯一確定的含義,對於tvp5150a來說,若i2csel=1,則該裝置位址可以理解為0x1011101(7位定址模式),而寫操作時最後加一位bit0=0即0x10111010=0xba,讀操作時bit0=1即0x10111011=0xbb,這就好理解為什麼寫操作和讀操作時裝置位址看起來不同了。同理,因為saa7121h晶元,對於主機dm642來說,只有寫操作,所以裝置位址的最後一位bit0始終為0(8=1000和c=1100),這也是符合i2c寫操作協議規定的。

三、分析開發板對應例程**中,表示i2c裝置位址時右移一位的情況(如,addri2c=0xba>>1)之原因

查閱tms320c6000 dsp inter-integrated circuit(i2c)module reference guide,8.9中有介紹i2c模式暫存器i2cmdr,第8欄位擴充套件位址使能位,當xa=0時為7位定址模式且位址由i2csar的低7位確定,當xa=1時為10位定址模式這時位址由i2csar的低10位確定。預設情況下,xa=0,所以**中addi2c=0xba>>1右移一位是必須的,不然不能正常定址從裝置。

數字介面(續) I2C 匯流排

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

低速通訊介面(二)I2C

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

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

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 ...