码迷,mamicode.com
首页 > 系统相关 > 详细

i2c总线注意事项和在linux下使用实战

时间:2019-03-24 00:16:29      阅读:387      评论:0      收藏:0      [点我收藏+]

标签:end   1.5   img   部分   term   tree   设备   vpd   driver   

i2c总线注意事项和在linux下使用实战

技术图片

仔细阅读上图中的下部分文字。

技术图片

注意你的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

i2c总线注意事项和在linux下使用实战

标签:end   1.5   img   部分   term   tree   设备   vpd   driver   

原文地址:https://blog.51cto.com/8906847/2367910

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!