一些背景知识:
我有一个i2c设备(MCP23017),它有6个连接到其GPIO端口的开关。 MCP23017通过i2c连接到Raspberry Pi。
我可以根据需要读取每个开关的状态。
我的问题是关于中断。我正在使用Python的WiringPi2库,它允许我在Python下与MCP23017连接。根据我所做的研究,WiringPiISR库允许运行i2c中断协议,尽管它似乎只能在C下正常工作。
我的问题是:在Python下实现i2c中断有一个简单的解决方案吗?
我正在考虑为此特定项目删除Python for C,但GUI界面已经编写(在Python中),所以我想将其作为最后一个选项。
非常感谢任何指导/意见/建议!
谢谢!
答案 0 :(得分:0)
据我所知,WiringPiISR库只允许您将Pin配置为中断并定义其类型(即基于边缘或基于级别)。由于您正在谈论I2c中断,因此您无法获得I2C中断,因为在这种情况下,您的Rpi作为主设备而其他连接的设备作为从设备。由于在I2C中,通信始终由主站启动,因此从站不能中断您。 (至少不通过I2C通道)
希望它有所帮助。
答案 1 :(得分:0)
有些设备除了 I2C 线外还有一条中断线。例如,我有一个来自 duppa.net 的旋转编码器 I2C 接口板,它有 5 个引脚 - SDA、SCL、+、- 和中断。
随附的 python 库将 Raspberry Pi GPIO 4 线配置为输入边沿触发中断并设置回调。发生变化时(例如旋转编码器旋转),中断线摆动,中断处理程序通过 I2C 读取状态寄存器并调用适当的回调。
因此,在 I2C 的上下文中,这完全是传统的中断用法,用于执行使主设备不必轮询总线的常规任务。