0
votes

TMP102 chip( http://www.ti.com/lit/ds/symlink/tmp102.pdf ) can have multiple I2c slave addresses. It has an address pin called ADD0(Section 5) which can be used to select multiple addresses(Section 7.3.4). The logic level at that pin can be used to select a particular TMP102 slave device. According to table 4, 4 addresses are possible. I do understand that connecting the pin to high or low voltage will produce two different addresses. But the table mentions that we can use SDA and SCL pins for two different addresses. I am not sure how this works. Can anyone explain how can this be used and how can we use multiple TMP102 devices based on SDA and SCL pins.

2
I have flagged this question for migration to electronics.stackexchange.com It is not a software related question.Clifford

2 Answers

3
votes

The logic level at that pin can be used to select a particular TMP102 slave device

That is not the purpose of ADD0 - it is a configuration pin, not a select pin. It is not used to select the device; I2C addresses are part of the data stream on SDA, there is no "select" pin as there is on SPI for example.

Rather, ADD0 is used to define the address of each device to one of four defined in Table 4. Those addresses being one of 0x48, 0x49, 0x4A or 0x4B depending on connection of ADD0 to GND, V+, SDA or SDL respectively. Like so:

enter image description here

How the device determines the address is not revealed in the datasheet and you don't really need to know, but given:

enter image description here Public domain image by Marcin Floryan from https://en.wikipedia.org/wiki/I%C2%B2C

at the start condition at the falling edge of SDA the following occurs:

ADDR ADD0 SDA SCL
0x48   0   v   1
0x49   1   v   1
0x4A   v   v   1   
0x4B   1   v   1

Then on the next falling edge SCL

ADDR ADD0 SDA SCL
0x48   0   0   v
0x49   1   0   v
0x4A   0   0   v   
0x4B   v   0   v

So it is possible with suitable sequential logic to latch the address by the end of the S phase and before B1 which is sufficient because the address match does not occur until B7, and all devices on the bus must listen for the address.

0
votes

You connect ADD0 to SDA/SCL to get those other addresses. The table shows the address you get based on what ADD0 is connected to.