I2C设备linux驱动程序

I2C设备linux驱动程序,第1张

I2C设备linux驱动程序

感谢大伙们。几个小时前我已经找到了想要的东西。因此,正如我所看到的,有三种类型的驱动程序。应该将其中一个插入内核,然后需要重建内核才能使用它们。您还可以通过

sysfs
using设备属性使用驱动程序(它们显示在中
/sys/bus/i2c/driver/your_driver/
)。第三,我的类型-
看起来像字符设备的驱动程序。实际上,您可以将它们结合起来。

因此,如果要使用最后一种类型的设备,将很难找到正确的示例,因为几乎所有示例都专门针对前两种类型的驱动程序。无论如何,如果要创建字符设备,则需要从

file_operations
结构中描述功能。但是所有函数都像
i2c_transfer
i2c_smbus_read_byte
。等(完整列表)为必填项
struct i2c_adapter
structi2c_client
。还有两个问题,如何到达那里的结构,以及如何将驱动程序连接到适当的i2c总线,例如i2c-2?

因此,有是没有描述的功能在这里:

i2c_get_adapter
。作为参数,您需要传递i2c总线号。它返回到
i2c_adapter
结构的链接。该
i2c_client
结构可以用得到
i2c_new_dummy
的功能传球
i2c_adapter
和从地址到它作为参数。

在此之后,你可以使用的功能,例如

i2c_transfer
i2c_smbus_read_byte
等等。最后,你可以描述
file_operations
的结构功能,并释放驱动程序,代表您的I2C设备,而无需使用的sysfs和重建你的内核。

结果代码如下:

u8 ret; struct i2c_client * my_client; struct i2c_adapter * my_adap = i2c_get_adapter(1); // 1 means i2c-1 busmy_client = i2c_new_dummy (my_adap, 0x69); // 0x69 - slave address on i2c busi2c_smbus_write_byte(my_client, 0x0f); ret = i2c_smbus_read_byte(my_client);

您可以在函数中的file_operations结构中直接使用此代码。

希望此信息对像我这样的初学者有用。



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

原文地址: http://outofmemory.cn/zaji/4935802.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-13
下一篇 2022-11-13

发表评论

登录后才能评论

评论列表(0条)

保存