1

我正在使用 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

在此之后,它应该填充从传感器读取的数据。但是什么都没有显示。所以在此之后我尝试从开发文件系统中读取数据

# cat /dev/iio:\device0

即便如此,什么也没有显示。

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

问候

4

1 回答 1

0

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

扫描元素位于:/sys/bus/iio/devices/iio:device[x]/scan_elements。

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

_type 是指扫描的类型,index 是在设备读取中为扫描分配的通道,_en 是“启用”状态。只需将“1”写入您希望启用的扫描_en文件,写入/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

希望这有帮助。

于 2016-11-11T20:57:48.313 回答