I am seeing a strange behaviour on an I2C waveform, and it is causing an incorrect bit to be read by the master. The master device is an ET1200 EtherCAT ASIC, and my slave is a CY8C3666LTI PSoC which is emulating a 16-bit address EEPROM.
The master is attempting to read a few bytes from the 'EEPROM'. On the logic analyser and oscilloscope, the waveform looks like this:
The logic analyser is interpreting the waveform correctly. The bytes 0x24, 0x04, 0x30, 0x05, etc. can be seen written along the top. However, the ET1200 is seeing every other byte have the top bit set. So it's seeing 0x24, 0x84, 0x30, 0x85, etc.
Looking closely at those bits on the oscilloscope, we can see a malformed clock pulse there. And it's also so close to the preceding data bit, that it's not surprising that a 1 is being seen.
My question is: What could be causing this malformed clock pulse? Has anyone seen this before?