Not getting I2C SCL signal on Mini Arduino Pro

Problem is no I2C clock signal is showing on a scope - just sets high.

This is a Mini Arduino Pro (from Sparkfun). I've found A4/SDA & A5/SCL on the inside of the board and they are pulled up with 2.2k. Using the I2C library (http://tinyurl.com/lq4nonl).

First command in Setup is "I2C.begin();

I'm talking to an MCP23017 port expander. When the I2C bus is connected to it, I2C reports "I2C Devices found: 1 Address 32" (0x20) - when disconnected it reports No I2C devices. So something is working...

Yet - I see no clock on A5 and of course no data. I am under the assumption the clock should run all the time...

Are there any special connections or settings with this little board that need to be done to "enable" I2C? It LOOKS like everything is setup right but... nada clock! Ideas?

Harrzack: Yet - I see no clock on A5 and of course no data. I am under the assumption the clock should run all the time...

Then you do not know what "I2C" is.

Go look it up. :grinning:

OH golly-ned! I didn't know I was so stupid... Thanks for clearing that up. Your reply was very helpful and informative... I bow to your superior technical knowledge.

(Just the kind of slap in the face that seems to be de rigor on these forums)

So - you did look it up?


If you want a bit more detail, then when you sit and think about it, it is simply not practical to have a clock running all the time. If you did, it would be difficult to synchronise the serial data stream.

I was about to say "impossible", but that is not correct. You would have to revert to a "packet" protocol containing unique "SYNC" characters to define the start and end of packets with "bit-stuffing" to ensure the sync characters are unique. Whilst possible and indeed used for long-distance communication (but generally not synchronous), this is unnecessarily complex in the application for which I2C is designed.

In fact, the I2C "Clock" is part of the data; it in itself is used to define the start and end of transactions; it is not just a synchronising convenience and in fact, the protocol is on that account, not fully synchronous; timing (albeit determined by the clock) may vary and even temporarily halt.

@Harzack, why are you using that library over the more usual Wire library?