2. Memory and bus architecture

The device architecture relies on an Arm ® Cortex ® -M33 core, optimized for execution through an instruction cache that accesses the embedded flash memory.

2.1 System architecture

The architecture features a 32-bit multilayer AHB bus matrix that interconnects:

The bus matrix provides access from a master to a slave, enabling concurrent access and efficient operation even when several high-speed peripherals work simultaneously. The architecture is shown in Figure 1 .

Figure 1. System architecture

Figure 1. System architecture diagram showing the internal bus matrix and its connections to various components including CPU, LPDMA1, ICACHE, FLASH, SRAM, XSPI1, and AHB peripherals. The diagram includes a legend for bus multiplexer, master interface, and slave interface.

The diagram illustrates the system architecture of the microcontroller. At the top, the CPU (Arm Cortex-M33) is shown with its C-bus and S-bus. The C-bus connects to the ICACHE (slow and fast) and the Bus matrix. The S-bus connects to the Bus matrix. The LPDMA1 port connects to the Bus matrix. The Bus matrix is a central component that connects to various interfaces and peripherals. The interfaces include FLASH interface, MPCBB1, MPCBB2, MPCWM1, OTFDEC1, and XSPI1. The peripherals include Flash memory, SRAM1, SRAM2, AHB1, AHB2, AHB4, and AHB5. A legend indicates that a circle represents a bus multiplexer, a square with 'm' represents a master interface, and a square with 's' represents a slave interface. The diagram is labeled MSv75910V1.

Figure 1. System architecture diagram showing the internal bus matrix and its connections to various components including CPU, LPDMA1, ICACHE, FLASH, SRAM, XSPI1, and AHB peripherals. The diagram includes a legend for bus multiplexer, master interface, and slave interface.

2.1.1 CPU C-bus

This bus connects the C-bus of the CPU to the internal flash memory and to the bus matrix. This bus is used for instruction fetching and data access to the internal memories mapped in the code region. This bus targets the internal flash memory, internal SRAM (SRAM1 and SRAM2), and XSPI1 bank through the ICACHE address remap function.

2.1.2 CPU S-bus

This bus connects the system bus of the CPU to the bus matrix, and it is used by the core to access data located in a peripheral or SRAM area. This bus targets the internal SRAM (SRAM1 and SRAM2), XSPI1 bank, AHB1 peripherals including the APB1 and APB2 peripherals, AHB2, AHB4 peripherals including the APB7, and AHB5 peripherals.

2.1.3 LPDMA1-bus

The bus connects the AHB master interface of the LPDMA1 to the bus matrix. This targets the internal flash memory, the internal SRAM (SRAM1 and SRAM2), XSPI1 bank, AHB1 peripherals including the APB1 and APB2 peripherals, AHB2 peripherals, AHB4 peripherals including the APB7, and AHB5 peripherals.

2.1.4 Bus matrix

The bus matrix manages the access arbitration (based on fixed priority) between masters, and features a bus multiplexer used to connect each master to a given slave with no latency.

Table 1. Bus matrix access arbitration

MasterPriority
Cpu core S-bus1 - highest
ICACHE slow port2
ICACHE fast port3
LPDMA14 - lowest

2.1.5 AHB/APB bridges

The three bridges, AHB1 to APB1, AHB1 to APB2, and AHB4 to APB7, provide full synchronous connections between the AHB and the APB buses, resulting in the flexible selection of the peripheral frequency.

Refer to Section 2.3.2: Memory map and register boundary addresses for the address mapping of the peripherals connected to these bridges.

After each device reset, the clock of peripherals having a xxEN bit in the RCC is disabled. Before using a peripheral, its clock must be enabled in the RCC_AHBxENR and RCC_APBxENR registers.

Note: When a 16- or 8-bit access operation is performed on an APB register, it is transformed into a 32-bit access operation: the bridge duplicates the 16- or 8-bit data to feed the 32-bit vector.

The 2.4 GHz RADIO peripheral AHB5 is a semisynchronous bus, connected through a bridge to the bus matrix.

2.2 TrustZone ® security architecture

The security architecture is based on Arm ® TrustZone ® with the Armv8_M mainline extension.

The TZEN option bit in the FLASH_OPTR register activates TrustZone ® security.

When TrustZone ® is enabled, the SAU (security attribution unit) and IDAU (implementation-defined attribution unit) define the access permissions based on secure and nonsecure states.

Based on IDAU security attribution, the flash memory, system SRAMs, and peripheral memory space are aliased twice for secure and nonsecure states. However, the external memory space is not aliased.

Table 2 shows a typical example of eight SAU regions mapping, based on IDAU regions. The user can split and choose the secure, nonsecure, or NSC regions for external memories according to application requirements.

Table 2. Memory map security attribution example vs. SAU configuration regions (1)

Region descriptionAddress rangeIDAU security attributionSAU security attribution typical configurationFinal security attribution
Reserved0x0000 0000 to 0x07FF FFFFNonsecureSecure, nonsecure, or NSC
Code Flash and SRAM0x0800 0000 to 0x0BFF FFFFNonsecureNonsecure
0x0C00 0000 to 0x0FFF FFFFNSCSecure or NSC
Reserved0x1000 0000 to 0x17FF FFFFNonsecure
0x1800 0000 to 0x1FFF FFFF
SRAM0x2000 0000 to 0x2FFF FFFFNonsecure
0x3000 0000 to 0x3FFF FFFFNSCSecure or NSC
Peripherals0x4000 0000 to 0x4FFF FFFFNonsecureNonsecure
0x5000 0000 to 0x5FFF FFFFNSCSecure or NSC
External memories0x6000 0000 to 0xDFFF FFFFNonsecureSecure, nonsecure, or NSC

