1
\$\begingroup\$

I was going through the following link which describes the "I2C address allocation table"

http://simplemachines.it/doc/IC12_97_I2C_ALLOCATION.pdf

Upon reading the aforementioned information table I was thinking that the device address "0x5x", where "0x5" is the group ID is not used for any of the I2C devices.

Is it possible that I am referring to a very old information?

If NO, then I recently came across a ST product (the below link), which has the address as "0x5x"!

http://www.st.com/resource/en/datasheet/vl53l0x.pdf

I am confused now.

My doubt is: Is it possible to assign a group ID of "0x5" to any I2C device?

\$\endgroup\$
1
\$\begingroup\$

Is it possible that I am referring to a very old information?

Yes, the date on the document is 1999 and the company is Philips Semiconductors, which is now known as NXP.

I2C addresses are allocated by NXP and they can allocate any address they wish. NXP does not publish I2C address list anymore, as it can be abused by companies not wanting to pay licencing fees. Therefore, any list you find, is not guaranteed to be up to date.

\$\endgroup\$
1
\$\begingroup\$

The latest version of the I²C specification says:

Two groups of eight addresses (0000 XXX and 1111 XXX) are reserved for the purposes shown in Table 3.
[...]
Assignment of addresses within a local system is up to the system architect who must take into account the devices being used on the bus and any future interaction with other conventional I²C-buses. [...] If it is known that the reserved address is never going to be used for its intended purpose, a reserved address can be used for a slave address.

So it is indeed possible to allocate any address.

\$\endgroup\$
1
\$\begingroup\$

Note that your ST data sheet shows this device ID as 0x52, and 0x53. These are 8-bit addresses, since I2C bus transactions are always eight bits in length. The least significant bit is not part of the address. It is the "read/write" bit.
Addresses assigned by NXP are often listed as 7-bit, excluding the read/write bit. This can cause some confusion amongst users, who must left-shift this address before setting the least-significant bit to read or write.
When using I2C, it is wise to double-check whether addresses are given as a 7-bit, or are 8-bit justified.

\$\endgroup\$
0
\$\begingroup\$

You're indeed right. Both that table and its modern version here do not list the so-called "0101" "group". However, I would not bother much unless you're designing a completely new I2C-enabled IC that will be widely available to the public. If you do, you will need to contact NXP to get an address allocation, and they will charge you some fee for that.

When designing a device using I2C bus the only thing that should concern you is whether or not you have any I2C address conflicts on your bus. And that can be easily resolved by carefully inspecting the datasheets for the used ICs and keeping in mind that some manufacturers (like ST) use 8-bit addresses and some use 7-bit.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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