On rare occasions, I get an I2C receiver hangup in a CY7C64215 when the USB I/F is active at the same time as the I2C. This appears to be corrolated with a negative over-shoot of the USB signals at the end of a frame (when both differential lines are driven low on the same clock edge).
I can detect when this happens to the I2C I/F, but have not been able to extract it from this condition via any of the API routines and can only get I2C working again via a full POR. Is there a register bit that I can toggle that does the same thing as a POR to the I2C hardware?
I've attached an oscope image of the USB frame (top trace) and the reflection of the glitch in the I2C signal (bottom trace). This was taken with the I2C signals in high-Z GPIO mode to better show how the glitch propagates between the USB and the I2C driver circuits.
Thanks Much - David G.
Which I2C line does the screen capture show, SDA or SCL? Can you check the SCL line and see if it is being pulled low? Also, the I2C lines should be in Open Drain Low configuration (the user module will set this drive mode automatically) for correct operation.