1. NSC = nonsecure callable

2.2.1 Default TrustZone ® security state

When the TrustZone ® security is activated by the TZEN option bit in the FLASH_OPTR register, the default system security state is as detailed below:

2.2.2 TrustZone ® peripheral classification

When the TrustZone ® security is active, a peripheral can be either the securable or TrustZone ® -aware type as follows:

Refer to Section 5: Global TrustZone ® controller (GTZC) for more details.

Table 3 and Table 4 list the securable and TrustZone ® -aware peripherals within the system.

Table 3. Securable peripherals by TZSC

BusPeripheral
AHB52.4 GHz RADIO + SEQRAM
PTACONV
Table 3. Securable peripherals by TZSC (continued)
BusPeripheral
AHB4ADC4
AHB2XSPI1 and DLYBXS1 (1)
PKA
RNG
HASH
AES
AHB1ICACHE registers
CRC
RAMCFG
APB7LPTIM1
I2C3
LPUART1
SPI3
APB2TIM17
TIM16
USB (1)
SAI1
USART1
APB1LPTIM2
I2C1
IWDG
TIM2

1. Only available on STM32WBA25xx devices.

Table 4. TrustZone ® -aware peripherals
BusPeripheral
AHB4EXTI
RCC
PWR
AHB2OTFDEC1 (1)
GPIOH
GPIOC
GPIOB
GPIOA
Table 4. TrustZone ® -aware peripherals (continued)
BusPeripheral
AHB1GTZC1-MPCBB2
GTZC1-MPCBB1
GTZC1-TZSC
GTZC1-TZIC
FLASH interface
LPDMA1
APB7TAMP
RTC
SYSCFG

1. Only available on STM32WBA25xx devices.

2.3 Memory organization

2.3.1 Introduction

Program memory, data memory, registers and I/O ports are organized within the same linear address space.

The bytes are coded in memory in Little Endian format. The lowest numbered byte in a word is considered the word's least significant byte and the highest numbered byte the most significant.

The addressable memory space is divided into eight main blocks, of 512 Mbytes each.

2.3.2 Memory map and register boundary addresses

Figure 2. Memory map

Memory map diagram showing various memory regions and their addresses. The diagram is divided into three main vertical columns. The left column shows the main memory map from 0x0000 0000 to 0xFFFF FFFF. The middle column provides a detailed view of the peripheral and SRAM regions. The right column shows the system flash memory and SRAM regions. A legend indicates that white boxes represent 'NS = aliased nonsecure' and green boxes represent 'S = aliased secure – nonsecure callable'.

Legend:

Memory Map:

Address RangeMemory RegionSecurity Status
0x0000 0000 – 0x00800 0000CODE nonsecureNS
0x00800 0000 – 0x00A00 0000ReservedNS
0x00A00 0000 – 0x01000 0000CODE nonsecure callableS
0x01000 0000 – 0x02000 0000CODE nonsecureNS
0x02000 0000 – 0x04000 0000SRAM nonsecureNS
0x04000 0000 – 0x05000 0000SRAM nonsecure callableS
0x05000 0000 – 0x06000 0000Peripheral nonsecureNS
0x06000 0000 – 0x09000 0000ReservedNS
0x09000 0000 – 0x0A000 0000XSPI1 bankNS
0x0A000 0000 – 0x0E000 0000ReservedNS
0x0E000 0000 – 0xFFFF FFFFCPU internal peripheralsNS

Peripheral and SRAM Details:

