十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
仔细阅读上图中的下部分文字。
注意你的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
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。