在不从用户空间提供寄存器地址的情况下读取字(2字节) [英] Read a word (2 byte) without providing a register address from userspace
本文介绍了在不从用户空间提供寄存器地址的情况下读取字(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屋!
查看全文