概述
介绍:I2C是常见的一个串行通信接口,用于连接各种外设、传感器等。I2C 总线仅仅使用 SCL、SDA 这两根信号线就实现了设备之间的数据交互。
I2C的体系架构:由I2C核心,I2C总线驱动,I2C设备驱动三部分构成。
I2C核心:提供I2C总线驱动和设备驱动的注册,注销。
I2C总线驱动:I2C总线驱动是对硬件中适配器的实现,适配器可让CPU控制,也可以集成在CPU内部。
I2C 设备驱动:I2C 设备驱动是对 I2C 硬件体系结构中设备端的实现,设备一般挂接在受 CPU 控制的 I2C 适配器上,通过 I2C 适配器与 CPU 交换数据。
I2C 总线驱动
I2C 总线和 platform 总线差不多,只不过 platform 总线是虚拟出来的一条总线,而 I2C 总线是实际存在的。I2C 总线驱动的重点是 I2C 适配器驱动,主要涉及到两个结构体:i2c_adapter 和 i2c_algorithm。在 Linux 内核中用 i2c_adapter 结构体来表示 I2C 适配器。i2c_algorithm 就是 I2C 适配器与 IIC 设备进行通信的方法。
向系统注册设置好的 i2c_adapter有两个函数的原型如下:
int i2c_add_adapter(struct i2c_adapter *adapter)
int i2c_add_numbered_adapter(struct i2c_adapter *adap)
删除 I2C 适配器函数:
void i2c_del_adapter(struct i2c_adapter * adap)
I2C 设备驱动
在 I2C 设备驱动中主要有两个重要的结构体:i2c_client 和 i2c_driver。i2c_client 就是描述设备信息的,i2c_driver 描述驱动内容,类似于 platform_driver。
向 Linux 内核中注册 i2c 设备函数:
nt i2c_register_driver(struct module *owner,struct i2c_driver *driver)
向 Linux 内核中注销 i2c 设备函数:
void i2c_del_driver(struct i2c_driver *driver)
I2C 核心
1 、i2c_adapter 注册/ 注销函数
int i2c_add_adapter(struct i2c_adapter *adapter)
int i2c_add_numbered_adapter(struct i2c_adapter *adap)
void i2c_del_adapter(struct i2c_adapter * adap)
2 、i2c_driver 注册/ 注销函数
int i2c_register_driver(struct module *owner, struct i2c_driver *driver)
int i2c_add_driver (struct i2c_driver *driver)
void i2c_del_driver(struct i2c_driver *driver)
I2C硬件配置:
工作频率:100K 工作方式:半双工
地址:8位 通信:主从机应答
最后
以上就是高贵舞蹈为你收集整理的Linux I2C驱动介绍:I2C是常见的一个串行通信接口,用于连接各种外设、传感器等。I2C 总线仅仅使用 SCL、SDA 这两根信号线就实现了设备之间的数据交互。的全部内容,希望文章能够帮你解决Linux I2C驱动介绍:I2C是常见的一个串行通信接口,用于连接各种外设、传感器等。I2C 总线仅仅使用 SCL、SDA 这两根信号线就实现了设备之间的数据交互。所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复