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

NRF_UICR->CUSTOMER read/write on 52832

Hello,
I'm trying to port my code (working in production) from 52811 to 52832.

I have several crashes on a piece of code at the start of my application that check the NRF_UICR, and based on the value does something then erases it.

When I say crash, it restarts the application, without entering app_error_fault_handler 

// Check first two bytes of NRF_UICR->CUSTOMER
if ( NRF_UICR->CUSTOMER[0] != 0x0 || NRF_UICR->CUSTOMER[1] != 0x0 ) {
    
    // Read NRF_UICR->CUSTOMER[i], i from 0 to 8
    (...)
    
    //Erase first two bytes of NRF_UICR->CUSTOMER
    NRF_NVMC->CONFIG = NVMC_CONFIG_WEN_Wen;
    while (NRF_NVMC->READY == NVMC_READY_READY_Busy){}
    NRF_UICR->CUSTOMER[0] = 0x0;
    NRF_UICR->CUSTOMER[1] = 0x0;
    NRF_NVMC->CONFIG = NVMC_CONFIG_WEN_Ren;
    while (NRF_NVMC->READY == NVMC_READY_READY_Busy){}
}
 

What could be different between 52811 and 52832 on this matter ?

Best regards,
Quentin

Parents Reply
  • Hello Kenneth,

    I have the same result with both CONFIG_NFCT_PINS_AS_GPIOS and CONFIG_GPIO_AS_PINRESET undefined.

    I have stabilized my port, and I'm now in a state where everything works fine when commenting out the erasing of the first two bytes of NRF_UICR->CUSTOMER

    When uncommenting, project crashes every few seconds (even by itself, when I'm not using any i/o)

    I have added some logs :

    NRF_LOG_INFO("Erasing UICR start");
    NRF_LOG_FLUSH();
    NRF_NVMC->CONFIG = NVMC_CONFIG_WEN_Wen;
    NRF_LOG_INFO("Erasing UICR 1");
    NRF_LOG_FLUSH();
    while (NRF_NVMC->READY == NVMC_READY_READY_Busy){}
    NRF_UICR->CUSTOMER[0] = 0x0;
    NRF_UICR->CUSTOMER[1] = 0x0;
    NRF_NVMC->CONFIG = NVMC_CONFIG_WEN_Ren;
    while (NRF_NVMC->READY == NVMC_READY_READY_Busy){}
    NRF_LOG_INFO("Erasing UICR end");
    NRF_LOG_FLUSH();

    Output :

    00> <info> app: APP START
    00> <info> app: Erasing UICR start
    00> <info> app: Reset_reason: 0x00000004.
    00> <info> app: Reset_reason resetted: 0x00000000.
    00> <info> app: APP START
    00> <info> app: Erasing UICR start
    00> <info> app: Reset_reason: 0x00000004.
    00> <info> app: Reset_reason resetted: 0x00000000.
    
    (...)

Children
Related