UICR — User information configuration registers
The user information configuration registers (UICRs) are non-volatile memory (NVM) registers for configuring user specific settings.
For information on writing UICR registers, see the NVMC — Non-volatile memory controller and Memory chapters.
Registers
Instances
| Instance | Base address | TrustZone | Split access | Description | ||
|---|---|---|---|---|---|---|
| Map | Att | DMA | ||||
| UICR | 0x00FF8000 | HF | S | NA | No | User information configuration |
Register overview
| Register | Offset | TZ | Description |
|---|---|---|---|
| APPROTECT | 0x000 | Access port protection | |
| XOSC32M | 0x014 | Oscillator control | |
| HFXOSRC | 0x01C | HFXO clock source selection | |
| HFXOCNT | 0x020 | HFXO startup counter | |
| APPNVMCPOFGUARD | 0x024 | Enable blocking NVM WRITE and aborting NVM ERASE for Application NVM in POFWARN condition. | |
| SECUREAPPROTECT | 0x02C | Secure access port protection | |
| ERASEPROTECT | 0x030 | Erase protection | |
| OTP[n] | 0x108 | One time programmable memory | |
| KEYSLOT.CONFIG[n].DEST | 0x400 | Destination address where content of the key value registers (KEYSLOT.KEYn.VALUE[0-3]) will be pushed by KMU. Note that this address must match that of a peripheral's APB mapped write-only key registers, otherwise the KMU can push this key value into an address range which the CPU can potentially read. | |
| KEYSLOT.CONFIG[n].PERM | 0x404 | Define permissions for the key slot. Bits 0-15 and 16-31 can only be written when equal to 0xFFFF. | |
| KEYSLOT.KEY[n].VALUE[o] | 0x800 | Define bits [31+o*32:0+o*32] of value assigned to KMU key slot. |
APPROTECT
Address offset: 0x000
Access port protection
| Bit number | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ID | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | |||
| Reset 0xFFFFFFFF | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | |||
| ID | R/W | Field | Value ID | Value | Description | ||||||||||||||||||||||||||||||
| A | RW | PALL | Blocks debugger read/write access to all CPU registers and memory mapped addresses Any value different to HwUnprotected will make access port protected. | ||||||||||||||||||||||||||||||||
HwUnprotected | 0x50FA50FA | HwUnprotected | |||||||||||||||||||||||||||||||||
Protected | 0x00000000 | Protected | |||||||||||||||||||||||||||||||||
XOSC32M
Address offset: 0x014
Oscillator control
| Bit number | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ID | A | A | A | A | A | A | |||||||||||||||||||||||||||||
| Reset 0xFFFFFFCF | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | |||
| ID | R/W | Field | Value ID | Value | Description | ||||||||||||||||||||||||||||||
| A | RW | CTRL | Pierce current DAC control signals | ||||||||||||||||||||||||||||||||
HFXOSRC
Address offset: 0x01C
HFXO clock source selection
| Bit number | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ID | A | ||||||||||||||||||||||||||||||||||
| Reset 0xFFFFFFFF | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | |||
| ID | R/W | Field | Value ID | Value | Description | ||||||||||||||||||||||||||||||
| A | RW | HFXOSRC | HFXO clock source selection | ||||||||||||||||||||||||||||||||
XTAL | 1 | 32 MHz crystal oscillator | |||||||||||||||||||||||||||||||||
TCXO | 0 | 32 MHz temperature compensated crystal oscillator (TCXO) | |||||||||||||||||||||||||||||||||
HFXOCNT
Address offset: 0x020
HFXO startup counter
| Bit number | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ID | A | A | A | A | A | A | A | A | |||||||||||||||||||||||||||
| Reset 0xFFFFFFFF | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | |||
| ID | R/W | Field | Value ID | Value | Description | ||||||||||||||||||||||||||||||
| A | RW | HFXOCNT | HFXO startup counter. Total debounce time = HFXOCNT*64 us + 0.5 us | ||||||||||||||||||||||||||||||||
MinDebounceTime | 0 | Min debounce time = (0*64 us + 0.5 us) | |||||||||||||||||||||||||||||||||
MaxDebounceTime | 255 | Max debounce time = (255*64 us + 0.5 us) | |||||||||||||||||||||||||||||||||
APPNVMCPOFGUARD
Address offset: 0x024
Enable blocking NVM WRITE and aborting NVM ERASE for Application NVM in POFWARN condition.
| Bit number | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ID | A | ||||||||||||||||||||||||||||||||||
| Reset 0xFFFFFFFF | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | |||
| ID | R/W | Field | Value ID | Value | Description | ||||||||||||||||||||||||||||||
| A | RW | NVMCPOFGUARDEN | Enable blocking NVM WRITE and aborting NVM ERASE in POFWARN condition | ||||||||||||||||||||||||||||||||
Disabled | 0 | NVM WRITE and NVM ERASE are not blocked in POFWARN condition | |||||||||||||||||||||||||||||||||
Enabled | 1 | NVM WRITE and NVM ERASE are blocked in POFWARN condition | |||||||||||||||||||||||||||||||||
SECUREAPPROTECT
Address offset: 0x02C
Secure access port protection
| Bit number | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ID | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | |||
| Reset 0xFFFFFFFF | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | |||
| ID | R/W | Field | Value ID | Value | Description | ||||||||||||||||||||||||||||||
| A | RW | PALL | Blocks debugger read/write access to all secure CPU registers and secure memory mapped addresses Any value different to HwUnprotected will make access port protected. | ||||||||||||||||||||||||||||||||
HwUnprotected | 0x50FA50FA | HwUnprotected | |||||||||||||||||||||||||||||||||
Protected | 0x00000000 | Protected | |||||||||||||||||||||||||||||||||
ERASEPROTECT
Address offset: 0x030
Erase protection
| Bit number | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ID | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | |||
| Reset 0xFFFFFFFF | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | |||
| ID | R/W | Field | Value ID | Value | Description | ||||||||||||||||||||||||||||||
| A | RW | PALL | Blocks NVMC ERASEALL and CTRLAP ERASEALL functionality | ||||||||||||||||||||||||||||||||
Unprotected | 0xFFFFFFFF | Unprotected | |||||||||||||||||||||||||||||||||
Protected | 0x00000000 | Protected | |||||||||||||||||||||||||||||||||
OTP[n] (n=0..189)
Address offset: 0x108 + (n × 0x4)
One time programmable memory
| Bit number | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ID | B | B | B | B | B | B | B | B | B | B | B | B | B | B | B | B | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | |||
| Reset 0xFFFFFFFF | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | |||
| ID | R/W | Field | Value ID | Value | Description | ||||||||||||||||||||||||||||||
| A | RW1 | LOWER | Lower half word Note: Can only be written to a non 0xFFFF value once. | ||||||||||||||||||||||||||||||||
| B | RW1 | UPPER | Upper half word Note: Can only be written to a non 0xFFFF value once. | ||||||||||||||||||||||||||||||||
KEYSLOT.CONFIG[n].DEST (n=0..127)
Address offset: 0x400 + (n × 0x8)
Destination address where content of the key value registers (KEYSLOT.KEYn.VALUE[0-3]) will be pushed by KMU. Note that this address must match that of a peripheral's APB mapped write-only key registers, otherwise the KMU can push this key value into an address range which the CPU can potentially read.
| Bit number | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ID | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | |||
| Reset 0xFFFFFFFF | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | |||
| ID | R/W | Field | Value ID | Value | Description | ||||||||||||||||||||||||||||||
| A | RW | DEST | Secure APB destination address | ||||||||||||||||||||||||||||||||
KEYSLOT.CONFIG[n].PERM (n=0..127)
Address offset: 0x404 + (n × 0x8)
Define permissions for the key slot. Bits 0-15 and 16-31 can only be written when equal to 0xFFFF.
| Bit number | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ID | D | C | B | A | |||||||||||||||||||||||||||||||
| Reset 0xFFFFFFFF | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | |||
| ID | R/W | Field | Value ID | Value | Description | ||||||||||||||||||||||||||||||
| A | RW | WRITE | Write permission for key slot | ||||||||||||||||||||||||||||||||
Disabled | 0 | Disable write to the key value registers | |||||||||||||||||||||||||||||||||
Enabled | 1 | Enable write to the key value registers | |||||||||||||||||||||||||||||||||
| B | RW | READ | Read permission for key slot | ||||||||||||||||||||||||||||||||
Disabled | 0 | Disable read from key value registers | |||||||||||||||||||||||||||||||||
Enabled | 1 | Enable read from key value registers | |||||||||||||||||||||||||||||||||
| C | RW | PUSH | Push permission for key slot | ||||||||||||||||||||||||||||||||
Disabled | 0 | Disable pushing of key value registers over secure APB, but can be read if field READ is Enabled | |||||||||||||||||||||||||||||||||
Enabled | 1 | Enable pushing of key value registers over secure APB. Register KEYSLOT.CONFIGn.DEST must contain a valid destination address! | |||||||||||||||||||||||||||||||||
| D | RW | STATE | Revocation state for the key slot Note that it is not possible to undo a key revocation by writing the value '1' to this field | ||||||||||||||||||||||||||||||||
Revoked | 0 | Key value registers can no longer be read or pushed | |||||||||||||||||||||||||||||||||
Active | 1 | Key value registers are readable (if enabled) and can be pushed (if enabled) | |||||||||||||||||||||||||||||||||
KEYSLOT.KEY[n].VALUE[o] (n=0..127) (o=0..3)
Address offset: 0x800 + (n × 0x10) + (o × 0x4)
Define bits [31+o*32:0+o*32] of value assigned to KMU key slot.
| Bit number | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ID | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | A | |||
| Reset 0xFFFFFFFF | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | |||
| ID | R/W | Field | Value ID | Value | Description | ||||||||||||||||||||||||||||||
| A | RW | VALUE | Define bits [31+o*32:0+o*32] of value assigned to KMU key slot | ||||||||||||||||||||||||||||||||