linux中,I2C软件体系结构分为3个部分:
1.I2C核心。
即i2c_core.c 。
里面有I2C的通信方法(即algotithm),位于linux内核源代码/drivers/i2c/目录中。
2.I2C总线驱动。
各主芯片,具有I2C通信功能的CPU,都会有相应的一套I2C总线驱动程序。
如i2c_s3c2410.c,i2c_ambarella.c等。
包含了2个重要结构体i2c_adapter,i2c_algorithm。
位于linux内核源代码/drivers/i2c/buses目录中。
还有个i2c_dev.c 把适配器转换成一个设备文件,提供通用的read(),write(),ioctl()等接口。
3.I2C设备驱动。
I2C通信的设备端,如eeprom芯片,RTC芯片,AD芯片SAA7113H。
程序如:i2c_saa7113h.c ,i2c_ds1337.c等。
包含2个重要结构体:i2c_driver,i2c_client。
位于linux内核源代码/drivers/i2c/chips目录中。