2

I've got a couple of ADCs on the same I²C bus, which all default to the same address. My first instinct tells me to use an I²C multiplexer like the TCA9544A but that would require sending a byte to the MUX before getting the data from the ADC and I'd like to avoid that (since I need to continuously read data pretty much as quickly as I can).

The ADCs do support custom address assignment through I²C so I just need to make sure, that I'll send the configuration byte to one single ADC. I could include a FET into the SDL line to every ADC so that I'd have only one ADC connected during address assignment but there's probably a much more elegant solution since there must be a bunch of people out there having the same issue. My google search terms are just not good enough to find the answer :(

Clayton Louden
  • 263
  • 3
  • 13
  • The ADC part number may be relevant here. – justing Mar 27 '16 at 02:08
  • Oh, sorry, it's the MAX11617 (https://www.maximintegrated.com/en/products/analog/data-converters/analog-to-digital-converters/MAX11617.html) – Clayton Louden Mar 27 '16 at 02:09
  • 2
    This part does not have custom slave addresses as far as I can see in the data sheet. – Passerby Mar 27 '16 at 02:15
  • 1
    @Passerby, agreed. And that's not a feature I've ever heard of an I2C slave device having (except uCs). – The Photon Mar 27 '16 at 02:17
  • Whoops, I'm sorry. I²C multiplexer it is then. :) – Clayton Louden Mar 27 '16 at 02:19
  • 1
    [Your question is now belong to us, and we're not done yet, @Clayton.] I wanted to add that I²C address collision is a sufficient reason to look for another equivalent A/D chip that would have address selection pin(s). – Nick Alexeev Mar 27 '16 at 02:21
  • 1
    You could use something like http://cds.linear.com/docs/en/datasheet/4317fa.pdf which allows for transparent address changes. No need to add an extra transaction to switch the bus. – Passerby Mar 27 '16 at 02:26
  • [How to connect multiple of the same device to an Arduino using I2C?](http://electronics.stackexchange.com/questions/130235/how-to-connect-multiple-of-the-same-device-to-an-arduino-using-i2c) has some good information and links. Beyond what was mentioned so far, the TI document [Troubleshooting I2C Bus Protocol](http://www.ti.com/lit/an/scaa106/scaa106.pdf), section 3, suggests an I²C buffer as another option. – mcmayer Mar 27 '16 at 04:39
  • Thank you guys very much! I think the LTC4317 looks like an excellent solution so my problem... – Clayton Louden Mar 27 '16 at 12:40

1 Answers1

3

This problem is, indeed, pretty common. Here is the typical solution...

(All of this presumes you have spare pins to use, which vary well may not be the case.)

If the chip has a chip enable (CE) pin, you should be able to use that to allow multiple identical devices on the same bus and address. Unfortunately, your specified chip does not have this pin :(

Alternately, power the chips from MCU pin[s], which will have similar effect.


The first is the better option, since the chip won't necessarily need to be configured each time, and could potentially be running ADC captures while a different chip is using the bus.

Otherwise, the chip will require some startup and acquire time each time it's enabled/started. This will hurt bandwidth/latency, but that could be hidden.


If it can't be done the CE way, and the alternative is too problematic for you, then yes, you will most-likely need some kind of buffer IC. They do make units that do not require a config command. See mcmayer's comment to the original post.

Charlie
  • 348
  • 1
  • 9