从User Space读取IIO设备数据

时间:2016-04-22 10:52:40

标签: linux iio

我正在使用MPU-9250 Invensense传感器并从Android内核获取其驱动程序并与Linux内核集成。驱动程序正常工作,对内核和节点/ dev / iio:\ device0进行了一些修改,并且还生成了sys文件系统下的文件。所以我假设驱动程序工作正常。

现在,我想使用/ dev / iio:\ device0节点通过应用程序从用户空间读取传感器数据。为此,我需要在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

即使这样也没有显示出来。

请有人告诉我如何阅读数据。

此致

1 个答案:

答案 0 :(得分:0)

我相信您的问题与您未启用任何扫描元素的事实有关。

扫描元素位于: / SYS /总线/ IIO /装置/ IIO:设备[X] / scan_elements

在这里,您应该启用要捕获的扫描元素。你应该有3个带后缀的文件:_en,_index和_type。

_type指的是扫描类型,index是将在设备读取时分配给扫描的通道,而_en是指“启用”状态。只需在要启用的scan _en文件中写入“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

希望有所帮助。