当 C++ 中的 I2C 值发生变化时得到通知

Getting notified when an I2C-Value changes in C++

我最近开始在我的 raspberry pi 上试验 I2C 硬件。按照本教程 Using the I2C interface 我已经知道如何读取和设置值。但是,我要实现的程序始终需要特定地址上的当前值。所以,我创建了一个线程并在一个永无止境的循环中不断查询值,这对我来说似乎很原始。当 I2C 地址上的值发生变化时,是否有可能以类似事件的方式收到通知? 独立于平台的解决方案也将受到欢迎。

我得到了我想要的。

我为 I2C 总线使用以下中继器:link 结果发现有一个焊桥 (LB2),您可以设置它在 I2C 总线上的值时在 GPIO17 上设置一个信号自上次更改以来的更改。我现在可以相应地收听此事件。

一般来说,I2C总线是没有中断能力的。因此,仅使用 I2C,您所能做的就是轮询芯片以了解某个事件的发生或值的变化。

大多数芯片都有一条中断线(有时甚至不止一条),可以对其进行编程以触发某些事件。这条线的行为取决于芯片。通常它需要启用(使用 I2C 命令)并且需要链接到 GPIO 输入线。对于这些,中断支持可用。