I2C总线设备驱动框架

编写I2C驱动程序,我们可以参考 \linux-3.4.2\Documentation\i2c 中的一些文档

(1)大致框架

app:   open  read write
-----------------------------------------------------------------------

设备驱动层:知道数据的含义
xxx_read()    xxx_write()
------------------------------------------------------------------------

核心层:给设备驱动层和总线驱动层提供接口函数  

-------------------------------------------------------------------------

总线驱动层:知道怎么发数据,但是不知道数据的含义

-------------------------------------------------------------------------

硬件层:适配器     i2c类设备等

 

(2)如何编写I2C设备驱动
         一般来说,厂家已经提供了总线驱动程序,我们要做的就是编写设备驱动模型,需要编写两个文件 xxx_dev.c   xxx-drv.c。当两个文件xxx_dev.c中提供的设备名字在xxx_drv中的 id_table 中时,就调用xxx_dev中的probe()函数,在probe() 函数中我们可以注册字符设备驱动或者是其它驱动。

(3)dev_xxx.c 文件的编写
static struct i2c_board_info at24cxx_info = {
    I2C_BOARD_INFO("at24cxx", 0x50),
};

static struct i2c_client *at24cxx_client;
static int at24cxx_init(void)
{    
    static struct i2c_adapter *i2c_adap;    
    i2c_adap = i2c_get_adapter(0);
    at24cxx_client = i2c_new_device(i2c_adap , &at24cxx_info);
    i2c_put_adapter(i2c_adap);
    return 0;
}

(4)xxx-drv.c文件
      分配/设置 i2c_driver 结构体,注册函数为:i2c_add_driver(); 在i2c_driver 结构体中的成员函数probe()中做我们想做的事。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值