Linux I2C 驱动阅读的碰到的一些网上没有提到的东西

本文详细介绍了Linux I2C驱动中master_xfer方法和i2c_msg标志位,如I2C_M_IGNORE_NAK、I2C_M_NOSTART等,分析了它们的作用和应用场景,并探讨了在不同操作中的使用注意事项,特别是与器件地址和读写操作的关系。

一、master_xfer,以及i2c_msg标志位
      其实抛开子系编本身其它部份,实现I2C的主要作用代码就是algorithm里的master_xfer方法。这个方法就是我们无操作系统时的的I2C读写函数(它用参数来区分读和写)。分析这些代码,最好是读内核的i2c-algo-bit.c文件,这个文件就是用模拟的方法来实现I2C总线,因为不和其它I2C控制芯片相关,所以比较好理解。i2c-algo-bit.c其中的master_xfer函数bit_xfer函数如下:

其实也并不复杂
      1)i2c_start函数发start信号
      2)i2c_repstart函数发重复start信号
      3)bit_doAddress函数写器件地址
      4)readbytes函数读N字节
      5)writebytes函数写N字节

其中的每一个函数都不复杂,都是设置或读取scl和sda线。
bit_xfer函数参数只要是i2c_msg序列msgs。这个结构请看

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值