Help understanding I2C?

I’ve only found one old datasheet that describes the SeeSaw protocol:

Prior to finding that, I started documenting it in this thread.

No matter what second byte is sent, I get a NACK. Here, I’m just trying to read the chip id … not technically required when you know what’s connected, but it’s the simplest command … just reads a hard-coded value from the I2C device firmware. The NACK is reported when sending the second byte:

I2C> [ 0x6D 0x00 0x01 r:1 ]

I2C START
TX: 0x6D ACK 0x00 NACK 0x01 NACK
RX: 0xFF NACK
I2C STOP
I2C> [ 0x6D 0x00 0x01 d:500 r:1 ]

I2C START
TX: 0x6D ACK 0x00 NACK 0x01 NACK
Delay: 500us
RX: 0xFF NACK
I2C STOP
I2C>

The board has built-in pull-ups. There is no change in behavior when I disable the buspirate’s pullups.


Stuff that works

Scan command

The scan command finds the device, which also confirms the 0x6D read address / 0x6C write address.

I2C> scan
I2C address search:
0x36 (0x6C W) (0x6D R)

Found 2 addresses, 1 W/R pairs.

Sending only the address

If I only send the first byte, I properly get an ACK:

I2C> [ 0x6D ]

I2C START
TX: 0x6D ACK
I2C STOP
I2C>

Sending to invalid address

If I send to an invalid address, I properly get a NACK:

I2C> [ 0x44 ]

I2C START
TX: 0x44 NACK
I2C STOP
I2C>

BusPirate setting to 3.3V

As expected, this works fine.

BusPirate enabling / disabling pullups

When I enable the pull-ups, all the BP IO show ~3.3V.

When I disable the pull-ups, only BP IO0 (SDA) and IO1 (SCL) show ~3.3V (pulled up by the SeeSaw board, as expected). The remaining BPIO show 0.0V, as expected.

BusPirate setting to 5V

As expected, this works fine. The SeeSaw board bumps both SDA and SCL to 5V as a result. All as expected.

Rigol DS1054

Well, it’s working properly AFTER I disabled the inverted input option on the probe. I had my multimeter, the DUT, and the probe all connected (Aux cable helped).

Only took me 80 minutes or so to track down why triggers and display were so far off on the scope. :rofl:

I don’t use these tools often enough to be efficient with them. I don’t recall ever setting the input to be inverted, so had to convince myself by connecting the probes to plain old VOUT first.

Over-current detection on BP5

Yeah, I shorted stuff multiple times. Love that the BP5 kept the magic smoke in!

Next steps

I hope to get the comms traced on the scope. Maybe I’ll see something, or maybe it will show something useful to others here.


2 Likes