This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320C6654: I2C

Part Number: TMS320C6654

Hi,

The customer configure tms320c6654 as a slave-transmitter mode. ICXRDY bit in ICSTR register was set to 1 after i2c initialization.

Bool i2cEn;
/* Unlock the control register */
CSL_FINST(((CSL_DevRegs*)CSL_DEV_REGS)->PERLOCK, DEV_PERLOCK_LOCKVAL,
UNLOCK);

/* Enable the I2C */
CSL_FINST(((CSL_DevRegs*)CSL_DEV_REGS)->PERCFG0, DEV_PERCFG0_I2CCTL,
ENABLE);

do {
i2cEn = (Bool) CSL_FEXT(((CSL_DevRegs*)CSL_DEV_REGS)->PERSTAT0,
DEV_PERSTAT0_I2CSTAT);
} while (i2cEn != TRUE);

Tms320c6654 had a write operation even the master didn't read. Clearing ICXRDY manually can solve that problem. But every time he send data to master, it is the value he sent last time.

1.What may cause ICXRDY set to 1?

2.How to resolve the data shift unexpectedly?