I'm happy to see all the discussion against I2C in the comments here. I thought I was the only one who loathed debugging I2C stuff.
The only things I take exception in the article to is:
> When a single device is on the bus, UART may work just as well.
The problem with UART is clock drift. It's remarkably easy for your two chips to get out of sync if they don't use crystals and don't have autobaud (normally rare). That is one thing that I2C, SPI, and CAN do better. They either don't care as they have a single master clock (I2C and SPI) or they autobaud detect and then adjust (CAN).
The only things I take exception in the article to is:
> When a single device is on the bus, UART may work just as well.
The problem with UART is clock drift. It's remarkably easy for your two chips to get out of sync if they don't use crystals and don't have autobaud (normally rare). That is one thing that I2C, SPI, and CAN do better. They either don't care as they have a single master clock (I2C and SPI) or they autobaud detect and then adjust (CAN).