UICR — User information configuration registers

The user information configuration registers (UICRs) are non-volatile memory (NVM) registers for configuring user specific settings and storing secure cryptographic keys or OTP values.

The cryptographic key part of the UICR (addresses starting at 0x100 and higher) is handled by the Key Management Unit (KMU), see KMU — Key management unit for more information.

For information on writing registers, see NVMC — Non-volatile memory controller and Memory.

Any access, both read and write, to UICR must be a full 32-bit word aligned to a 32-bit address.

Note: UICR is not accessible from the network core.

Registers

Instances

InstanceDomainBase addressTrustZoneSplit accessDescription
MapAttDMA
UICRAPPLICATION0x00FF8000HFSNANo

User information configuration registers

Register overview

RegisterOffsetTZDescription
APPROTECT0x000

Access port protection

VREGHVOUT0x010

Output voltage from the high voltage (VREGH) regulator stage. The maximum output voltage from this stage is given as VDDH - VREGHDROP.

HFXOCNT0x014

HFXO startup counter

SECUREAPPROTECT0x01C

Secure access port protection

ERASEPROTECT0x020

Erase protection

TINSTANCE0x024

SW-DP Target instance

NFCPINS0x028

Setting of pins dedicated to NFC functionality: NFC antenna or GPIO

OTP[n]0x100

One time programmable memory

KEYSLOT.CONFIG[n].DEST0x400

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 peripherals APB mapped write-only key registers, else the KMU can push this key value into an address range which the CPU can potentially read.

KEYSLOT.CONFIG[n].PERM0x404

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 number313029282726252423222120191817161514131211109876543210
IDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

PALL

Blocks debugger read/write access to all CPU registers and memory mapped addresses.

Using any value except Unprotected will lead to the protection being enabled.

Bits with value '1' can be written to '0'. Bits with value '0' cannot be written to '1'.

Unprotected

0x50FA50FA

Unprotected

Protected

0x00000000

Protected

VREGHVOUT

Address offset: 0x010

Output voltage from the high voltage (VREGH) regulator stage. The maximum output voltage from this stage is given as VDDH - VREGHDROP.

Bit number313029282726252423222120191817161514131211109876543210
IDAAA
Reset 0xFFFFFFFF11111111111111111111111111111111
IDR/WFieldValue IDValueDescription
A

RW

VREGHVOUT

VREGH regulator output voltage.

1V8

0

1.8 V

2V1

1

2.1 V

2V4

2

2.4 V

2V7

3

2.7 V

3V0

4

3.0 V

3V3

5

3.3 V

DEFAULT

7

Default voltage: 1.8 V

HFXOCNT

Address offset: 0x014

HFXO startup counter

The CLKSTARTED events are generated after the HFXO power up time + the HFXOCNT-defined debounce time + PLL lock time has elapsed. If the HFXO has already been requested by another clock source and is already running, the CLKSTARTED event is generated as soon as the PLL has locked.

Note: When HFXOCNT field of this register is 0xFF, e.g. after UICR being erased, a debounce time of (4*64 us + 0.5 us) is used
Bit number313029282726252423222120191817161514131211109876543210
IDAAAAAAAA
Reset 0xFFFFFFFF11111111111111111111111111111111
IDR/WFieldValue IDValueDescription
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

254

Max debounce time = (254*64 us + 0.5 us)

DefaultDebounceTime

255

Default debounce time for erased UICR = 4*64 us + 0.5 us

SECUREAPPROTECT

Address offset: 0x01C

Secure access port protection

Bit number313029282726252423222120191817161514131211109876543210
IDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

PALL

Blocks debugger read/write access to all secure CPU registers and secure memory mapped addresses.

Using any value except Unprotected will lead to the protection being enabled.

Bits with value '1' can be written to '0'. Bits with value '0' cannot be written to '1'.

Unprotected

0x50FA50FA

Unprotected

Protected

0x00000000

Protected

ERASEPROTECT

Address offset: 0x020

Erase protection

Bit number313029282726252423222120191817161514131211109876543210
IDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Reset 0x0000000000000000000000000000000000000000
IDR/WFieldValue IDValueDescription
A

RW

PALL

Blocks NVMC ERASEALL and CTRLAP ERASEALL functionality.

Using any value except Unprotected will lead to the protection being enabled.

Unprotected

0xFFFFFFFF

Unprotected

Protected

0x00000000

Protected

TINSTANCE

Address offset: 0x024

SW-DP Target instance

Bit number313029282726252423222120191817161514131211109876543210
IDAAAA
Reset 0xFFFFFFFF11111111111111111111111111111111
IDR/WFieldValue IDValueDescription
A

RW

TINSTANCE

TINSTANCE bits are negated and used in the SW-DP DLPIDR.TINSTANCE field.

E.g. 0xF in this field is translated to 0x0 in DLPIDR.TINSTANCE field.

NFCPINS

Address offset: 0x028

Setting of pins dedicated to NFC functionality: NFC antenna or GPIO

Note: When used as NFC antenna pin, the corresponding pin must be controlled by the application core, and the GPIO PIN_CNF register initialized to its reset value.
Bit number313029282726252423222120191817161514131211109876543210
IDA
Reset 0xFFFFFFFF11111111111111111111111111111111
IDR/WFieldValue IDValueDescription
A

RW

PROTECT

Setting of pins dedicated to NFC functionality

Disabled

0

Operation as GPIO pins. Same protection as normal GPIO pins

NFC

1

Operation as NFC antenna pins. Configures the protection for NFC operation

OTP[n] (n=0..191)

Address offset: 0x100 + (n × 0x4)

One time programmable memory

Bit number313029282726252423222120191817161514131211109876543210
IDBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA
Reset 0xFFFFFFFF11111111111111111111111111111111
IDR/WFieldValue IDValueDescription
A

RW1

LOWER

Lower half word

Can only be written to a non 0xFFFF value once.

B

RW1

UPPER

Upper half word

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 peripherals APB mapped write-only key registers, else the KMU can push this key value into an address range which the CPU can potentially read.

Note: Writing/reading this register requires the KMU SELECTKEYSLOT register to be set to n+1.
Bit number313029282726252423222120191817161514131211109876543210
IDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Reset 0xFFFFFFFF11111111111111111111111111111111
IDR/WFieldValue IDValueDescription
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.

Note: Writing/reading this register requires the KMU SELECTKEYSLOT register to be set to n+1.
Bit number313029282726252423222120191817161514131211109876543210
IDDCBA
Reset 0xFFFFFFFF11111111111111111111111111111111
IDR/WFieldValue IDValueDescription
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.

Note: Writing/reading this register requires the KMU SELECTKEYSLOT register to be set to n+1.
Bit number313029282726252423222120191817161514131211109876543210
IDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Reset 0xFFFFFFFF11111111111111111111111111111111
IDR/WFieldValue IDValueDescription
A

RW

VALUE

Define bits [31+o*32:0+o*32] of value assigned to KMU key slot