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.
We also try with the way is describe in the datasheet (SEE PICTURE) but no succes.
We tried with 2 different OM40007 & OM4008 dev board.
maybe we have to remapping the ROM?
I dont have any idea..
Thank you for your support!
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
Hello Carl,
can you please provide device photo, device name, lot id, etc.
Also is it engineering sample or production one.
Thanks
Radomir
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
Do you have a LPC54018 board you can try... as far as I can tell they are virtually the same cores..
Carl.
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);
..........................................
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
Also manually reading via J-Link Commander ..
If it helps to ID the silicon revision, calls to the functions below return the following values
IAP_ReadPartID = 0x1f54016
IAP_ReadBootCodeVersion = 0x1500
Hi,
Yes tried that, all zero as per the memory view of those locations.
Thanks,
Carl
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
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