Address RangeMemory RegionSecurity Status
0x4000 0000 – 0x4002 0000APB1-NSNS
0x4002 0000 – 0x4004 0000APB2-NSNS
0x4004 0000 – 0x4006 0000APB3-NSNS
0x4006 0000 – 0x4008 0000APB4-NSNS
0x4008 0000 – 0x4010 0000APB5-NSNS
0x4010 0000 – 0x4012 0000ReservedNS
0x4012 0000 – 0x4014 0000APB1-SS
0x4014 0000 – 0x4016 0000APB2-SS
0x4016 0000 – 0x4018 0000APB3-SS
0x4018 0000 – 0x4020 0000APB4-SS
0x4020 0000 – 0x4022 0000APB5-SS
0x4022 0000 – 0x4024 0000ReservedNS
0x4024 0000 – 0x4026 0000APB1-SS
0x4026 0000 – 0x4028 0000APB2-SS
0x4028 0000 – 0x4030 0000APB3-SS
0x4030 0000 – 0x4032 0000APB4-SS
0x4032 0000 – 0x4034 0000APB5-SS
0x4034 0000 – 0x4036 0000ReservedNS
0x4036 0000 – 0x4038 0000APB1-SS
0x4038 0000 – 0x4040 0000APB2-SS
0x4040 0000 – 0x4042 0000APB3-SS
0x4042 0000 – 0x4044 0000APB4-SS
0x4044 0000 – 0x4046 0000APB5-SS
0x4046 0000 – 0x4048 0000ReservedNS
0x4048 0000 – 0x4050 0000APB1-SS
0x4050 0000 – 0x4052 0000APB2-SS
0x4052 0000 – 0x4054 0000APB3-SS
0x4054 0000 – 0x4056 0000APB4-SS
0x4056 0000 – 0x4058 0000APB5-SS
0x4058 0000 – 0x4060 0000ReservedNS
0x4060 0000 – 0x4062 0000APB1-SS
0x4062 0000 – 0x4064 0000APB2-SS
0x4064 0000 – 0x4066 0000APB3-SS
0x4066 0000 – 0x4068 0000APB4-SS
0x4068 0000 – 0x4070 0000APB5-SS
0x4070 0000 – 0x4072 0000ReservedNS
0x4072 0000 – 0x4074 0000APB1-SS
0x4074 0000 – 0x4076 0000APB2-SS
0x4076 0000 – 0x4078 0000APB3-SS
0x4078 0000 – 0x4080 0000APB4-SS
0x4080 0000 – 0x4082 0000APB5-SS
0x4082 0000 – 0x4084 0000ReservedNS
0x4084 0000 – 0x4086 0000APB1-SS
0x4086 0000 – 0x4088 0000APB2-SS
0x4088 0000 – 0x4090 0000APB3-SS
0x4090 0000 – 0x4092 0000APB4-SS
0x4092 0000 – 0x4094 0000APB5-SS
0x4094 0000 – 0x4096 0000ReservedNS
0x4096 0000 – 0x4098 0000APB1-SS
0x4098 0000 – 0x409A 0000APB2-SS
0x409A 0000 – 0x409C 0000APB3-SS
0x409C 0000 – 0x409E 0000APB4-SS
0x409E 0000 – 0x40A0 0000APB5-SS
0x40A0 0000 – 0x40A2 0000ReservedNS
0x40A2 0000 – 0x40A4 0000APB1-SS
0x40A4 0000 – 0x40A6 0000APB2-SS
0x40A6 0000 – 0x40A8 0000APB3-SS
0x40A8 0000 – 0x40AA 0000APB4-SS
0x40AA 0000 – 0x40AC 0000APB5-SS
0x40AC 0000 – 0x40AE 0000ReservedNS
0x40AE 0000 – 0x40B0 0000APB1-SS
0x40B0 0000 – 0x40B2 0000APB2-SS
0x40B2 0000 – 0x40B4 0000APB3-SS
0x40B4 0000 – 0x40B6 0000APB4-SS
0x40B6 0000 – 0x40B8 0000APB5-SS
0x40B8 0000 – 0x40BA 0000ReservedNS
0x40BA 0000 – 0x40BC 0000APB1-SS
0x40BC 0000 – 0x40BE 0000APB2-SS
0x40BE 0000 – 0x40C0 0000APB3-SS
0x40C0 0000 – 0x40C2 0000APB4-SS
0x40C2 0000 – 0x40C4 0000APB5-SS
0x40C4 0000 – 0x40C6 0000ReservedNS
0x40C6 0000 – 0x40C8 0000APB1-SS
0x40C8 0000 – 0x40CA 0000APB2-SS
0x40CA 0000 – 0x40CC 0000APB3-SS
0x40CC 0000 – 0x40CE 0000APB4-SS
0x40CE 0000 – 0x40D0 0000APB5-SS
0x40D0 0000 – 0x40D2 0000ReservedNS
0x40D2 0000 – 0x40D4 0000APB1-SS
0x40D4 0000 – 0x40D6 0000APB2-SS
0x40D6 0000 – 0x40D8 0000APB3-SS
0x40D8 0000 – 0x40DA 0000APB4-SS
0x40DA 0000 – 0x40DC 0000APB5-SS
0x40DC 0000 – 0x40DE 0000ReservedNS
0x40DE 0000 – 0x40E0 0000APB1-SS
0x40E0 0000 – 0x40E2 0000APB2-SS
0x40E2 0000 – 0x40E4 0000APB3-SS
0x40E4 0000 – 0x40E6 0000APB4-SS
0x40E6 0000 – 0x40E8 0000APB5-SS
0x40E8 0000 – 0x40EA 0000ReservedNS
0x40EA 0000 – 0x40EC 0000APB1-SS
0x40EC 0000 – 0x40EE 0000APB2-SS
0x40EE 0000 – 0x40F0 0000APB3-SS
0x40F0 0000 – 0x40F2 0000APB4-SS
0x40F2 0000 – 0x40F4 0000APB5-SS
0x40F4 0000 – 0x40F6 0000ReservedNS
0x40F6 0000 – 0x40F8 0000APB1-SS
0x40F8 0000 – 0x40FA 0000APB2-SS
0x40FA 0000 – 0x40FC 0000APB3-SS
0x40FC 0000 – 0x40FE 0000APB4-SS
0x40FE 0000 – 0x4100 0000APB5-SS
0x4100 0000 – 0x4102 0000ReservedNS
0x4102 0000 – 0x4104 0000APB1-SS
0x4104 0000 – 0x4106 0000APB2-SS
0x4106 0000 – 0x4108 0000APB3-SS
0x4108 0000 – 0x410A 0000APB4-SS
0x410A 0000 – 0x410C 0000APB5-SS
0x410C 0000 – 0x410E 0000ReservedNS
0x410E 0000 – 0x4110 0000APB1-SS
0x4110 0000 – 0x4112 0000APB2-SS
0x4112 0000 – 0x4114 0000APB3-SS
0x4114 0000 – 0x4116 0000APB4-SS
0x4116 0000 – 0x4118 0000APB5-SS
0x4118 0000 – 0x411A 0000ReservedNS
0x411A 0000 – 0x411C 0000APB1-SS
0x411C 0000 – 0x411E 0000APB2-SS
0x411E 0000 – 0x4120 0000APB3-SS
0x4120 0000 – 0x4122 0000APB4-SS
0x4122 0000 – 0x4124 0000APB5-SS
0x4124 0000 – 0x4126 0000ReservedNS
0x4126 0000 – 0x4128 0000APB1-SS
0x4128 0000 – 0x412A 0000APB2-SS
0x412A 0000 – 0x412C 0000APB3-SS
0x412C 0000 – 0x412E 0000APB4-SS
0x412E 0000 – 0x4130 0000APB5-SS
0x4130 0000 – 0x4132 0000ReservedNS
0x4132 0000 – 0x4134 0000APB1-SS
0x4134 0000 – 0x4136 0000APB2-SS
0x4136 0000 – 0x4138 0000APB3-SS
0x4138 0000 – 0x413A 0000APB4-SS
0x413A 0000 – 0x413C 0000APB5-SS
0x413C 0000 – 0x413E 0000ReservedNS
0x413E 0000 – 0x4140 0000APB1-SS
0x4140 0000 – 0x4142 0000APB2-SS
0x4142 0000 – 0x4144 0000APB3-SS
0x4144 0000 – 0x4146 0000APB4-SS
0x4146 0000 – 0x4148 0000APB5-SS
0x4148 0000 – 0x414A 0000ReservedNS
0x414A 0000 – 0x414C 0000APB1-SS
0x414C 0000 – 0x414E 0000APB2-SS
0x414E 0000 – 0x4150 0000APB3-SS
0x4150 0000 – 0x4152 0000APB4-SS
0x4152 0000 – 0x4154 0000APB5-SS
0x4154 0000 – 0x4156 0000ReservedNS
0x4156 0000 – 0x4158 0000APB1-SS
0x4158 0000 – 0x415A 0000APB2-SS
0x415A 0000 – 0x415C 0000APB3-SS
0x415C 0000 – 0x415E 0000APB4-SS
0x415E 0000 – 0x4160 0000APB5-SS
0x4160 0000 – 0x4162 0000ReservedNS
0x4162 0000 – 0x4164 0000APB1-SS
0x4164 0000 – 0x4166 0000APB2-SS
0x4166 0000 – 0x4168 0000APB3-SS
0x4168 0000 – 0x416A 0000APB4-SS
0x416A 0000 – 0x416C 0000APB5-SS
0x416C 0000 – 0x416E 0000ReservedNS
0x416E 0000 – 0x4170 0000APB1-SS
0x4170 0000 – 0x4172 0000APB2-SS
0x4172 0000 – 0x4174 0000APB3-SS
0x4174 0000 – 0x4176 0000APB4-SS
0x4176 0000 – 0x4178 0000APB5-SS
0x4178 0000 – 0x417A 0000ReservedNS
0x417A 0000 – 0x417C 0000APB1-SS
0x417C 0000 – 0x417E 0000APB2-SS
0x417E 0000 – 0x4180 0000APB3-SS
0x4180 0000 – 0x4182 0000APB4-SS
0x4182 0000 – 0x4184 0000APB5-SS
0x4184 0000 – 0x4186 0000ReservedNS
0x4186 0000 – 0x4188 0000APB1-SS
0x4188 0000 – 0x418A 0000APB2-SS
0x418A 0000 – 0x418C 0000APB3-SS
0x418C 0000 – 0x418E 0000APB4-SS
0x418E 0000 – 0x4190 0000APB5-SS
0x4190 0000 – 0x4192 0000ReservedNS
0x4192 0000 – 0x4194 0000APB1-SS
0x4194 0000 – 0x4196 0000APB2-SS
0x4196 0000 – 0x4198 0000APB3-SS
0x4198 0000 – 0x419A 0000APB4-SS
0x419A 0000 – 0x419C 0000APB5-SS
0x419C 0000 – 0x419E 0000ReservedNS
0x419E 0000 – 0x41A0 0000APB1-SS
0x41A0 0000 – 0x41A2 0000APB2-SS
0x41A2 0000 – 0x41A4 0000APB3-SS
0x41A4 0000 – 0x41A6 0000APB4-SS
0x41A6 0000 – 0x41A8 0000APB5-SS
0x41A8 0000 – 0x41AA 0000ReservedNS
0x41AA 0000 – 0x41AC 0000APB1-SS
0x41AC 0000 – 0x41AE 0000APB2-SS
0x41AE 0000 – 0x41B0 0000APB3-SS
0x41B0 0000 – 0x41B2 0000APB4-SS
0x41B2 0000 – 0x41B4 0000APB5-SS
0x41B4 0000 – 0x41B6 0000ReservedNS
0x41B6 0000 – 0x41B8 0000APB1-SS
0x41B8 0000 – 0x41BA 0000APB2-SS
0x41BA 0000 – 0x41BC 0000APB3-SS
0x41BC 0000 – 0x41BE 0000APB4-SS
0x41BE 0000 – 0x41C0 0000APB5-SS
0x41C0 0000 – 0x41C2 0000ReservedNS
0x41C2 0000 – 0x41C4 0000APB1-SS
0x41C4 0000 – 0x41C6 0000APB2-SS
0x41C6 0000 – 0x41C8 0000APB3-SS
0x41C8 0000 – 0x41CA 0000APB4-SS
0x41CA 0000 – 0x41CC 0000APB5-SS
0x41CC 0000 – 0x41CE 0000ReservedNS
0x41CE 0000 – 0x41D0 0000APB1-SS
0x41D0 0000 – 0x41D2 0000APB2-SS
0x41D2 0000 – 0x41D4 0000APB3-SS
0x41D4 0000 – 0x41D6 0000APB4-SS
0x41D6 0000 – 0x41D8 0000APB5-SS
0x41D8 0000 – 0x41DA 0000ReservedNS
0x41DA 0000 – 0x41DC 0000APB1-SS
0x41DC 0000 – 0x41DE 0000APB2-SS
0x41DE 0000 – 0x41E0 0000APB3-SS
0x41E0 0000 – 0x41E2 0000APB4-SS
0x41E2 0000 – 0x41E4 0000APB5-SS
0x41E4 0000 – 0x41E6 0000ReservedNS
0x41E6 0000 – 0x41E8 0000
Memory map diagram showing various memory regions and their addresses. The diagram is divided into three main vertical columns. The left column shows the main memory map from 0x0000 0000 to 0xFFFF FFFF. The middle column provides a detailed view of the peripheral and SRAM regions. The right column shows the system flash memory and SRAM regions. A legend indicates that white boxes represent 'NS = aliased nonsecure' and green boxes represent 'S = aliased secure – nonsecure callable'.

