Let's Make Robots!

I2C Address Question

Hello !

I have decided to jump into I2C after dragging my feet for a couple years..

My question revolves around wanting to get 24+ 7 Segment LED drivers (http://www.adafruit.com/products/879#Description) on the same I2C bus..

As far as I can tell I2C (from a RasPi) supports 7 bit addresses ....  128 devices WOOHOOOO !

But this doohicky has only 3 soldering bits !  NOOOOO!  I was thinking.. hey, mebbe Adafruit decided it was just not roomy enough to have 7 sodering pads .. and if I look hard enough I can solder or short pins so that I can get all 7 bits .. 

Looking at the datasheet - (page 26) - 

I see that the chip "hardwires" the other address bits .. NOOOOOOOOO!

My questions are :

  • Is this common practice..  I've heard of "base address" fron I2C device manufacturers ..  doesn't this (like this case) whipe out a bunch of addresses ?!?!
  • Is there any way around this ?
  • Is there any slave device that is nice enough to give us all 7 bits ??!?
  • WHATS GOING ON !?!? 

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Good find .. and just a couple dollars more than Adafruits... But with an onboard ATMega328 and FTDI header...
Heh, Sparkfun's version appears a lot more "smarter" 

https://learn.sparkfun.com/tutorials/using-the-serial-7-segment-display It uses an arduino to address the 7 segment pins and brings out the i2c lines, plus, it gives you the ability to change the address. https://www.sparkfun.com/products/11441

I see that Maxim has an SPI 8 digit controller. Add a single line controlled shift register, http://www.edn.com/design/systems-design/4410875/One-I-O-line-drives-shift-register-with-strobe , and you can control up to 8 more sets of 8 with a single shift register and only 3 lines. :) Admittedly, more chips and salsa are required for that.

Found this 

(gratiously lifted from here - http://forum.arduino.cc/index.php?topic=50930.0)

Which seemed like a feasible work-around .. although it does require more chips & salsa :(
and a bunch of work to get my 4 bits back Grrrrr... 

Unfortunately yes which actually defeats the purpose of I2C for us robot builders. I've run into this problem before.

Some 32bit processors (not sure about the Pi) have 2 or more I2C busses that helps to get around this problem.

In rare cases (check the manual) the other address bits can be configured in firmware or are PROM, program once and then read only.

The only work around I can think of is to use one or more ATmega8 chips as slave processors, each with it's own I2C bus. As 3 bits gives you 8 addresses you would still need 16x I2C busses to use 128 devices.

Most i2c devices have just a few addresses based off a base address. You may find some that have them all though.

Programmable things like uC have it where you can choose more adreeses.