相关疑难解决方法(0)

是否有通用的I2C命令来查看总线上是否仍有设备?

是否有一般的I2C命令来查看设备在初始化一次后是否仍然存在?例如OLED显示器.我之所以这样做的原因是为了避免主程序冻结(当设备断开连接时),因为库代码中存在无限循环,例如Wire库.

在启动MCU时,我想检查设备是否可用,并在设备可用时进行初始化.我用这个功能这样做,工作得很好.....

bool MyClass::isPnpDeviceAvailable( uint8_t iAddress, bool bIsInitOnce = false )
{
     // Try to start connection
    Wire.beginTransmission( iAddress );

     // End connection without STOP command if already is initialized
    return ( Wire.endTransmission( !bIsInitOnce ) == 0x00 ); // No Error?, return true
}
Run Code Online (Sandbox Code Playgroud)

....但是,当我想检查设备是否仍然存在时,在执行更新之前,当我这样做时:

// 1.
if( isPnpDeviceAvailable( 0x3C, true )) 
 { /* Cause program hang */ }
// 2.
if( isPnpDeviceAvailable( 0x3C )) 
 { /* Cause display to turn off  */ }
Run Code Online (Sandbox Code Playgroud)

是否有通用命令,说/只发送一个"Hello,你在那里"并等待回复而不发送START和STOP命令而不中断设备/总线状态?


这是我用附件(可选的PNP I2C)显示器制作的原型设备.

具有PNP I2C显示的设备

c++ arduino i2c bus

5
推荐指数
1
解决办法
1417
查看次数

标签 统计

arduino ×1

bus ×1

c++ ×1

i2c ×1