i2c总线与控制器
各位大虾:请教一个小问题
linux中一共有几条i2c总线?一个i2c控制器对应一条i2c总线吗?
如果是一一对应的话,为什么使用使用int i2c_register_driver(struct module *owner, struct i2c_driver *driver)注册i2c驱动,
发现所有的驱动都注册在i2c_bus_type这条总线上。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
“为什么使用使用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接口上。
几个i2c设备挂在同一个i2c控制器上,是靠什么来区分的?
你说的这个ID号,是i2c设备驱动结构体里的id_table吗?
如果不是,你说的这个ID号定义在哪?
几个不同的设备以地址进行区分,我向0x50/0x51和0x80/0x81进行操作,则向不同的设备进行操作。
我说的ID是指I2C控制器的ID,也就是说假设你的CPU有多个I2C控制器,它通过ID来区分的。