Table 5 gives the boundary addresses of the peripherals available in the device.

!!! LINKS TO BE UPDATED !!!

Table 5. Memory map and peripheral register boundary addresses

BusSecure Boundary address (1)Nonsecure Boundary address (1)Size (bytes)PeripheralPeripheral register map
-0xA000 0000 - 0xDFFF FFFF0xA000 0000 - 0xDFFF FFFF-Reserved-
-0x9000 0000 - 0x9FFF FFFF0x9000 0000 - 0x9FFF FFFF256 MXSPI1 bank (2)-
-0x5A00 0000 - 0x8FFF FFFF0x4A00 0000 - 0x8FFF FFFF-Reserved-
AHB50x5803 8400 - 0x59FF FFFF0x4803 8400 - 0x49FF FFFF-Reserved-
0x5803 8000 - 0x5803 83FF0x4803 8000 - 0x4803 83FF1 KPTACONVSection 10.5.4 on page 281
0x5802 A800 - 0x5803 7FFF0x4802 A800 - 0x4803 7FFF-Reserved-
0x5802 8000 - 0x5802 A7FF0x4802 8000 - 0x4802 A7FF10 KRXTXRAM-
0x5802 1200 - 0x5802 7FFF0x4802 1200 - 0x4802 7FFF-Reserved-
0x5802 1000 - 0x5802 11FF0x4802 1000 - 0x4802 11FF0.5 KSEQRAM-
0x5802 0000 - 0x5802 0FFF0x4802 0000 - 0x4802 0FFF4 K2.4 GHz RADIO-
-0x5800 0000 - 0x5801 FFFF0x4800 0000 - 0x4801 FFFF-Reserved-
AHB40x5602 2400 - 0x57FF FFFF0x4602 2400 - 0x47FF FFFF-Reserved-
0x5602 2000 - 0x5602 23FF0x4602 2000 - 0x4602 23FF1 KEXTISection 18.6.15 on page 609
0x5602 1400 - 0x5602 1FFF0x4602 1400 - 0x4602 1FFF-Reserved-
0x5602 1000 - 0x5602 13FF0x4602 1000 - 0x4602 13FF1 KADC4Section 22.7.18 on page 719
0x5602 0C00 - 0x5602 0FFF0x4602 0C00 - 0x4602 0FFF1 KRCCSection 12.8.54 on page 449
0x5602 0800 - 0x5602 0BFF0x4602 0800 - 0x4602 0BFF1 KPWRSection 11.10.25 on page 346
0x5602 0000 - 0x5602 07FF0x4602 0000 - 0x4602 07FF-Reserved-
-0x5601 0000 - 0x5601 FFFF0x4601 0000 - 0x4601 FFFF-Reserved-

Table 5. Memory map and peripheral register boundary addresses (continued)

BusSecure Boundary address (1)Nonsecure Boundary address (1)Size (bytes)PeripheralPeripheral register map
APB70x5600 8000 - 0x5600 FFFF0x4600 8000 - 0x4600 FFFF-Reserved-
0x5600 7C00 - 0x5600 7FFF0x4600 7C00 - 0x4600 7FFF1 KTAMPSection 34.6.19 on page 1198
0x5600 7800 - 0x5600 7BFF0x4600 7800 - 0x4600 7BFF1 KRTCSection 33.6.26 on page 1154
0x5600 4800 - 0x5600 77FF0x4600 4800 - 0x4600 77FF-Reserved-
0x5600 4400 - 0x5600 47FF0x4600 4400 - 0x4600 47FF1 KLPTIM1Section 30.7.16 on page 1084
0x5600 2C00 - 0x5600 43FF0x4600 2C00 - 0x4600 43FF-Reserved-
0x5600 2800 - 0x5600 2BFF0x4600 2800 - 0x4600 2BFF1 KI2C3Section 35.9.13 on page 1266
0x5600 2400 - 0x5600 27FF0x4600 2400 - 0x4600 27FF1 KLPUART1Section 37.7.15 on page 1410
0x5600 2000 - 0x5600 23FF0x4600 2000 - 0x4600 23FF1 KSPI3Section 38.8.15 on page 1462
0x5600 0800 - 0x5600 1FFF0x4600 0800 - 0x4600 1FFF-Reserved
0x5600 0400 - 0x5600 07FF0x4600 0400 - 0x4600 07FF1 KSYSCFGSection 14.3.11 on page 516
0x5600 0000 - 0x5600 03FF0x4600 0000 - 0x4600 03FF-Reserved-
-0x5400 0000 - 0x55FF FFFF0x4400 0000 - 0x45FF FFFF-Reserved-

