Hi experts,
My customer has created a prototype board using the MSPM0G1507, but they have observed unexplained behavior in the I2C controller.
The phenomenon is that once communication fails, subsequent attempts either fail or transmit values different from what is intended.
Q1: In I2C controller mode, could you explain cases where the process does not complete (with data remaining in the shift register) and the state transitions to IDLE?
If there are similar known cases, please share them.
Like this:(+) MSPM0G3507: I2C controller mode handling NACK - Arm-based microcontrollers forum - Arm-based microcontrollers - TI E2E support forums
Q2: Also, when the state described in Q1 occurs, what is the recommended recovery procedure?
Currently, after entering I2CController_ Read/Write(), they has added the following reset process.
DL_I2C_reset(I2C1_INST);
DL_I2C_enablePower(I2C1_INST);
SYSCFG_DL_I2C1_init();
The root cause is still under investigation, but we suspect something around the power supply.
We assume that some error occurred during communication, leaving data in the shift register, and the process exited prematurely.
The code structure monitors the I2C controller state and waits until the state becomes IDLE before ending the process.
They also added checks for flags such as TxDONE, but the phenomenon did not change.
Please let us know if any additional information is needed.
Best regards,
O.H