-2

我正在尝试从用户空间中的 C 读取 i2c 环境光传感器 BH1750。我在 Linux 上使用 BeagleBone 口袋。

数据表说,在测量操作之后,需要使用以下 i2c 序列读取结果:S Adr Rd (A) (Data) A (Data) NA P.

我遇到的问题:我发现的所有示例/命令要么只读取 1 个字节,要么需要一个寄存器地址才能读取更多。

我找到的最接近的是以下命令:i2c_master_recv(). 但是我对文档的解释是这个命令用于内核设备驱动程序。

如何从用户空间发出这样的 I2C 读取序列?

4

1 回答 1

0

我能够使用 Ian Abbott 的评论解决它:

假设已经打开了I2C控制器,并且已经使用I2C_SLAVE ioctl命令设置了Adr,那么长度为2的read syscall会执行上面的I2C读取事务。– 伊恩·雅培 10 月 4 日 13:45

这是生成的 I2C 通信的逻辑分析器跟踪:

痕迹

于 2021-10-16T11:28:51.700 回答