In our carrier board, we are facing some issues in accessing I2C device (SC16IS752) on I2C1 bus. The device address is 0x92 (1001 001X) where X is read/ write bit. The datasheet talks of 7-bit addressing for I2C interface. Could this be an issue for device not getting accessed. I2Cdetect command detects this device as 0X41.
There are other I2C devices on I2C0 bus having address as shown in image below working fine. ADDR in below image is 0 or 1.
Pls help at earliest.
Can anybody please reply this thread.
The top 6 bits were fixed you can only programing the ADDR.
Does without program ADDR the slave address will be 0x40?
Yes, having top 6 bits fixed, we can program ADDR. If ADDR==0, then slave address is 0X40, but on i2cdetect command this address comes to be 0X20. However, this peripheral showing address of 0X20 is addressable fine.
But there is another peripheral with address of 0X92 which is not getting addressed.
Where X is read/ write bit in this image.
“1001001X” is the byte sent after the START condition. As per I2C protocol, in this the first 7 bits only corresponds to the actual I2C slave address. The 8th bit (here X) is an indication of read/write from the Master.
I2cdetect also takes the first 7 bits only and doesn’t take the 8th bit into account when detecting the slave address.
So the slave address for above configuration would be 1001001 which is 0x49 and i2cdetect should detected this address.
Note that when expecting the above configuration, A1 and A0 pins should be connected to VDD, VSS respectively. Section “10.3 Addressing” of the SC16IS752 datasheet https://www.nxp.com/docs/en/data-sheet/SC16IS752_SC16IS762.pdf has the details regarding this.
Thanks, this helped to clarify the things.
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.