工具/软件:Code Composer Studio
下午好!
我正在使用 Tiva 的 I2C 总线与电路板上的一组不同插件传感器模块进行通信。 它工作得很好。 我遇到的问题是、在某些情况下、其中一个传感器可能缺失(未插电)。 发生这种情况时、我的代码卡在 I2C 例程中。 在这种情况下、有人能建议一种合适的方法来逃离并返回0或 FF 吗? 我更愿意避免使用计时器。 是否有一个标志可供我检查、以查看从器件是否未响应?
谢谢!
uint32_t I2C3Receive1 (uint32_t slave_addr、uint8_t reg)
{
//指定我们要向写入(寄存器地址)
//从器件
I2CMasterSlaveAddrSet (I2C3_base、slave_addr、false);
//指定要读取的寄存器
I2CMasterDataPut (I2C3_base、reg);
//将控制字节和寄存器地址字节发送到从器件
I2CMasterControl (I2C3_base、I2C_MASTER_CMD_BURST_SEND_START);
//等待 MCU 完成事务
while (!I2CMasterBusy (I2C3_base));
while (I2CMasterBusy (I2C3_base));
//指定我们将从从从器件读取
I2CMasterSlaveAddrSet (I2C3_base、slave_addr、true);
//发送控制字节并从我们的寄存器中读取
//specified
I2CMasterControl (I2C3_base、I2C_MASTER_CMD_SINGLE_Receive);
//等待 MCU 完成事务
while (!I2CMasterBusy (I2C3_base));
while (I2CMasterBusy (I2C3_base));
//返回从指定寄存器提取的数据
返回 I2CMasterDataGet (I2C3_base);
}