1.IIC协议简介
在之前的ARM裸机里面有介绍:ARM裸机 - I2C通信协议是最常用的协议_一对多i2c-CSDN博客
2.Linux的IIC子系统框架
I2C主机驱动:I2C主机控制器的驱动,一般由SoC芯片厂商负责设计实现,用于控制II2C主机控制器发出时序信号。
I2C Core:为上层提供统一的API接口和对其他模块进行注册和注销等管理等。
I2C 驱动和我们之前接触到的平台总线设备驱动非常类似,都有总线、设备和驱这三者。
I2C驱动框架的主要目标是:让驱动开发者可以在内核中方便的添加自己的I2C设备的驱动程序,从而可以更容易的在linux下驱动自己的I2C接口硬件。
源码中I2C相关的驱动均位于:drivers/i2c目录下。
3.linux内核的I2C子系统源代码分析
I2C子系统的4个关键结构体:
struct i2c_adapter : I2C适配器
struct i2c_adapter {
struct module *owner;
unsigned int id;
unsigned int class; /* classes