Skip to main content
Topic: i2c Slave Address (Read 2004 times) previous topic - next topic

i2c Slave Address

I am thinking about implementing an microcontroller based I2C slave and I was wondering about the i2c slave address?  Are there concerns similar to USB vendor ids?  How does one get an official address? And if I don't want to pay for that are there accepted work-arounds?


Re: i2c Slave Address

Reply #1
There are collisions in the address space with 7 and 10 bit addressing. Since you are implementing it in code, you can simply define the address you want and change it if any collision occurs.

Many devices have extra pins to set the sub-address to allow multiple identical devices on one bus. That effectively decreases the unique address-space, but allows you to juggle with addresses. So, you could reserve 1..3 pins on the device to set part of the address if you like.

Greetings Bertho

Re: i2c Slave Address

Reply #2
Yeah,  clearly with 7 bits you can't be unique.  I've read that you can give NXP money if you want to be legit about your addressing, but frankly I've not found any reference on the NXP site about where to send the cash?  Have they given up and it's just the wild west?

I'm thinking that with this device it will be easy to reprogram the address, so you could have multiple of said (or not said :) device on the same bus (maybe even more than would be practical for a couple extra pins)

So.... if you want to be a little more than just a hobby device, how do you become legit?

Re: i2c Slave Address

Reply #3
Probably because you need to license their patents if you want to be legit... Page 50 of ... N10216.pdf

That is also why we see TWI and SMbus, which, apart from minor details, are the same as I2C. The SMBus spec includes some assigned addresses and support for dynamic re-addressing.

Welcome to the wild west of hardware protocol specs.


Re: i2c Slave Address

Reply #4
There is a list of assigned addresses, but it hasn't been updated since 1999 so it's a fair bet NXP gave up on the idea. In version 3 of the I2C specification they added a new device identification mechanism that uses registered vendor IDs, but it is separate from addressing. Just stay away from the addresses reserved by the specification (see page 17 in version 4 of the spec) and you'll be fine. Patent fees are only a worry if you're designing a chip. If you're using a microcontroller with built-in I2C support, the manufacturer has already paid any relevant fees.