Table 5. Memory map and peripheral register boundary addresses (continued)

BusSecure Boundary address (1)Nonsecure Boundary address (1)Size (bytes)PeripheralPeripheral register map
AHB20x520D 1800 - 0x53FF FFFF0x420D 1800 - 0x43FF FFFF-Reserved-
0x520D 1400 - 0x520D 17FF0x420D 1400 - 0x420D 17FF1 KXSPI1 (2)Section 20.7.14 on page 651
0x520C F400 - 0x520D 13FF0x420C F400 - 0x420D 13FF-Reserved-
0x520C F000 - 0x520C F3FF0x420C F000 - 0x420C F3FF1 KDLYBXS1 (2)Section 21.5.3 on page 658
0x520C 5400 - 0x520C EFFF0x420C 5400 - 0x420C EFFF-Reserved-
0x520C 5000 - 0x520C 53FF0x420C 5000 - 0x420C 53FF1 KOTFDEC1 (2)Section 26.6.15 on page 825
0x520C 4000 - 0x530C 4FFF0x420C 4000 - 0x420C 4FFF-Reserved-
0x520C 3C00 - 0x520C 3FFF0x420C 3C00 - 0x420C 3FFF8 KPKA continueSection 27.8.5 on page 861
0x520C 2400 - 0x520C 3BFF0x420C 2400 - 0x420C 3BFFPKA RAM
0x520C 2000 - 0x520C 23FF0x420C 2000 - 0x420C 23FFPKA
0x520C 0C00 - 0x520C 1FFF0x420C 0C00 - 0x420C 1FFF-Reserved-
0x520C 0800 - 0x520C 0BFF0x420C 0800 - 0x420C 0BFF1 KRNGSection 23.7.9 on page 741
0x520C 0400 - 0x520C 07FF0x420C 0400 - 0x420C 07FF1 KHASHSection 25.6.8 on page 804
0x520C 0000 - 0x520C 03FF0x420C 0000 - 0x420C 03FF1 KAESSection 24.9.21 on page 783
0x5202 2000 - 0x520B FFFF0x4202 2000 - 0x420B FFFF-Reserved-
0x5202 1C00 - 0x5202 1FFF0x4202 1C00 - 0x4202 1FFF1 KGPIOHSection 13.8.1 on page 493
0x5202 0C00 - 0x5202 1BFF0x4202 0C00 - 0x4202 1BFF-Reserved-
0x5202 0800 - 0x5202 0BFF0x4202 0800 - 0x4202 0BFF1 KGPIOCSection 13.7.1 on page 487
0x5202 0400 - 0x5202 07FF0x4202 0400 - 0x4202 07FF1 KGPIOBSection 13.6.1 on page 477
0x5202 0000 - 0x5202 03FF0x4202 0000 - 0x4202 03FF1 KGPIOASection 13.5.1 on page 469
-0x5200 0000 - 0x5201 FFFF0x4200 0000 - 0x4201 FFFF-Reserved-
AHB10x5002 3400 - 0x51FF FFFF0x4002 3400 - 0x41FF FFFF-Reserved-
0x5003 3000 - 0x5003 33FF0x4003 3000 - 0x4003 33FF1 KGTZC1_MPCBB2Section 5.8 on page 158
0x5003 2C00 - 0x5003 2FFF0x4003 2C00 - 0x4003 2FFF1 KGTZC1_MPCBB1Section 5.8 on page 158
0x5003 2800 - 0x5003 2BFF0x4003 2800 - 0x4003 2BFF1 KGTZC1_TZICSection 5.7 on page 142
0x5003 2400 - 0x5003 27FF0x4003 2400 - 0x4003 27FF1 KGTZC1_TZSCSection 5.6 on page 128
0x5003 0800 - 0x5003 23FF0x4003 0800 - 0x5003 23FF-Reserved-
0x5003 0400 - 0x5003 07FF0x4003 0400 - 0x4003 07FF1 KICACHESection 8.7.8 on page 264
0x5002 7000 - 0x5003 03FF0x4002 7000 - 0x4003 03FF-Reserved-
0x5002 6000 - 0x5002 6FFF0x4002 6000 - 0x4002 6FFF4 KRAMCFGSection 6.6.4 on page 170
0x5002 3400 - 0x5002 5FFF0x4002 3400 - 0x4002 5FFF-Reserved-
0x5002 3000 - 0x5002 33FF0x4002 3000 - 0x4002 33FF1 KCRCSection 19.4.6 on page 617
0x5002 2400 - 0x5002 2FFF0x4002 2400 - 0x4002 2FFF-Reserved-
0x5002 2000 - 0x5002 23FF0x4002 2000 - 0x4002 23FF1 KFLASH interfaceSection 7.9.36 on page 245
0x5002 1000 - 0x5002 1FFF0x4002 1000 - 0x4002 1FFF-Reserved-
0x5002 0000 - 0x5002 0FFF0x4002 0000 - 0x4002 0FFF4 KLPDMA1Section 16.8.16 on page 584

Table 5. Memory map and peripheral register boundary addresses (continued)

