This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

What is the difference between the DEVICEID and DEVICEADDR?

I've looked at the reference manual and the several forum questions asking the same question and do not understand the answers as they all seem to point to the same docs/original posts that just confuse me further. My questions are:

  1. What is the difference between DEVICEID and DEVICEADDR?
  2. Which one of these is randomly assigned at manufacturing to each individual chip?
  3. Which one of these can be used as a way of identifying an individual chip?

Thanks.

  • I thought i'd share my opinion about these questions, however i don't know if its 100% true. Someone could confirm this or could say that my understanding is completely wrong ;).

    1. In my understanding, device id is something that defines the type of your device. Device address is a specific address for each device. For example, imagine that you are having two types of products with nordic chips. In one you have mcu_A, in second one you have mcu_B. You can know what type of product you have by reading mcu id. Doesn't matter if you have 1 or 10000 products with mcu_A type, the device id will always be the same, indicating that indeed it is the mcu_A. Same goes for for mcu_B type. Now device address is something that distinguishes one device from another, and each device has an individual address. So you could have a 10000 products with the mcu_A, and they all will have the same device id, but the device address will be different for each product. To sum up -> device id is fixed for a certain device, device address is different for each device.

    2. Yes, these are written to the chips at manufacturing. I don't know if there is a standard which defines how manufacturers should give ids to their devices, but i think it is the responsibility of the manufacturer to think one wisely and use it, so they could identify their own chips. However, i don't think that device addresses are assigned randomly, because there can be only one device in the world with certain address, and imagine that there are many manufacturers who are making these devices, so i think this should be controlled somehow and the addressing is not random.

    3. If you want to identify every individual chip, use device address for that. (Think of, lets say 5 beacons with nrf51422, which are advertising data to the world. They will have the same device id, but you will be able to see them all, because you are searching them by address, not by id.

  • Hi,

    Both NRF_FICR->DEVICEID[] and NRF_FICR->DEVICEADDR[] are unique identifiers (see chapter 7.4 in the nRF51 reference manual), meaning that these fields are random generated for each device.

    The NRF_FICR->DEVICEADDR[] is used by the SoftDevice as your default bluetooth address: devzone.nordicsemi.com/.../

    To answer your initial questions:

    1. The initial difference is not much, only that the DEVICEADDR is used as your default bluetooth address (unless you override this.
    2. Both are.
    3. Both can as long as you store these in a database in your own production line. It's easiest to use the DEVICEADDR (provided that you use this also as your bluetooth address), as this is sent when your device is advertising.

    Cheers, Håkon

Related