34. Device electronic signature
The electronic signature is stored in the Flash memory area. It can be read using the JTAG/SWD or the CPU. It contains factory-programmed identification data that allow the user firmware or other external devices to automatically match its interface to the characteristics of the STM32F446xx microcontrollers.
34.1 Unique device ID register (96 bits)
The unique device identifier is ideally suited:
- • for use as serial number (USB string serial number, or other end applications)
- • for use as part of the security keys, to increase the security of code in Flash memory while using and combining this unique ID with software cryptographic primitives and protocols before programming the memory
- • to activate processes such as secure boot.
The 96-bit unique device identifier provides a reference number, unique for a given device and in any context. These bits cannot be altered by the user.
The 96-bit unique device identifier can also be read in single bytes/half-words/words in different ways and then be concatenated using a custom algorithm.
Base address: 0x1FFF 7A10
Address offset: 0x00
Read only = 0xXXXX XXXX, where X is factory-programmed

| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| U_ID(31:16) | |||||||||||||||
| r | r | r | r | r | r | r | r | r | r | r | r | r | r | r | r |
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| U_ID(15:0) | |||||||||||||||
| r | r | r | r | r | r | r | r | r | r | r | r | r | r | r | r |
Bits 31:0 U_ID[31:0] : X and Y coordinates on the wafer.
Address offset: 0x04
Read only = 0xXXXX XXXX, where X is factory-programmed

| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| U_ID[63:48] | |||||||||||||||
| r | r | r | r | r | r | r | r | r | r | r | r | r | r | r | r |
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| U_ID[47:32] | |||||||||||||||
| r | r | r | r | r | r | r | r | r | r | r | r | r | r | r | r |
Bits 31:0 U_ID[63:32] : LOT_NUM[23:0]: Lot number (ASCII encoded), WAF_NUM[7:0]: Wafer number (ASCII encoded).
Address offset: 0x08
Read only = 0xXXXX XXXX, where X is factory-programmed

| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| U_ID[95:80] | |||||||||||||||
| r | r | r | r | r | r | r | r | r | r | r | r | r | r | r | r |
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| U_ID[79:64] | |||||||||||||||
| r | r | r | r | r | r | r | r | r | r | r | r | r | r | r | r |
Bits 31:0 U_ID[95:64] : LOT_NUM[55:24] Lot number (ASCII encoded).
34.2 Flash memory size register
Base address: 0x1FFF 7A22
Address offset: 0x00
Read only = 0xXXXX, where X is factory-programmed

| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| F_SIZE | |||||||||||||||
| r | r | r | r | r | r | r | r | r | r | r | r | r | r | r | r |
Bits 15:0 F_SIZE[15:0] : Flash memory size
Indicates the size of the device Flash memory, expressed in KBytes.
As an example, 0x0200 corresponds to 512 KBytes.
34.3 Package data register
Base address: 0x1FFF7BF0
Address offset: 0x00
Read only = 0xXXXX, where X is factory-programmed

| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Res. | Res. | Res. | Res. | Res. | PKG[2:0] | Res. | Res. | Res. | Res. | Res. | Res. | Res. | Res. | ||
| r | r | r | |||||||||||||
Bits 15:11 Reserved, must be kept at reset value
Bits 10:8 PKG[2:0] : Package type
0x011: LQFP144, UFBGA144 (7x7) and UFBGA144 (10x10) packages
0x010: WLCSP81 package
0x001: LQFP100 package
0x000: LQFP64 package
Bits 7:0 Reserved, must be kept at reset value.