溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

i2c總線注意事項(xiàng)和在linux下使用實(shí)戰(zhàn)

發(fā)布時(shí)間:2020-07-05 22:22:51 來源:網(wǎng)絡(luò) 閱讀:764 作者:GaoNeil 欄目:移動(dòng)開發(fā)

i2c總線注意事項(xiàng)和在linux下使用實(shí)戰(zhàn)

i2c總線注意事項(xiàng)和在linux下使用實(shí)戰(zhàn)

仔細(xì)閱讀上圖中的下部分文字。

i2c總線注意事項(xiàng)和在linux下使用實(shí)戰(zhàn)

注意你的i2c_msg發(fā)送方式,決定了是否有pause。

i2c總線注意事項(xiàng)和在linux下使用實(shí)戰(zhàn)

注意圖中,什么叫sr。

i2c總線注意事項(xiàng)和在linux下使用實(shí)戰(zhàn)

i2c總線注意事項(xiàng)和在linux下使用實(shí)戰(zhàn)

注意圖上說的什么樣的才是真i2c協(xié)議

i2c總線注意事項(xiàng)和在linux下使用實(shí)戰(zhàn)

i2c設(shè)備驅(qū)動(dòng)涉及的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設(shè)備的生成是靠board中i2c_register_board_info(int busnum,struct i2c_board_info const *info, unsigned len) 進(jìn)行加入。arm device tree后,由i2c host controller driver根據(jù)自己的device node下面的子節(jié)點(diǎn),通過i2c_register_adapter()時(shí)調(diào)用of_i2c_register_devices()進(jìn)而調(diào)用i2c_new_device()來創(chuàng)建struct i2c_client 。進(jìn)而也確定了struct i2c_client和struct i2c_adapter的父子關(guān)系。

i2c總線注意事項(xiàng)和在linux下使用實(shí)戰(zhàn)

在實(shí)際的i2c設(shè)備驅(qū)動(dòng)編寫時(shí),需要注意,一般i2c設(shè)備總是容易出現(xiàn)偶爾的訪問無應(yīng)答(訪問失敗的情況),所以一般都需要加入retry重試5次以內(nèi)的方式加入重試機(jī)制。有的甚至在每次重試間(兩次調(diào)用i2c_transfer()之間),不但要加入msleep,還需要重新上電,具體取決于i2c設(shè)備本身。

具體請(qǐng)參考我的免費(fèi)的linux各種驅(qū)動(dòng)開發(fā)課程如下:
https://edu.51cto.com/course/17138.html

另外我的相關(guān)培訓(xùn)視頻請(qǐng)看:
歡迎觀看我發(fā)布的各個(gè)課程: https://edu.51cto.com/lecturer/8896847.html

我的新的更多優(yōu)惠的打包課程鏈接如下:
https://edu.51cto.com/sd/0a9d4

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI