在不从用户空间提供寄存器地址的情况下读取字(2字节) [英] Read a word (2 byte) without providing a register address from userspace

查看:12
本文介绍了在不从用户空间提供寄存器地址的情况下读取字(2字节)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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

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

我找到的最接近的命令是:i2c_master_recv()。 然而,我对文档的解释是,此命令用于内核设备驱动程序。

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

推荐答案

我使用Ian Abbott的评论解决了这个问题:

假设I2C控制器已打开,且已使用I2C_Slave ioctl命令设置ADR,则长度为2的读取系统调用将执行上述I2C读取处理。- 伊恩·阿博特 10月4日13:45

以下是逻辑分析器-生成的I2C通信的跟踪:

这篇关于在不从用户空间提供寄存器地址的情况下读取字(2字节)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