2
\$\begingroup\$

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 :(

\$\endgroup\$
9
  • \$\begingroup\$ The ADC part number may be relevant here. \$\endgroup\$
    – justing
    Commented Mar 27, 2016 at 2:08
  • 2
    \$\begingroup\$ This part does not have custom slave addresses as far as I can see in the data sheet. \$\endgroup\$
    – Passerby
    Commented Mar 27, 2016 at 2:15
  • 1
    \$\begingroup\$ @Passerby, agreed. And that's not a feature I've ever heard of an I2C slave device having (except uCs). \$\endgroup\$
    – The Photon
    Commented Mar 27, 2016 at 2:17
  • 1
    \$\begingroup\$ [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). \$\endgroup\$ Commented Mar 27, 2016 at 2:21
  • 1
    \$\begingroup\$ You could use something like 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. \$\endgroup\$
    – Passerby
    Commented Mar 27, 2016 at 2:26

1 Answer 1

3
\$\begingroup\$

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.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.