This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

How do I read MCUs Silicon Unique Number?

Other Parts Discussed in Thread: MSP430WARE

Need technical documentation regarding how to gain read access to this number. Also, need to understand how thru the MSP430 Gang Programmer product serial numbers can be accessed, stored, assigned. Can I leverage this silicon unique number? Does each independent device have a unique number? In the past I've used the products MAC address for this type of functionality.

Thx!

-Rick

  • Not all devices have this. Please tell which specific device/family you are trying to use.

  • I do not recall that any of the MSP430 members has a unique number for each individual chip.

  • old_cow_yellow is correct, we don't have any unique number such as MAC number for e.g. the Zigbee Soc CC253x (even for the CC430 RF SoC devices). However there is a specific device ID for every "sub.families"

    http://processors.wiki.ti.com/index.php/MSP430_FAQ#Is_there_any_thing_like_Device_ID_on_MSP430_devices.3F

  • In regards to your question about the MSP-GANG programmer, if you see the DLL examples that come included in the install folder when you install the MSP-GANG software (see the folder MSP-GANG/examples/), they show how to program a unique serial number ID into each device. You can of course generate the ID number you want to use any way that you would like, and use the DLL example to show you how to program these unique IDs into the parts.

    Regards,

    Katie

  • old_cow_yellow said:
    I do not recall that any of the MSP430 members has a unique number for each individual chip.

    Leo Hendrawan said:
    we don't have any unique number such as MAC number for e.g. the Zigbee Soc CC253x

    Hmmm.....  Well Leo, Rick didn't specify which device he was referring to (and I even specifically asked). So I'm not sure where your reference to CC253x comes from.

    Also, old_cow_yellow may be correct that he can't recall, but this isn't a correct response either to the original question.

    Referring to the MSP430F550x datasheet (for 5504 to 5510 devices), these devices have a TLV entry in the device descriptor table (See Table 60 of SLAS645G) labeled "Die Record" that has a 4-byte "Lot/Wafer ID" field, a 2-byte "Die X position" field, and a 2-byte "Die Y position" field making an 8-byte unique identifier for each chip.

    So, the correct answer is...

    If your device supports the Die Record TLV in the device descriptor table, you can programmatically during runtime use the TLV parsing functions from MSP430Ware to get the 8-byte unique ID for your chip. Or, you can roll your own TLV parsing function. Or, if you are only going to target the one device, pull the values from hard-coded addresses as found in the datasheet (for instance, Table 60 of SLAS645G for the 5504-5510 devices)

    You should be able to read the memory locations via the programmer (which gets to the original question). I think Katie provided some insight here.

  • Thanks Katie!

    I haven't yet purchased/explored the gang programmer functionality; however, this is the desired functionality I'm looking for regarding programming device serial numbers. How can I then access the devices serial number from my application? Is there a header file I need to include so I can read the device info? Currently targeting the G2433 device.

    -Rick

  • Hi Rick,

    Basically, all the MSP-GANG does in this case is write the number to a location in Flash. A good place to use is usually one of the INFO memory segments, since by default the linker will not try to place any of your code there (unless you are doing something to modify this of course). Then from your main application code in your MSP430, all you have to do is read the data stored at this flash address.

    For example, if you stored your data at address 0x1080 in INFO memory (which is the beginning of where the serial number is written in the MSP-GANG DLL example), and you want to read one byte of it, you can use a line of code that looks like this:

    a = *((unsigned char *)0x1080);

    To read in the whole serial number, especially if it's long, you'd just read into an array instead, and loop to read out the whole serial number. Here's an example for reading 8 bytes stored starting at 0x1080, into an array:

    for(i=0; i<8; i++)
    {
    a[i] = *((unsigned char *)0x1080 + i);
    }

    There's probably a lot of other ways to do it, but this is one method you could use.

    Regards,

    Katie

    EDIT: fixed code typo - changed from +1 to +i

**Attention** This is a public forum