我使用的是MPU-9250 Invensense传感器,它的驱动程序来自Android内核,并与Linux内核集成。驱动程序运行良好,对内核和节点/dev/iio:\device0进行了一些修改,还生成了sys文件系统下的文件。所以我认为司机工作正常。
现在,我想使用/dev/iio:\设备0节点从应用程序的用户空间读取传感器数据。为此,我需要打开读关闭功能在mpu-9250驱动程序。但是驱动程序中没有可用的文件操作。
我试图从sys文件系统读取数据,即,

# echo 1 > /sys/bus/iio/devices/iio:device0/power_state
# echo 1 > /sys/bus/iio/devices/iio:device0/accel_enable
# echo 100 > /sys/bus/iio/devices/iio:device0/buffer/length
# echo 1 > /sys/bus/iio/devices/iio:device0/buffer/enable

之后,它应该填充从传感器读取的数据。但什么都没显示出来。所以在这之后我试着从dev文件系统读取数据
# cat /dev/iio:\device0

即便如此,也没有任何表现。
请有人告诉我如何阅读数据。
当做

最佳答案

我相信你的问题与你没有启用任何扫描元素有关。
扫描元素位于:
/sys/bus/iio/devices/iio:device[x]/扫描元素。
在这里,您应该启用要捕获的扫描元素。你应该有3个后缀为“en”、“index”和“type”的文件。
_类型是指扫描的类型,索引是在设备读取和打开哪个状态“启用”时为扫描分配的通道。只要将“1”写入要启用的扫描文件,写入/buffer/length 100和/buffer/enable“1”,就应该开始获取数据。
我不认为这是您的问题,因为您可能根本无法启用缓冲区,但您可能需要启用触发器,该触发器也应位于/sys/bus/iio/devices中。这里应该有trigger1/2/3目录,这取决于您拥有的iio设备的数量。您可能需要将触发器名称写入/sys/bus/iio/devices/iio:device[x]/trigger/current_trigger。
所以你应该:

echo /sys/bus/iio/devices/trigger[x]/name >
/sys/bus/iio/devices/iio:device[x]/trigger/current_trigger

希望有帮助。

10-08 02:23