nRF52840-QIAA-R vs nRF52840-QIAA-F-R

Hi

We are using the nRF52840-QIAA-R in a lot of PCBA, now I see there is a new revision nRF52840-QIAA-F-R and the old type is not recommended for new design.

What is the difference between the 2 types and are they 100% compatible? Where can I see the difference between the old and the new type?

Thank you

  • Ok, so like I saw in this link: 

    CONFIG_NRF_APPROTECT_LOCK should be set. Is this working also with nRF5 SDK v17.1.0?

    But in sdk_config.h this option doesn't exists and I can't find it in some header or c file.

  • I implemented now the suggested code on top of main:

    void AppProtection(void)
    {
    #ifdef ENABLE_APPROTECT
    	if ((NRF_UICR->APPROTECT & UICR_APPROTECT_PALL_Msk) !=
    		(UICR_APPROTECT_PALL_Enabled << UICR_APPROTECT_PALL_Pos)) {
            NRF_NVMC->CONFIG = NVMC_CONFIG_WEN_Wen;
            while (NRF_NVMC->READY == NVMC_READY_READY_Busy){}
    
            NRF_UICR->APPROTECT = ((NRF_UICR->APPROTECT & ~((uint32_t)UICR_APPROTECT_PALL_Msk)) |
    		    (UICR_APPROTECT_PALL_Enabled << UICR_APPROTECT_PALL_Pos));
    
            NRF_NVMC->CONFIG = NVMC_CONFIG_WEN_Ren;
            while (NRF_NVMC->READY == NVMC_READY_READY_Busy){}
            NVIC_SystemReset();
       	}
    #else
    	if ((NRF_UICR->APPROTECT & UICR_APPROTECT_PALL_Msk) !=
    		(UICR_APPROTECT_PALL_HwDisabled << UICR_APPROTECT_PALL_Pos)) {
    
            NRF_NVMC->CONFIG = NVMC_CONFIG_WEN_Wen;
            while (NRF_NVMC->READY == NVMC_READY_READY_Busy){}
    
            NRF_UICR->APPROTECT = ((NRF_UICR->APPROTECT & ~((uint32_t)UICR_APPROTECT_PALL_Msk)) |
    		    (UICR_APPROTECT_PALL_HwDisabled << UICR_APPROTECT_PALL_Pos));
    
            NRF_NVMC->CONFIG = NVMC_CONFIG_WEN_Ren;
            while (NRF_NVMC->READY == NVMC_READY_READY_Busy){}
            NVIC_SystemReset();
    	}
    #endif
    }

    This is working, but the problem is that the verify in production programming is not working anymore. Is there an option to verify the chip before? Because after a program the chip is getting restarted and read out protection is active which makes verify impossible:

    nrfjprog --program %HEX_FILE% --verify --log

    [ #################### ]   6.201s | Program file - Done programming
    [error] [ Client] - Encountered error -160: Command verify_file executed for 6382 milliseconds with result -160
    [error] [  nRF52] - Failed while performing 'Verify' operation on target address 0x00027000.
    -160: Data does not match in address range [0x00027000 - 0x000A42DA] (Flash)
    Expected byte value 0x04 but read 0x85 at address 0x00035918.
    [error] [  nRF52] - Failed while verifying device. -160: Data does not match in address range [0x00027000 - 0x000A42DA] (Flash)
    Expected byte value 0x04 but read 0x85 at address 0x00035918.
    [error] [ Worker] - Data does not match in address range [0x00027000 - 0x000A42DA] (Flash)
    Expected byte value 0x04 but read 0x85 at address 0x00035918.
    ERROR: Write verify failed.
    Error occurred, errorlevel: 55

Related