您好,登錄后才能下訂單哦!
仔細閱讀上圖中的下部分文字。
注意你的i2c_msg發送方式,決定了是否有pause。
注意圖中,什么叫sr。
注意圖上說的什么樣的才是真i2c協議
i2c設備驅動涉及的linux i2c api:
參見include/linux/i2c.h
i2c_transfer()
i2c_master_send()、i2c_master_recv ()
i2c_smbus_xfer()
struct i2c_driver
struct i2c_client
i2c_get_clientdata()、i2c_set_clientdata()
i2c_register_driver()、i2c_del_driver ()
i2c_check_functionality()
arm device tree引入以前,i2c設備的生成是靠board中i2c_register_board_info(int busnum,struct i2c_board_info const *info, unsigned len) 進行加入。arm device tree后,由i2c host controller driver根據自己的device node下面的子節點,通過i2c_register_adapter()時調用of_i2c_register_devices()進而調用i2c_new_device()來創建struct i2c_client 。進而也確定了struct i2c_client和struct i2c_adapter的父子關系。
在實際的i2c設備驅動編寫時,需要注意,一般i2c設備總是容易出現偶爾的訪問無應答(訪問失敗的情況),所以一般都需要加入retry重試5次以內的方式加入重試機制。有的甚至在每次重試間(兩次調用i2c_transfer()之間),不但要加入msleep,還需要重新上電,具體取決于i2c設備本身。
具體請參考我的免費的linux各種驅動開發課程如下:
https://edu.51cto.com/course/17138.html
另外我的相關培訓視頻請看:
歡迎觀看我發布的各個課程: https://edu.51cto.com/lecturer/8896847.html
我的新的更多優惠的打包課程鏈接如下:
https://edu.51cto.com/sd/0a9d4
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。