1. 程式人生 > >利用USB-I2C實現從機I2C收發資料

利用USB-I2C實現從機I2C收發資料

Ginkgo USB-I2C介面卡韌體從V2.8.17版本開始支援I2C從機功能,下面就針對這個功能的使用做簡單介紹。
實現目的:
1、I2C從機接收資料,也就是接收I2C主機的資料並顯示出來;
2、I2C從機發送資料,也就是把資料傳輸到介面卡裡面後,主機能將這些資料讀出來;
上位機測試軟體用Ginkgo_USB-I2C_Classic_Setup_v2.9.1.exe軟體,大家可以到我們官方網站下載。
從機接收資料工作流程:
初始化裝置為從機模式(需設定從機地址)->自動接收資料->呼叫VII_SlaveReadBytes()函式返回資料;
現在我們用兩個USB-I2C介面卡對接,一個當主機,一個當從機,由於介面卡內部I2C總線上沒上拉電阻,所以需要在SDA和SCL兩根訊號線上分別接一個4.7K的上拉電阻到3.3V,然後執行USB-I2C Classic軟體,由於我們要配置介面卡工作在從機模式下,所以在選擇裝置型別為從機之前需要先設定好相關引數,因為在選擇從機模式後會根據介面設定相關引數自動初始化介面卡為從機,其設定從機相關引數如下:


SLAVE1.jpg 
注意:Device Addr(Hex)這裡就是設定從機地址的引數,主機在讀寫資料的時候都需要設定從機地址為這個資料,否則讀寫資料會出錯,然後設定好傳送週期(根據主機發送資料頻率設定,由於我們這裡主機是手動傳送資料,所以可以把週期設定長一點),點選自動傳送,這樣軟體就會週期性的呼叫VII_SlaveReadBytes()函式來獲取介面卡接收到的資料,如果沒接收到資料,這個函式會返回0位元組資料。
這些都做好後,從機就等待主機發送資料了,如果接收到資料後就在PC呼叫VII_SlaveReadBytes()函式的時候將資料返回,現在主機做如下設定並點擊發送,從機介面就能顯示接收到的資料:
SLAVE2.jpg 
從機發送資料工作流程:

從機發送資料需要先將資料寫入介面卡內部緩衝區中,然後主機產生時鐘訊號後,從機就會自動把資料傳送出去,所以在從機設定設定好相關引數後,設定好要傳送的資料,然後點擊發送,資料就傳送到介面卡內部緩衝區了,然後主機就可以將資料從從機讀回來。
從機發送資料:
SLAVE3.jpg 
主機讀取資料:
SLAVE4.jpg 

後記:
從機模式在協助主機程式開發時有很大的用處,在不確定主機控制物件是否正常工作或者主機控制程式是否正常工作的時候可以利用從機來驗證主機控制程式,這樣可以加速定位問題所在。
I2C通訊的時候,在同一個總線上可以掛多個裝置,主機和從機之間的資料傳輸都是通過地址來定址的,所以在除錯的時候一定要注意主機和從機的地址必須匹配,否則會出現無法正常通訊的問題。