I2C not decoding?

Hi Folks,

I’m using Logic 2.4.14 and have used the last 2 inputs (6 + 7) and connected them to my bus.

It shows the digital signal, but fails to interpret the I2C bus with the analyser.

I have tried changing the speed all the way up to 500 MS/s but still nothing.
I also read in the notes that glitches can occur so I tried a range of values in the glitch filter.

I am using the same common ground for both channels which I presume is ok for this ?
I’d appreciate any ideas or suggestions you might have. It’s been years since I debugged anything like this, so I’m pretty rusty.

Well, after resetting everything, I moved back to channel 0 + 1 switched on the analog as well in case the signal is not very clear, set it the speed to 125 MS/s and it seems to detect something, but not what I expected.

If I run I2C detect, I can see slaves on 0x11, 0x12, 0x1E and so on…

# i2cdetect -y 10
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- 0c -- -- --
10: -- 11 12 -- -- -- -- -- -- -- -- -- -- -- 1e --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 2f 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- 55 -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

I am hoping I can see these slaves addresses in the Saleae.

First, what i2c device(s)/bus are you using, and how are you connecting to it? What pins & signals are you capturing? Your second screenshot shows SDA (ch0) going from -10 … +10V, and SCL (ch1) going >8V on analog? Both waveforms look like two clocks vs. data + clock, and the voltage ranges are pretty high for typical i2c (e.g., voltages are usually 3.3V or 5.0V high, and 0V/GND low for digital I/O between micros and device(s)). Also, SDA typically looks more like a sharkfin waveform (i.e., more rounded rising edges and sharper falling edges) due to the pull-up resistor & open drain electrical interface.

So, first step I’d suggest is to doublecheck the hardware pinouts and all the connections you’re probing are correct. Also, make sure you have a good ground connection, too.

1 Like

Thanks so much for the suggestions BitBob!

You are spot on, I kept looking at the voltage and it was way too high for I2C. I asked the guy that designed the PCB and he confirmed the pinout, but it just didn’t feel right.

So I pulled out a simple trace and went from one of the I2C sensors and found the pinout was completely wrong! After changing to the right pins, it came out as 5v and the I2C signal decoded perfectly.

I guess the lesson here was - don’t rely on out of date documentation or what someone “thinks”, it pays to investigate and trace the pins your connecting to ensure your using the right ones.

1 Like