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.

Does TM4C have a unique identifier / serial number I can retrieve from EEPROM or somewhere else?

I am programming several different TM4C boards and need a way to keep track of them in software. I could of course write something to EEPROM but would prefer to find some read-only value from vendor. Does such a thing exist? How could I access it?


Thanks!

  • Hi Lee,

    See, Device Identification 0 Register(DID0) and Device Identification 1 Register(DID1) at your TM4C microcontroller datasheet.

    - kel
  • Lee Shaver said:
    I am programming several different TM4C boards and need a way to keep track of them in software.

    Which type of TM4C devices are you using?

    The TM4C129 devices have the Unique ID 0 (UNIQUEID0), Unique ID 1 (UNIQUEID1), Unique ID 2 (UNIQUEID2) and Unique ID 3 (UNIQUEID3) registers which contain a unique 128-bit identifier that cannot be modified by the user. This value is unique to each individual die but is not a random value.

    These Unique ID registers are not present on TM4C123 devices.

    Note that as of TivaWare 2.1.1.71, there doesn't appear to be any definitions for the Unique ID registers, so you will have to read the Unique ID registers from the addresses specified in the device data sheet.

  • Markel Robregado said:
    See, Device Identification 0 Register(DID0) and Device Identification 1 Register(DID1) at your TM4C microcontroller datasheet.

    The DID0 and DID1 values identify the type of device and it's revision. Therefore, all devices of the same type and revision will have the same DID0 and DID1 values.

    I wasn't sure if Lee wanted a unique ID to identify different devices of the same type and revision.

  • It is a TM4C123GXL demo board. Would using the MAC address from the Ethernet controller work? I am not using that peripheral at all.
  • Lee Shaver said:
    It is a TM4C123GXL demo board. Would using the MAC address from the Ethernet controller work?

    Err, the TM4C123 doesn't have built in Ethernet.

    The TM4C123 devices do have User Register 0 (USER_REG0), User Register 1 (USER_REG1), User Register 2 (USER_REG2) and User Register 3 (USER_REG3) each of which can be programmed with 32 bits of user defined data that is non-volatile. LM Flash Programmer allows User Register 0 and User Register 1 to be programmed with board-specific values.

  • Hello Lee

    TM4C123 does not have a UNIQUE ID register

    Regards
    Amit
  • Gotcha, I was looking at the TM4C peripheral manual, forgot to check specifics for my chip. Using those USER_REG values seems like the trick. What do you mean by board-specific values?
  • Lee Shaver said:
    What do you mean by board-specific values?

    I just meant that the initial state of the User Registers is 0xFFFFFFFF, and that the user has program their own unique identifier / serial number.

  • OK that makes sense. Is the procedure to write to these registers similar to writing to EEPROM? Where would I look to find documentation/examples for modifying these registers?

    Thanks!
  • Lee Shaver said:
    Where would I look to find documentation/examples for modifying these registers?

    The device datasheet contains the details for modifying the user registers.

    Other ways of modifying the registers are:

    1) The LM Flash Programmer has a GUI which allows the USER_REG0 and USER_REG1 to be modified without having to write any code.

    2) TivaWare contains the functions FlashUserSet() and FlashUserSave() to allow a program to modify the USER_REG0 and USER_REG1 registers.

    If you need to modify the USER_REG2 and USER_REG3 the TivaWare functions could be extended.

    There is also the TivaWare function FlashUserGet() to read the values of USER_REG0 and USER_REG1.