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

Identifier in the InfoPage??

Hi

In nRFgo Studio there is an option to read the entire memory of a chip. In my case nRF24Le1 to a .mhex file.

The first lines of the .mhex file says: Infopage: Identifier (0x00-0x0F): 0x5A 0x5A 0x43 0x30 0x52 0x30 0x34 0x38 0x06 0x08 0x1E 0x65 0x0D 0x43 0x11 0x72

Is this identifier unique for every chip? Or is it a 1 in a million chance of having two identical?

I want to read the Identifier, from the MCU. I guess that is possible?

Parents
  • @Gustav: The Identifier is generated randomly when in production, not a unique number for each chip. So there is a chance that we have 2 devices with same identifier, but it's small, should be one in 2^40. The chip ID is from address 0x0B to 0x0F.

    Yes you can read the identifier from MCU.

    ReadInfoPage.zip

  • Dear Hung Bui,

    Great work! Thanks a lot. I had to change it a bit to adapt to SDCC. The data has to be put into the destination array while INFEN == 0. I have always used Small Memory Model, but SDCC compiles the same .hex file, no matter if the model is small or not.

    enter code here
    

    void flash_read_chipID (uint8_t *dst, uint8_t n) { uint8_t i, j; volatile uint8_t __xdata *gzp = (uint8_t __xdata *)0x0b;// 0x0b is start of chip ID in info-page

    F0= INFEN;
    
    INFEN = 1;
    
    for (i=0; i<n; i++) {
        j = *(gzp + i);
        INFEN = 0;
        dst[i] = j;// dst[i] has to executed while INFEN == 0
        INFEN = 1;
    }
    INFEN = F0;
    

    }

Reply
  • Dear Hung Bui,

    Great work! Thanks a lot. I had to change it a bit to adapt to SDCC. The data has to be put into the destination array while INFEN == 0. I have always used Small Memory Model, but SDCC compiles the same .hex file, no matter if the model is small or not.

    enter code here
    

    void flash_read_chipID (uint8_t *dst, uint8_t n) { uint8_t i, j; volatile uint8_t __xdata *gzp = (uint8_t __xdata *)0x0b;// 0x0b is start of chip ID in info-page

    F0= INFEN;
    
    INFEN = 1;
    
    for (i=0; i<n; i++) {
        j = *(gzp + i);
        INFEN = 0;
        dst[i] = j;// dst[i] has to executed while INFEN == 0
        INFEN = 1;
    }
    INFEN = F0;
    

    }

Children
No Data
Related