Electronic – How come the decoder gives a question mark

debuggingdecoderi2coscilloscope

I'm using a scope to debug I2C (bit banging) by letting it capture the signal. I think that the output should be good, but the scope's decoder gives the following:

enter image description here

enter image description here

where there is a question mark after the second byte (I'm doing a multiple-byte read here). Does anyone know what that question mark might mean? Is it an error?

Thanks

— EDIT 1

Add scaled out capture.

— EDIT 2
Having taken @Michael Karas's advice, I have now used another probe for Ch1. Indeed, the old probe was bad and under compensated! However, the decoder still gives a question mark.

enter image description here

Best Answer

Taking a close look at your waveform (now that it is clean with a good scope probe) it can be analyzed as shown below:

enter image description here

The most highly likely cause of the ? in the RIGOL I2C decoder is due to the I2C protocol getting all screwed up.

The first part of the protocol looks very reasonable. Later on it gets pretty messed up and is surely what has led to the problem. I would recommend that a very careful look be taken at the following three areas. Once those are fixed things may start to improve.

Note A. The process of injecting the repeated start looks extremely suspect. It should not require the extra transitions on SDA to get the repeated start to work.

Note B. The transition zone of going from output of the read mode Slave Address to getting ready to read in data has suspect extra transitions on SDA.

Note C. The whole character of the clocking of SCL from this point on is very suspect. The timing of the clock should try to maintain the look of the previous three bytes of the clock timing. As a matter of fact if the previous three bytes of clocking could be tweaked to give closer to a 50% duty cycle it may be an improvement as well.