免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3583 | 回复: 3
打印 上一主题 下一主题

[驱动] i2c总线与控制器 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-06-11 16:11 |只看该作者 |倒序浏览
各位大虾:请教一个小问题
linux中一共有几条i2c总线?一个i2c控制器对应一条i2c总线吗?
如果是一一对应的话,为什么使用使用int i2c_register_driver(struct module *owner, struct i2c_driver *driver)注册i2c驱动,
发现所有的驱动都注册在i2c_bus_type这条总线上。

论坛徽章:
0
2 [报告]
发表于 2011-06-11 18:14 |只看该作者
“为什么使用使用int i2c_register_driver(struct module *owner, struct i2c_driver *driver)注册i2c驱动”这是由于LINUX驱动模型决定的,它的模型为驱动-总线-设备,所以需要注册驱动,也需要注册设备。

“所有的驱动都注册在i2c_bus_type这条总线上”,因为驱动是I2C的,所以就要注册到I2C这种类型的总线上,使用相应的I2C方法进行管理。

如果想说的是怎么驱动哪个I2C控制器,它是通过一个ID号来管理的,例如0号I2C接口,1号I2C接口,而I2C设备驱动也是通过指定ID号来挂到相应的I2C接口上。

论坛徽章:
0
3 [报告]
发表于 2011-06-12 22:48 |只看该作者
几个i2c设备挂在同一个i2c控制器上,是靠什么来区分的?
你说的这个ID号,是i2c设备驱动结构体里的id_table吗?
如果不是,你说的这个ID号定义在哪?

论坛徽章:
0
4 [报告]
发表于 2011-06-13 16:06 |只看该作者
几个不同的设备以地址进行区分,我向0x50/0x51和0x80/0x81进行操作,则向不同的设备进行操作。

我说的ID是指I2C控制器的ID,也就是说假设你的CPU有多个I2C控制器,它通过ID来区分的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP