Linux I2C驱动个人理解(一)

首先是i2c_driver,i2c_client,i2c_adapter,i2c_algorithm。这四个结构体至关重要,先来梳理一下关系以及作用。

1)i2c_adapter i2c_algorithm

i2c_adapter对应于物理上的一个适配器,i2c_algorithm为一个通信方法。i2c_adapter需要i2c_algorithm 提供的的通信函数来控制,所以i2c_adapter的中需要使用i2c_algorithm 的指针。i2c_algorithm 中最重要的函数master_xfer()也就是数据传输函数,需要用到一个结构体。

struct i2c_msg{
__u16 addr; //地址
__u16 flags;//标志
__u16 len; //长度
__u8 *buf; //数据


}

2)i2c_driver  i2c_client

i2c_driver重要提供了驱动方法:probe(),remove(),suspend(),resume()。i2c_client对应的是设备,简单的说你要有设备要连接板子,怎么连接的,用了哪些管脚就怎么写。

下面举个例子:

static struct i2c_boart_info __initdata sc2xx_i2c_board_info[]={


I2C_BOARD_INFO("xx_i2c",0x14),
.irq =IRQ_PF4,
...
}

3) i2c_adpater i2c_client

i2c_adpater与i2c_client的关系与I2C硬件体系中的适配器和设备关系保持一致。

********************************************************分割线***************************************************************

如何写一个I2C驱动:

1)提供一个I2C设备适配器的硬件驱动

2) 配置适配器,也就是说用algorithm来配置i2c_adapter 

3)具体实现i2c_driver的接口

4)也就是最后要的字符设备读写接口了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值