一、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。这个结构请看