日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux i2c 读写函数,Linux下读写芯片的I2C寄存器

發布時間:2025/4/17 linux 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux i2c 读写函数,Linux下读写芯片的I2C寄存器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

要想在Linux下讀寫芯片的I2C寄存器,一般需要在Linux編寫一份該芯片的I2C驅動,關于Linux下如何編寫I2C驅動,前一篇文章《手把手教你寫Linux I2C設備驅動》已經做了初步的介紹,并且留下了兩個疑問尚未解決,第一個是如何對Linux提供的I2C操作函數進行進一步封裝,實現對芯片寄存器的讀寫;另一個是如何在用戶空間調用該I2C驅動代碼。本文將討論前一個問題。

首先,我們要了解Linux系統提供的I2C操作函數怎么使用,上篇文章已經提到過,對I2C設備的讀寫,Linux系統提供了多種接口,這些接口可以在內核的 i2c.h 中找到,這里我主要介紹下面這組讀寫接口:

extern?int?i2c_master_send(struct?i2c_client?*,const?char*?,int);

extern?int?i2c_master_recv(struct?i2c_client?*,char*?,int);

第一個參數是 i2c_client 對象指針,第二個參數是要傳輸的數據buffer指針,第三個參數為buffer的大小。

接口函數已經有了,下面我們要解決的問題就是以何種形式/規則去使用這些接口才能正確地讀寫芯片的相關寄存器。

首先,我們需要查詢芯片手冊,找到芯片手冊中,關于寄存器的I2C讀寫時序,其實,大多數芯片的I2C寄存器的讀寫時序都是一樣的,下面我還是以手頭的TVP5158芯片為例。

首先分析寫操作,該芯片的手冊中給出的I2C寄存器寫時序圖如下:

從上圖可以看出,真正需要執行寫操作的有兩處,Step4 和 Step6 ,Step4首先寫入寄存器的偏移地址,而Step6則是寫入到該寄存器的值。由此已經很清楚了,對于寫I2C寄存器,我們需要做的就是給 i2c_master_send 函數傳入兩個字節的數據即可,第一個字節為寄存器的地址,第二個字節為要寫入寄存器的數據。示例如下:

static?int?tvp5158_i2c_write(?struct?i2c_client*?client,uint8_t?reg,uint8_t?data)

{

unsigned?char?buffer[2];

buffer[0]?=?reg;

buffer[1]?=?data;

if(?2!=?i2c_master_send(client,buffer,2)?)?{

printk(?KERN_ERR?"?tvp5158_i2c_write?fail!?\n"?);

return?-1;

}

return?0;

}

其實挺簡單的,沒有什么復雜的代碼。下面再看看讀時序。

由上圖可以,讀時序需要做的操作是,先向I2C總線上寫入需要讀的寄存器地址,然后讀I2C總線上的值。代碼寫起來也不難,示例如下:

static?int?tvp5158_i2c_read(?struct?i2c_client*?client,uint8_t?reg,uint8_t?*data)

{

//?write?reg?addr

if(?1!=?i2c_master_send(client,&reg,1)?)?{

printk(?KERN_ERR?"?tvp5158_i2c_read?fail!?\n"?);

return?-1;

}

//?wait

msleep(10);

//?read

if(?1!=?i2c_master_recv(client,data,1)?)?{

printk(?KERN_ERR?"?tvp5158_i2c_read?fail!?\n"?);

return?-1;

}

return?0;

}

到此為止,Linux下具體如何封裝讀寫芯片寄存器的方法已經介紹完畢,其實并不復雜,希望對初學者有所幫助,文中有什么講述不正確的地方,歡迎留言或者來信lujun.hust@gmail.com交流。

總結

以上是生活随笔為你收集整理的linux i2c 读写函数,Linux下读写芯片的I2C寄存器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲性色视频 | 午夜性视频 | 国产精品成人自拍 | 午夜在线一区 | 奇米影视7777 | 成人三级在线播放 | 日韩在线观看免费 | 欧美一区二区三区观看 | 日爽夜爽 | 日韩有码中文字幕在线观看 | 久久伊人影视 | 一区二区成人精品 | 欧美激情日韩 | 久久视频精品 | 真人毛片97级无遮挡精品 | 免费在线看黄网站 | 亚洲熟妇一区二区三区 | 97综合视频 | 国产成人资源 | 亚洲国产精品一区 | 日韩一区二区高清 | 怡红院成永久免费人全部视频 | 日本aa大片| 久久中文字幕人妻熟av女蜜柚m | 一本到在线观看 | 香蕉视频毛片 | 法国极品成人h版 | 免费古装一级淫片潘金莲 | 欧美一区成人 | 午夜神马福利 | 欧美激情一区二区 | 国产精品一区二区视频 | 色屁屁在线 | 奇米影视久久 | 九九精品网 | 人人干人人插 | 国产成人av一区二区 | 免费视频久久 | 丁香婷婷综合激情五月色 | 美丽姑娘免费观看在线观看 | 伊人网综合网 | 亚洲欧美激情另类 | 国产一区二区三区日韩 | 男女三级视频 | av手机免费在线观看 | 国产精品人成 | 久久黄页| av在线手机版| 精品久久一二三区 | 久久人人爽人人爽人人片av高清 | 7mav视频 | 草草影院在线观看视频 | 又黄又爽的视频在线观看 | 久久久久久91香蕉国产 | 亚洲一区欧美激情 | 少妇高潮一区二区三区99欧美 | av大帝在线观看 | 2019中文在线观看 | 国产成人91 | 欧美日韩中文字幕在线视频 | www.199麻豆 | 国产你懂得 | 激情五月在线 | 中文字幕人妻精品一区 | 四虎在线免费视频 | 日韩综合中文字幕 | 雨宫琴音一区二区三区 | 欧州一区二区三区 | 国产91热爆ts人妖系列 | 国产精品美女久久久久av爽 | 国产精品爱啪在线线免费观看 | 国产欧美网站 | 成人97| 一级伦理农村妇女愉情 | 一区二区国产在线 | 欧美 唯美 清纯 偷拍 | 日本一区二区色 | 九九视频在线播放 | 制服 丝袜 综合 日韩 欧美 | 超碰免费观看 | 国产真实乱人偷精品 | 久久免费电影 | 精品三级 | av片在线免费观看 | 蜜桃久久一区二区三区 | 毛片视频免费 | 在线观看的黄色网址 | 亚洲欧美日韩综合 | 国产农村妇女毛片精品久久麻豆 | 国产又爽又黄无码无遮挡在线观看 | 亚洲免费观看高清在线观看 | 激情另类小说 | 国产激情免费 | 神马午夜电影一区二区三区在线观看 | xxx视频网站| 非洲黑人狂躁日本妞 | 一本色道久久综合 | 青青草成人免费在线视频 | 高h av|