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.

C6748 I2C Problem

Hello,

I'm faced with a hardware problem on I2C module of C6748.

I was testing my C6748 boards, connecting one board to another with I2C bus. As for one board, I configured the I2C0 module of C6748 to be a master, while the other board was set to be a slave.

I tried to run I2C register access load test on the slave board, but the master board became impossible to access the I2C0 of the slave board. Incidentally, the USB module and the I2S module of the slave board were running during the I2C test.

I checked the slave board and found that the I2C0 module had broken down. (The master board was OK.)
On the broken board, I was not able to access I2C0 from I2C1 of its own. I can access I2C0 from I2C1 on normal boards, of course.

I conducted a further investigation on the broken board.
I set the ICPFUNC register (I2C Pin Function Register) to configure the I2C0_SCL and I2C0_SDA pins to function as GPIO. I configured the both pins as output (ICPDIR register), and I drove the pins high or low (ICPDOUT register).
I measured the output of the pins with an oscilloscope, and at the same time, I read the ICPDIN register to check the value of the pin. Note that ICPDIN register allows the actual value of the pin to be read regardless of the state of PDIR bits.

The following is the result:

 - Output HIGH to SDA, measured HIGH on oscilloscope, but read LOW on ICPDIN; Abnormal.
 - Output HIGH to SCL, measured HIGH on oscilloscope, and read HIGH on ICPDIN; Normal.

 - Output LOW to SDA, measured LOW on oscilloscope, and read LOW on ICPDIN; Normal.
 - Output LOW to SCL, measured LOW on oscilloscope, and read LOW on ICPDIN; Normal.

Secondly, I set the PINMUX register to configure the I2C0_SCL and I2C0_SDA pins to function as GPIO1_4 and GPIO1_5. I used the DIR01, OUT_DATA01 and IN_DATA01 registers to run a similar test.

 - Output HIGH to GPIO1_4, measured HIGH on oscilloscope, but read LOW on IN_DATA01; Abnormal.
 - Output HIGH to GPIO1_5, measured HIGH on oscilloscope, and read HIGH on IN_DATA01; Normal.

 - Output LOW to GPIO1_4, measured LOW on oscilloscope, and read LOW on IN_DATA01; Normal.
 - Output LOW to GPIO1_5, measured LOW on oscilloscope, and read LOW on IN_DATA01; Normal.

I didn't use the I2C0 module on the second test, but the result corresponds to the first test.
Both the I2C0 function and the GPIO function are broken on the same pin.
I guess the input gate of the final stage of the pin might have broken down.

This problem has been reproduced on multiple boards.
Is there any possible cause or explanation of this phenomenon?
How can I avoid this problem?
Should I take some sort of care on the circuit?

Any advice will be greatly appreciated.
Thank you!