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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了i2c总线注意事项和在linux下使用实战相关的知识,希望对你有一定的参考价值。

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下使用实战的主要内容,如果未能解决你的问题,请参考以下文章

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

Linux——Linux驱动之玩转I2C(上)应用层下操作已有驱动的I2C设备实战(I2C总线特征时序查询I2C设备节点应用层调用I2C步骤)

Linux——Linux驱动之玩转I2C(上)应用层下操作已有驱动的I2C设备实战(I2C总线特征时序查询I2C设备节点应用层调用I2C步骤)

Linux——Linux驱动之玩转I2C(中)自己实现一个I2C总线client设备(Linux下I2C驱动框架非设备树下的client设备树下添加I2C设备节点)

IIC(I2C)总线设备地址,例如E2PROMCH455G等器件应用

#导入Word文档图片# Linux下I2C驱动架构全面分析