I2C驱动程序设计(2)—Linux下I2C子系统的介绍

1.I2C子系统架构

 

  • Linux下IIC的架构模型大概可以分为3层:
    • 第一层是I2C的从设备驱动,它包含图中的device driver和i2c-dev。device driver需要用户编写,i2c-dev由内核实现,包含了I2C设备的通用方法,但是用户不能直接使用这个驱动,需要编写一个用户层驱动,它们2个合起来才可以实现一个驱动程序。
    • 第二层总线驱动,它又叫做总线控制器驱动,比如说芯片内部的I2C控制器的使用需要实现一个驱动程序,比如所需要往I2C总线上传输数据它需要什么方法,需要实现那些函数等等。它包含图中的i2c-adapter和adapter-agio。
    • 第三层是i2c-core,I2C总线和I2C设备驱动的中间枢纽,它提供了I2C总线驱动和设备驱动的注册、注销方法等

2.I2C总线驱动

  • 图中我们可以知道编写i2c驱动有2种实现方法。
    • 第一种是用户自己完全写一个i2c的驱动程序。
    • 另一种方法是使用i2c的通用驱动i2c-dev,然后自己设计一个i2c用户模式驱动。
  • 对于第一种情况,应用程序读写i2c设备的流程是比较明了的。
  • 对于第二种情况的读写流程稍微有点复杂,我们先来介绍另一个比较重要的地方,就是i2c控制器驱动,i2c adapter/algorithm。它是直接操作i2c设备的。里面包含2部分的东西,一个是adapter,适配器的意思,另一个是algorithm,算法的意思。
  • 我们先来分析adapter,打开Linux源代码,搜索i2c_adapter:
/*
 * i2c_adapter is the structure used to identify a physical i2c bus along
 * with the access algorithms necessary to access it.
 */
struct i2c_adapter {
	struct module *owner;
	unsigned int id;
	unsigned int class;		  /* classes to allow probing for */
	const struct i2c_algorithm *algo; /* the algorithm
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值