LPC54016 - Unique ID - IAP_ReadUniqueID - All Zeros

cancel
Showing results for 
Search instead for 
Did you mean: 

LPC54016 - Unique ID - IAP_ReadUniqueID - All Zeros

521 Views
carl-circuitwor
Contributor II

Hi,

Trying to read the unique ID from a LPC54016 using the IAP function IAP_ReadUniqueID and I just get zeros.

User manual suggests also reading direct from address 0x40000430 which again produces all zeros.

Any ideas?

Thanks,

Carl.

Labels (1)
Tags (2)
0 Kudos
10 Replies

108 Views
OlivierBulls
Contributor I

Hi The NXP Community!

I'm trying to use the IAP mode registry to look up the serial number (UUID) of my LPC54018 and no matter how I try, I only read ALL zero.

Trying with the example of the IAP utility (lpc54018iotmodule_iap_basic) SDK 2.9. I read When you see in the picture.nxp_iap_bug.PNG

We also try with the way is describe in the datasheet (SEE PICTURE) but no succes.

2.PNG

We tried with 2 different OM40007 & OM4008 dev board.

maybe we have to remapping the ROM?

I dont have any idea.. and you?

Thank you for your support!

0 Kudos

45 Views
OlivierBulls
Contributor I

Ok, I know why.. This is a Factory error on the device revision 0A (see the Errata sheet LPC540xx..)

https://www.nxp.com/docs/en/errata/ES_LPC540XX_LPC54S0XX.pdf

Captssure.PNG

 

0 Kudos

172 Views
radomirkozub-re
NXP Employee
NXP Employee

Hello Carl,

can you please provide device  photo, device name, lot id, etc.

Also is it engineering sample or production one.

Thanks

Radomir

0 Kudos

172 Views
xiangjun_rong
NXP TechSupport
NXP TechSupport

Hi, Carl,

You use three methods to read the unique ID of LPC54016, all of them are zero, I think they are zero. But I have not the board based on LPC54016 unfortunately, I can not duplicate it, sorry.

BR

Xiangjun Rong

0 Kudos

172 Views
carl-circuitwor
Contributor II

Do you have a LPC54018 board you can try... as far as I can tell they are virtually the same cores.. 

Carl.

0 Kudos

172 Views
xiangjun_rong
NXP TechSupport
NXP TechSupport

Hi, Carl,

I have tested on the LPC54S018 board and MCUXpresso tools, and I get non-zero value for the mem[] array.

This is the result and code.

Hope it can help you

BR

XiangJun Rong

void delay(void);
volatile uint32_t mem[4] = {0};
uint32_t *uint32_point=0x40000430;
/*******************************************************************************
 * Variables
 ******************************************************************************/

/*******************************************************************************
 * Code
 ******************************************************************************/
void delay(void)
{
    volatile uint32_t i = 0;
    for (i = 0; i < 100000; ++i)
    {
        __asm("NOP"); /* delay */
    }
}

/*!
 * @brief Main function
 */
int main(void)
{
    uint32_t port_state = 0;
#if 1
    for(uint32_t i=0; i<4; i++)
    {
        mem[i]=*(uint32_point);
        uint32_point++;
        __asm("nop");
    }
#endif
    /* Define the init structure for the output LED pin*/
    gpio_pin_config_t led_config = {
        kGPIO_DigitalOutput, 0,
    };

    /* Board pin, clock, debug console init */
    /* attach 12 MHz clock to FLEXCOMM0 (debug console) */
    CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);

..........................................

pastedImage_1.png

0 Kudos

172 Views
carl-circuitwor
Contributor II

Hi,

I've created a new project from the template, with just the code to read the ID, similar to yours. Trying both the direct read from the address in the user manual and the IAP function.

Both return all 0's

ReadUUIDFromAddress.png

ReadUUIDFromIAP.png

Also manually reading via J-Link Commander ..

pastedImage_1.png

If it helps to ID the silicon revision, calls to the functions below return the following values

IAP_ReadPartID = 0x1f54016

IAP_ReadBootCodeVersion = 0x1500

0 Kudos

172 Views
carl-circuitwor
Contributor II

Hi,

Yes tried that, all zero as per the memory view of those locations.

Thanks,

Carl

0 Kudos

172 Views
xiangjun_rong
NXP TechSupport
NXP TechSupport

Hi, Carl,

Unfortunately, I asked the other engineer including AE team, but we have not the board based on LPC54016, I can not test.

BR

Xiangjun Rong

0 Kudos

172 Views
xiangjun_rong
NXP TechSupport
NXP TechSupport

Hi, Carl,

volatile uint32_t mem[4] = {0};
mem[0] = *((uint32_t *) 0x40000430);
mem[1] = *(((uint32_t *) 0x40000430) + 1);
mem[2] = *(((uint32_t *) 0x40000430) + 2);
mem[3] = *(((uint32_t *) 0x40000430) + 3);

If you use above code, what is the contents of the mem array?

BR

Xiangjun rong

0 Kudos