I2CChip.com: Monitoring I2C Bus

There are 2 styles of monitoring the I2C Bus:



Sending Messages TO the PC

There are several ways to do this:

I2C TO RS232 Chip

We have been asked for a chip for this. If we get enough requests, we will make it available.

Dual Port Memories

Dual port I2C mnemories are made for DDC (monitors). An example is the Microchip 24LC41.

It has two completely separate I2C busses, which can both access the eeprom simultaneously. This means there are no issues of multi-mastering the bus. Just write when you want. Its just too-easy.

This solution provides your equipment with EEProm that can be used to store data, as well as allowing a PC to read out the diagnostics any time it wishes.

Typically we keep a count of hours-run, number of power-ons, number of watchdog time-outs for all systems we make.

Another good idea is to normally use an ordinary I2C EEProm, but when you want to do some diagnostics, just plug the special dual-port version, and connect to the PC with an I2C-2-PC adaptor.

Semaphore Memories

You can use a simple I2C ram chip (philips) or use the ram in something else such as an RTC chip like philips PCF8583. It has 240 bytes of ram free for storing data, and writing diagnostic messages.

Then you pick the messages up from the PC using the I2C-2-PC adaptor.

As it is a lot more work for most users to support a multi-master bus, you can just use one of the I2C-2-PC ports to hold the systems micro in reset while you collect the data

Back to Top
Back to Home

Bus Monitoring

Back to Top
Back to Home


  1. Check the power supply to all devices
  2. Check that SDA and SCL go to devices, and are not swapped or shorted together
  3. Try using the bus to write to a known good device, I find it very useful to have a board with a PCF8574 and 8 LEDS. It is useful later for debugging programs
  4. Use a scope to monitor the bus. Check that the levels are valid.
  5. Check that SDA transitions happen when SCL is LOW. (except start and stop)
  6. A circuit that detects START/STOP is very useful for triggering the scope at this point. An alternative is to use a micro pin to signal that an I2C transaction is about to begin.
  7. Use the scope to check the start condition is correct, ie SDA falls when SCL is high
  8. Count the number of SCL edges in the address byte: I2C has 9 bits per byte.
  9. Check to see if there is an ACK bit, ie does the slave respond
  10. If the basic chip functions are OK, but the whole system doesn't go, you might want a protocol analysing tool to store long sequences in a form you can pore over.


Contact Information

Phone +64 21 623-402

Back to Top

Comments and Suggestions

Please send us mail telling us what you think about this page and how we might improve it.

Back to Top