【发布时间】:2021-10-02 20:40:24
【问题描述】:
我正在尝试从用户空间中的 C 读取 i2c 环境光传感器 BH1750。我在 Linux 上使用 BeagleBone pocket。
数据表说,在测量操作之后,需要使用以下 i2c 序列读取结果:S Adr Rd (A) (Data) A (Data) NA P。
我遇到的问题:我发现的所有示例/命令要么只读取 1 个字节,要么需要一个寄存器地址才能读取更多。
我找到的最接近的是以下命令:i2c_master_recv()。
但是我对文档的解释是这个命令是在 kernel-device-drivers 中使用的。
如何从用户空间发出这样的 I2C-Read-Sequence?
【问题讨论】:
-
它有内核驱动程序elixir.bootlin.com/linux/latest/source/drivers/iio/light/…,所以使用它!
-
假设I2C控制器已经打开,并且已经使用
I2C_SLAVEioctl命令设置了Adr,那么长度为2的read系统调用就会执行上述I2C读取事务。
标签: c linux-device-driver i2c userspace iio