怎么使用linux下自带的at24c02驱动

怎么使用linux下自带的at24c02驱动,第1张

两种方法: 1,直接添加进内核。 a, 比如进入drivers/char/目录,把xxx.c文件拷贝到该目录 b, 修改drivers/char/Kconfig文件,自定义仿照其他选项,添加自己的选项XXX。 c, 修改drivers/char/Makefile文件,添加obj-$(CONFIG_XXX) += xxx.o d, ...

假设手上有一块从淘宝上买来的开发板,我要在开发板的I2C总线上增加一个从设备(如at24c08),那么我要怎样写这个“I2C设备驱动”,让

应用程序可以访问at24c08呢?

先来看一个最简单的i2c设备驱动:

static struct i2c_board_info at24cxx_info = { //所支持的i2c设备的列表

I2C_BOARD_INFO("at24c08", 0x50), //一项代表一个支持的设备,它的名字叫做“at24c08”,器件地址是0x50

}

static struct i2c_client *at24cxx_client

static int at24cxx_dev_init(void)

{

struct i2c_adapter *i2c_adap //分配一个适配器的指针

i2c_adap = i2c_get_adapter(0) //调用core层的函数,获得一个i2c总线。这里我们已经知道新增的器件挂接在编号为0的i2c总线上

at24cxx_client = i2c_new_device(i2c_adap, &at24cxx_info) // 把i2c适配器和新增的I2C器件关联起来,这个用了i2c总线0,地址是0x50。这就组成了一个客户端

at24cxx_client i2c_put_adapter(i2c_adap)

return 0

}

static void at24cxx_dev_exit(void)

{

i2c_unregister_device(at24cxx_client)

}

module_init(at24cxx_dev_init)

module_exit(at24cxx_dev_exit)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8582292.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-18
下一篇 2023-04-18

发表评论

登录后才能评论

评论列表(0条)

保存