Hi,
I'm having a bit of trouble with the I2C port on a 28335. The port is connected to a single EEPROM, so the 28335 is master, EEPROM is slave. I'm currently running the code out of RAM using an XDS560v2 emulator, CCS5.2.1.00018.
I can successfully read and write to the EEPROM, and everything works fine until I try and use acknowledgement polling to check for the write completed.
As soon as the EEPROM doesn't reply, I receive a NACK (because it's busy writing, so I'd expect this), but the SCL line is driven low by the 28335. This feature doesn't seem to be described in the reference guide (SPRUG03B), but I did find reference to it on the I2C Tips Wiki (http://processors.wiki.ti.com/index.php/I2C_Tips#User_Response_to_a_NACK), so I try and recover the situation by sending a stop bit, as suggested.
This is where the problem arises - it just doesn't seem to work, and the SCL line refuses to go high again. The only way I seem to be able to get the SCL to go high again is to reset the I2C module, but then successive reads or writes don't work properly because the I2C module thinks that the bus is busy, or still waiting for a stop bit. If I do a full device reset, I can then use the I2C again, but obviously this isn't a real solution!
Does anyone have any idea what's going on?
Thanks in advance,
Regards,
Simon