基本上,我正在做一个项目,在这个项目中,我们有5个设备,它们将通过i2c线路向控制器(TM4C1294NCPDT)发送自己的温度数据。 如果温度超过阈值,我们将使用相应的器件GPIO引脚关闭特定器件。
因此,这些设备按如下方式连接到控制器-- I2C0-设备1 I2C1 -设备2,3 和I2C2 -设备4,5。
在这里,我们能够逐个从所有设备读取数据。但是,从所有5个设备中检测断开的设备正成为一项挑战。 让我们考虑一下,我们是逐个从所有设备获取数据,例如,我们首先尝试从设备1,然后从设备2,3获取数据,以此类推,直到现在最后一个设备, 这里假设由于温度过高而突然切换了设备3 (如上所述),则在这种情况下,控制器卡在以下While循环中
//Initiate send of data from the MCU
I2CMasterControl(I2C0_BASE, I2C_MASTER_CMD_BURST_SEND_START);
// Wait until MCU is done transferring.
while(I2CMasterBusy(I2C0_BASE));
由于此控制器未从设备4和5读取数据。
所以,有人能帮我理解,如果从I2C总线断开任何一个从属设备,那么在这种情况下,如何处理这种情况,并转到连接到控制器的其它从属设备。
我们非常感谢您的任何帮助!
此致
Omkar