我在 imx6ul 板上有一个 MMA8563 加速度计,并且正在使用 mma8452.c Linux IIO 驱动程序。我可以通过 /sys/bus/iio/devices/iio:device0 访问 x、y、z 原始值。
但是,我不确定如何使用 IIO 事件。我使用以下命令在加速度计中配置了运动检测:
# echo 15 > events/in_accel_mag_rising_value
# echo 1 > events/in_accel_mag_rising_period
# echo 1 > events/in_accel_x_mag_rising_en
我在驱动程序代码中放置了调试打印语句,可以看到当我移动设备时触发了中断。我看到驱动程序然后调用 iio_push_event() 函数。我还可以看到每次移动设备时 /proc/interrupts 中的中断号都会增加。
从用户空间,我怎样才能访问这个中断或事件?我希望能够知道设备何时处于运动状态。
驱动程序在 /dev/iio:device0 中创建一个缓冲区和一个字符开发,但这似乎仅在我在 scan_elements 目录中启用 x、y 或 z 时才会填充。