器件型号: AM263P4-Q1
在 WDT(看门狗计时器)触发并且软件复位后、对 EEPROM_Read 函数的第一次调用会导致程序在 i2c_v1_LLD.c 中的 I2C_LLD_primeTransferPoll 函数的循环中停止(见下文)
这种现象大约每 10 次发生一次。
请告诉我可能的原因和对策(例如每次软件重置后应执行的操作)。
注意:使用的 SDK 为 AM263Px MCU+ SDK 09.02.00。
不可回避的循环:
/*等待总线忙*/
while ((status == I2C_STS_Success)&&
(I2CControllerBusBusy (object->baseAddr)== 0))
{
if (( object->Clock_getTicks()- object->startTicks)>
object->Clock_uskoTicks ((uint64_t)(object->currentMsg -> timeout))
{
STATUS = I2C_STS_ERR_TIMEOUT;
}
}