Part Number: AM263P4-Q1
After the WDT (Watchdog Timer) fires and the software is reset, the first call to the EEPROM_read function causes the program to halt in the loop (see below) within the I2C_lld_primeTransferPoll function in i2c_v1_lld.c.
This phenomenon occurs approximately once every 10 times.
Please tell me the possible causes and countermeasures (such as what should be done after each software reset).
Note: The SDK used is AM263Px MCU+ SDK 09.02.00.
An inescapable loop:
/* wait for bus busy */
while((status == I2C_STS_SUCCESS) &&
(I2CControllerBusBusy(object->baseAddr) == 0))
{
if (( object->Clock_getTicks() - object->startTicks) >
object->Clock_usecToTicks((uint64_t)(object->currentMsg->timeout)))
{
status = I2C_STS_ERR_TIMEOUT;
}
}