6.1.6 NVR Fuses

The fuses in the PIC32CX-BZ2 devices are implemented in the NVR Flash. These flash locations are checked for ECC errors during power-up by the Flash controller. The configuration registers are loaded with the values from the Flash during pre-boot, only if it is trusted.

In order to initialize this area of the NVR such that the ECC is implemented, Quad Word writes must be done for all the FBCFGx, Alternate FBCFGx, FCPN0 and FSIGN0.

Note: For the FBCFGx registers, the first Quad Word write starts at 0x0004_5F80 with the following contents:
  1. FBCFG6/7 are not used, write all ‘1's.
  2. MPLAB X register names display in square brackets.
FBCFG4[DEVCFG4] into 0x0004_5F8C 
FBCFG5[FUSERID] into 0x0004_5F88 
FBCFG6[value=0xFFFFFFFF] into 0x0004_5F84 --> not used
FBCFG7[value=0xFFFFFFFF] into 0x004_5F80 --> not used

This is, then, followed by a Quad Word Write to 0x0004_5F90 with the following contents:

FBCFG0[FBCFG0] into 0x0004_5F9C 
FBCFG1[DEVCFG0] into 0x0004_5F98 
FBCFG2[DEVCFG1] into 0x0004_5F94 
FBCFG3[DEVCFG2] into 0x0004_5F90 

Additionally, write the Alternate FBCFGx words; for example, copy the contents of Quad Word from 0x0004_5F80 to 0x0004_5E80, and the contents of Quad Word from 0x0004_5F90 to 0x0004_5E90, again using Quad Word writes only. This provides a backup in the NVR Flash if the primary FBCFGx words are corrupted.

For FCPN0, use the following Quad Word write:

FCPN0[FPCN0] into 0x0004_5FBC
FCPN1[value = 0xFFFFFFFF] into 0x0004_5FB8 --> not used
FCPN2[value = 0xFFFFFFFF] into 0x0004_5FB4 --> not used
FCPN3[value = 0xFFFFFFFF] into 0x0004_5FB0 --> not used

For FSIGN0, use the following Quad Word write:

FSIGN0[FSIGN0] into 0x0004_5FDC
FSIGN1[value = 0xFFFFFFFF] into 0x0004_5FD8
FSIGN2[value = 0xFFFFFFFF] into 0x0004_5FD4
FSIGN3[value = 0xFFFFFFFF] into 0x0004_5FD0
Note: Follow the normal page unlock or lock sequences for all NVR Flash writes.