BusSecure Boundary address (1)Nonsecure Boundary address (1)Size (bytes)PeripheralPeripheral register map
APB20x5001 6C00 - 0x5001 FFFF0x4001 6C00 - 0x4001 FFFF-Reserved-
0x5001 6400 - 0x5001 6BFF0x4001 6400 - 0x4001 6BFF2 KUSB SRAM (2)Section 40.6.8 on page 1568
0x5001 6000 - 0x5001 63FF0x4001 6000 - 0x4001 63FF1 KUSB (2)Section 40.6.8 on page 1568
0x5001 5800 - 0x5001 5FFF0x4001 5800 - 0x4001 5FFF-Reserved-
0x5001 5400 - 0x5001 57FF0x4001 5400 - 0x4001 57FF1 KSAI1Section 39.6.19 on page 1526
0x5001 4C00 - 0x5001 53FF0x4001 4C00 - 0x4001 53FF-Reserved-
0x5001 4800 - 0x5001 4BFF0x4001 4800 - 0x4001 4BFF1 KTIM17Section 29.7.22 on page 1038
0x5001 4400 - 0x5001 47FF0x4001 4400 - 0x4001 47FF1 KTIM16Section 29.7.22 on page 1038
0x5001 3C00 - 0x5001 43FF0x4001 3C00 - 0x4001 43FF-Reserved-
0x5001 3800 - 0x5001 3BFF0x4001 3800 - 0x4001 3BFF1 KUSART1Section 36.8.17 on page 1355
APB10x5001 0000 - 0x5001 37FF0x4001 0000 - 0x4001 37FF-Reserved-
0x5000 9800 - 0x5000 FFFF0x4000 9800 - 0x4000 FFFF-Reserved-
0x5000 9400 - 0x5000 97FF0x4000 9400 - 0x4000 97FF1 KLPTIM2Section 30.7.16 on page 1084
0x5000 5800 - 0x5000 93FF0x4000 5800 - 0x4000 93FF-Reserved-
0x5000 5400 - 0x5000 57FF0x4000 5400 - 0x4000 57FF1 KI2C1Section 35.9.13 on page 1266
0x5000 3400 - 0x5000 53FF0x4000 3400 - 0x4000 53FF-Reserved-
0x5000 3000 - 0x5000 33FF0x4000 3000 - 0x4000 33FF1 KIWDGSection 32.7.7 on page 1101
0x5000 0400 - 0x5000 2FFF0x4000 0400 - 0x4000 2FFF-Reserved-
0x5000 0000 - 0x5000 03FF0x4000 0000 - 0x4000 03FF1 KTIM2Section 28.5.25 on page 972

Table 5. Memory map and peripheral register boundary addresses (continued)

BusSecure Boundary address (1)Nonsecure Boundary address (1)Size (bytes)PeripheralPeripheral register map
AHB0x3802 A800 - 0x4FFF FFFF0x2802 A800 - 0x3FFF FFFF-Reserved-
0x3802 8000 - 0x3802 A7FF0x2802 8000 - 0x2802 A7FF10 KRXTXSRAM
0x3001 8000 - 0x3802 7FFF0x2001 8000 - 0x2802 7FFF-Reserved-
0x3001 2000 - 0x3001 7FFF0x2001 2000 - 0x2001 7FFF24 KSRAM2 page 2
0x3001 0000 - 0x3001 1FFF0x2001 0000 - 0x2001 1FFF8 KSRAM2 page 1
0x3000 0000 - 0x3000 FFFF0x2000 0000 - 0x2000 FFFF64 KSRAM1-
0x0FF9 0000 - 0x2FFF FFFF0x0BF9 0000 - 0x1FFF FFFF-Reserved-
0x0FF8 E000 - 0x0FF8 FFFF0x0BF8 E000 - 0x0BF8 FFFF16 KFlash memory user optionsSection 7.4.1 on page 191
0x0FF8 D500 - 0x0FF8 DFFF0x0BF8 D500 - 0x0BF8 DFFF2.75 KDESIGSection 42.1.11 on page 1724
0x0FF8 D200 - 0x0FF8 D4FF0x0BF8 D200 - 0x0BF8 D4FF-Reserved-
0x0FF8 D000 - 0x0FF8 D1FF0x0BF8 D000 - 0x0BF8 D1FF512OTP-
0x0FF8 5000 - 0x0FF8 CFFF0x0BF8 5000 - 0x0BF8 CFFF32 KBootloader-
0x0FF8 4000 - 0x0FF8 4FFF0x0BF8 4000 - 0x0BF8 4FFF4 KRSS-Lib-
0x0FF8 0000 - 0x0FF8 3FFF0x0BF8 0000 - 0x0BF8 3FFF16 KRSS-Boot-
0x0E01 8000 - 0x0FF7 FFFF0x0A01 8000 - 0x0BF7 FFFF-Reserved-
0x0E01 2000 - 0x0E01 7FFF0x0A01 2000 - 0x0A01 7FFF24 KSRAM2 page 2
0x0E01 0000 - 0x0E01 1FFF0x0A01 0000 - 0x0A01 1FFF8 KSRAM2 page 1
0x0E00 0000 - 0x0E00 FFFF0x0A00 0000 - 0x0A00 FFFF64 KSRAM1-
0x0C08 0000 - 0x0DFF FFFF0x0808 0000 - 0x09FF FFFF-Reserved-
0x0C00 0000 - 0x0C07 FFFF0x0800 0000 - 0x0807 FFFF512 KUser flash memory-
0x0000 0000 - 0x0BFF FFFF0x0000 0000 - 0x07FF FFFF-Reserved-

1. Gray shaded fields are reserved.

2. Only available on STM32WBA25xx devices.

2.3.3 Embedded SRAM

