请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS570LC4357 您好!
我在 I2CSTR 寄存器中等待 ACK/NACK 标志时遇到问题、也就是说我如何知道标志状态是最新的(它对应于最新的操作)? 我当前所做的是将数据压入 I2CDXR 寄存器、我想等待、看看从器件是否使用 ACK 进行响应-我如何知道何时读取寄存器-我无法立即读取、因为它不会被置位 然而。
伪不工作代码:
HWREG_WRITE_32(pI2C->DXR, byte);
// Note that this will never evaluate to True....
if (0U != (HWREG_READ_32(pI2C->STR) & (1U << I2C_STR_NACK_POS)))
{
// Nack received
}
伪工作代码:
HWREG_WRITE_32(pI2C->DXR, byte);
Delay(100);
if (0U != (HWREG_READ_32(pI2C->STR) & (1U << I2C_STR_NACK_POS)))
{
//Nack received
}
延迟方法可行、但它远非理想-有什么想法可以 改进它?
有什么想法吗?