首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux IIO加速度计运动检测事件

Linux IIO加速度计运动检测事件
EN

Stack Overflow用户
提问于 2018-07-02 21:57:16
回答 1查看 473关注 1票数 3

我在一个MMA8563板上有一个imx6ul加速度计,并且正在使用mma8452.cLinuxIIO驱动程序。我可以通过/sys/bus/iio/设备/iio:device0 0访问x、y、z原始值。

但是,我不知道如何使用IIO事件。我已经使用以下命令在加速度计中配置了运动检测:

代码语言:javascript
复制
# 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 0中创建一个缓冲区和一个char :device0 0,但这似乎只在我在scan_elements目录中启用x、y或z时才会填充。

EN

回答 1

Stack Overflow用户

发布于 2022-10-09 03:14:02

应用程序可以通过从ioctl()请求IIO_GET_EVENT_FD_IOCTL/dev/iio:devicex文件描述符获得的特殊文件描述符读取事件,如下所示:

代码语言:javascript
复制
struct iio_event_data event;
int fd, event_fd;

fd = open("/dev/iio:devicex", 0);
ioctl(fd, IIO_GET_EVENT_FD_IOCTL, &event_fd);
read(event_fd, &event, sizeof(event)); 
/* Instead of read(), may also use select() or poll() etc. */

参考:

monitor.c

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51144210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档