# Multiple I2C devices on Rx daughtercards

**URL:** <https://www.ruby-forum.com/t/multiple-i2c-devices-on-rx-daughtercards/181420>\
**Category:** GNU Radio\
**Created:** [January 11, 2010, 5:56pm UTC](https://www.ruby-forum.com/t/multiple-i2c-devices-on-rx-daughtercards/181420 "2010-01-11T17:56:06Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![ndorphine](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/0ea827/32.png) [@ndorphine](https://www.ruby-forum.com/u/ndorphine)\
**Post date:** [January 11, 2010, 5:56pm UTC](https://www.ruby-forum.com/t/multiple-i2c-devices-on-rx-daughtercards/181420/1 "2010-01-11T17:56:06Z")

</div>

Hi Matt,  
In reviewing the schematic of the dbsrx daughtercard, I noticed that  
there  
are two i2c devices (the EEPROM and the MAX211x receiver chip). In  
general  
for the daughtercards, address bit A1 determines side A or side B, and  
A0  
determines if the card is an rx or tx card, and this is hard-coded by  
the  
USRP itself. So…if a user has two dbsrx cards in their USRP, I think  
the  
EEPROM of the dbsrx on side A would have the same address as the MAX211x  
on  
side B, and vice versa. Wouldn’t this be an issue?

Of course, I’m guessing there is a logical explanation as to how this is  
mitigated, as I found several folks in the archives that mention using  
two  
dbsrx cards simultaneously. Any insight is appreciated.

Also, is there a reason that address bit A2 isn’t used to select  
different  
i2c devices on the same card?

Thanks much…

---

<div class="post-metadata">

**Author:** ![ndorphine](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/0ea827/32.png) [@ndorphine](https://www.ruby-forum.com/u/ndorphine)\
**Post date:** [January 11, 2010, 10:23pm UTC](https://www.ruby-forum.com/t/multiple-i2c-devices-on-rx-daughtercards/181420/2 "2010-01-11T22:23:38Z")

</div>

On Mon, Jan 11, 2010 at 10:51:09AM -0600, John O. wrote:

> Hi Matt,  
> In reviewing the schematic of the dbsrx daughtercard, I noticed that there  
> are two i2c devices (the EEPROM and the MAX211x receiver chip). In general  
> for the daughtercards, address bit A1 determines side A or side B, and A0  
> determines if the card is an rx or tx card, and this is hard-coded by the  
> USRP itself. So…if a user has two dbsrx cards in their USRP, I think the  
> EEPROM of the dbsrx on side A would have the same address as the MAX211x on  
> side B, and vice versa. Wouldn’t this be an issue?

> Also, is there a reason that address bit A2 isn’t used to select different  
> i2c devices on the same card?

I2C devices have a 7-bit address. Some of them are fixed depending on  
the device. E.g., on the 24LC024, the top 4-bits are 1010, which is  
different from the bits hardwired into a low speed A/D, D/A, etc.  
Take a look at the datasheets.

Eric

---

<div class="post-metadata">

**Author:** ![ndorphine](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/0ea827/32.png) [@ndorphine](https://www.ruby-forum.com/u/ndorphine)\
**Post date:** [January 11, 2010, 11:05pm UTC](https://www.ruby-forum.com/t/multiple-i2c-devices-on-rx-daughtercards/181420/3 "2010-01-11T23:05:12Z")

</div>

On Mon, Jan 11, 2010 at 3:04 PM, Eric B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > EEPROM of the dbsrx on side A would have the same address as the MAX211x  
> > Take a look at the datasheets.

Ok…that makes sense. I forgot about the hard-wired top bits. This  
correlates with the code in db\_dbs\_rx.cc that indicates that its i2c  
address  
is either 0x67 or 0x65, depending on which side it is in (along with the  
fact that the schematic has the A1/AS1 address bit controlled from the  
USRP). Tthe MAX211x datasheet shows the addresses as 1100xxxx, but the  
LSB  
is used to indicate read (1) or write (0), so the \_actual\_address of the  
chip is 1100xxx \>\> 1, which is 0110xxx (where xxx correlates with  
A2/A1/A0  
coming from the USRP). I2c always makes my head hurt until I remember  
how  
it works.

Thanks again Eric!
