You need to enable JavaScript to run this app. PCA9555扩展无edge sysfs的GPIO用户空间中断捕获方案问询
优惠活动
大模型
产品
解决方案
定价
更多

PCA9555扩展无edge sysfs的GPIO用户空间中断捕获方案问询

PCA9555扩展GPIO用户空间中断捕获方案

核心疑问答复

  • gpiolib-cdev的lineevent监听机制无法直接用于PCA9555的16个扩展GPIO引脚,该方案确实仅适用于内核能为其分配独立中断号的原生GPIO引脚。PCA9555的扩展引脚本身没有独立中断线,内核不会为单个扩展引脚绑定中断处理逻辑,所以你找不到edge sysfs节点,直接poll扩展引脚的value文件也不会生效。
  • 你不需要监听扩展引脚的事件,只要监听PCA9555的INT引脚对应的CPU原生GPIO中断即可。

具体实现步骤

  1. 确认硬件连接:找到PCA9555的开漏INT引脚连接的CPU原生GPIO编号,记为CPU_INT_GPIO,该引脚是支持独立中断的原生GPIO,可配置边沿触发。
  2. 监听INT引脚中断:
  • 推荐使用/dev/gpiochip<n>字符设备接口:对CPU_INT_GPIO所在的gpiochip设备申请下降沿触发的line event,用poll()监听该事件的文件描述符,收到事件即代表有扩展输入引脚状态发生变化。
  • 也可以用sysfs接口:导出CPU_INT_GPIO为输入,设置edge属性为falling,对value文件执行poll()监听POLLPRI事件即可。
  1. 中断触发后的处理:
    每次收到中断事件后,通过I2C总线读取PCA9555的两个输入寄存器(端口0地址0x00、端口1地址0x01),和上一次缓存的寄存器值做异或对比,就能快速定位到发生状态变化的具体扩展输入引脚,执行对应业务逻辑即可。

注意:PCA9555的中断状态会在你读取输入寄存器后自动复位,无需额外操作清除中断,处理完成后直接回到poll等待下一次事件即可。

内容的提问来源于stack exchange,提问作者Karthik Raj Palanichamy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 14:45:03