The devices feature 96-Kbyte SRAMs:

The SRAMs can be accessed as bytes, half-words (16 bits), or full words (32 bits). These memories can be addressed by both the CPU and DMA.

The CPU can access the SRAMs through the system bus or using the ICACHE through the C-bus, depending on the access address.

When TrustZone ® security is enabled, all SRAMs are secure after reset. The SRAM can be programmed as nonsecure with a block granularity. For more details, refer to Section 5: Global TrustZone ® controller (GTZC) .

SRAM features are detailed in Section 6.3.1: Internal SRAM features .

2.3.4 Flash memory overview

The flash memory is composed of two distinct physical areas:

The FLASH interface implements instruction access and data access based on the AHB protocol. It also implements the necessary logic to carry out the flash memory operations (program/erase) that are controlled through the FLASH registers, as well as security access control features. Refer to Section 7: Embedded flash memory (FLASH) for more details.

3 Boot modes

At startup, a BOOT0 pin, and the NBOOT0, NSWBOOT0, NSBOOTADDx/SECBOOTADD0, and TZEN option bytes are used to select the boot memory address, which includes:

The BOOT0 value may come from the PH3-BOOT0 pin or from the option bit NBOOT0, depending on the value of a user option bit to free the GPIO pad, if needed.

The bootloader, located in the system memory, is used to program the flash memory by using USART, I2C, or SPI in device mode.

Table 6 details the boot modes when TrustZone® is disabled, and Table 7 when enabled.

Table 6. Boot modes when TrustZone® is disabled (TZEN = 0)

BOOT0 (1)Boot address option bytes selectionBoot initial VTOR_NS
NonsecureST programmed default value
0NSBOOTADD00x0800 0000 - User flash memoryNSBOOTADD0
1NSBOOTADD10x0BF8 5000 - BootloaderNSBOOTADD1

1. BOOT0 is either not NBOOT0 when NSWBOOT0 = 0 or pin PH3-BOOT0 when NSWBOOT0 = 1

When TrustZone® is enabled by setting the TZEN option bit, the boot space must be in the secure area. The SECBOOTADD0 option bytes are used to select the boot secure memory address.

A unique boot entry option can be selected by setting the BOOT_LOCK option bit. In this case, all other boot options are ignored.

Table 7. Boot modes when TrustZone® is enabled (TZEN = 1)

BOOT_LOCKBOOT0 (1)RSS commandBoot address option bytes selectionBoot initial VTOR_S
SecureST programmed default valueNonsecureST programmed default value
000SECBOOTADD00x0C00 0000 - User flashNSBOOTADD00x0800 0000 (2)SECBOOTADD0
10N/A0x0FF8 0000 - RSSNSBOOTADD10x0BF8 50000x0FF8 0000
0≠ 0N/A0x0FF8 0000 - RSSNSBOOTADD00x0800 0000 (2)0x0FF8 0000
1NSBOOTADD10x0BF8 5000
10xSECBOOTADD00x0C00 0000 - User flashNSBOOTADD00x0800 0000 (2)SECBOOTADD0
1NSBOOTADD10x0BF8 5000 (3)

1. BOOT0 is either not NBOOT0 when NSWBOOT0 = 0 or pin PH3-BOOT0 when NSWBOOT0 = 1

2. The default NSBOOTADD0 points to a secure flash memory area, at boot privileged software must write Cortex®-M33 VTOR_NS to point to a nonsecure area.

  1. 3. The default NSBOOTADD1 points to the bootloader, at boot privileged software must write Cortex®-M33 VTOR_NS to point to a nonsecure user area.

The boot address option bytes are used to program any boot memory address. However, the allowed address space depends on the flash memory read protection (RDP) level.

If the programmed boot memory address is outside of the allowed memory-mapped area when TZEN = 0 and the RDP level is 2, or when TZEN = 1 and the RDP level is 0.5 or more, the default boot fetch address is forced either in the secure flash memory or the nonsecure flash memory, depending on the TrustZone® security option, as described in Table 8 .

Table 8. Boot space versus RDP protection

RDPTZEN = 1 (1)TZEN = 0
Valid address range SECBOOTADDValid address range NSBOOTADDx
0Any boot addressAny boot address
0.5Boot address only in RSS 0x0FF8 0000 or in secure flash memory: 0x0C00 0000- 0x0C07 FFFF.N/A
1Otherwise boot address forced to RSS: 0x0FF8 0000.Any boot address
2Boot address only in flash memory: 0x0800 0000 - 0x0807 FFFF.
Otherwise boot address forced to 0x0800 0000.
  1. 1. The initial NSBOOTADDx can point to a secure area. At boot, privileged software must write Cortex®-M33 VTOR_NS to point to a nonsecure user area.

The BOOT0 value (either coming from the pin or the user option) is latched upon reset release. It is up to the user to set the BOOT0 or NBOOT0 values to select the required boot mode.

The BOOT0 pin or NBOOT0 user option (depending on NSWBOOT0 in FLASH_OPTR) is also resampled when exiting standby modes. Consequently, the BOOT0 pin or user option must be kept in the required boot mode configuration in standby modes. After the startup delay, the selection of the boot area is done before releasing the processor reset.

PH3-BOOT0 GPIO is configured as follows:

Embedded bootloader

The embedded bootloader is located in the system memory and is programmed by STMicroelectronics during production. Refer to AN2606: STM32 microcontroller system memory boot mode .

Embedded root security services (RSS)

The embedded RSS are located in the secure information block, programmed by STMicroelectronics during production.