RM0478-STM32WB10CC
Introduction
This document is addressed to application developers. It provides complete information on how to use the STM32WB10CC microcontroller memory and peripherals.
The STM32WB10CC multiprotocol wireless and ultra-low-power devices embed a powerful and ultra-low-power radio compliant with the Bluetooth ® Low Energy SIG specification 5.4. They contain a dedicated Arm ® Cortex ® -M0+ for performing all the real-time low layer operation.
The STM32WB10CC microcontrollers feature 320 Kbyte flash memory and 48 Kbytes SRAM, and include state of the art patented technology.
Related documents
Available from STMicroelectronics web site www.st.com :
- • STM32WB10CC datasheet
- • STM32WB10CC errata sheet
For information on the Arm ® Cortex ® -M4 and Cortex ® -M0+ cores, refer to the corresponding Technical Reference Manuals, available from the www.arm.com website.
For information on Bluetooth ® refer to www.bluetooth.com .
Contents
| 1 | Documentation conventions . . . . . | 49 |
| 1.1 | General information . . . . . | 49 |
| 1.2 | List of abbreviations for registers . . . . . | 49 |
| 1.3 | Register reset value . . . . . | 50 |
| 1.4 | Glossary . . . . . | 50 |
| 1.5 | Availability of peripherals . . . . . | 50 |
| 2 | System and memory overview . . . . . | 51 |
| 2.1 | System architecture . . . . . | 51 |
| 2.1.1 | S0: CPU1 (CPU1 Cortex®-M4) I-bus . . . . . | 52 |
| 2.1.2 | S1: CPU1 (CPU1 Cortex®-M4) D-bus . . . . . | 52 |
| 2.1.3 | S2: CPU1 (CPU1 Cortex®-M4) S-bus . . . . . | 52 |
| 2.1.4 | S3: CPU2 (Cortex®-M0+) S-bus . . . . . | 52 |
| 2.1.5 | S4: DMA-bus . . . . . | 53 |
| 2.1.6 | S5: Radio system-bus . . . . . | 53 |
| 2.1.7 | BusMatrix . . . . . | 53 |
| 2.2 | Memory organization . . . . . | 54 |
| 2.2.1 | Introduction . . . . . | 54 |
| 2.2.2 | Memory map and register boundary addresses . . . . . | 55 |
| 2.2.3 | Bit banding . . . . . | 59 |
| 2.3 | Boot configuration . . . . . | 59 |
| 2.4 | CPU2 boot . . . . . | 61 |
| 2.5 | CPU2 SRAM fetch disable . . . . . | 61 |
| 3 | Embedded flash memory (FLASH) . . . . . | 62 |
| 3.1 | Introduction . . . . . | 62 |
| 3.2 | FLASH main features . . . . . | 62 |
| 3.3 | FLASH functional description . . . . . | 63 |
| 3.3.1 | Flash memory organization . . . . . | 63 |
| 3.3.2 | Empty check . . . . . | 63 |
| 3.3.3 | Error code correction (ECC) . . . . . | 64 |
| 3.3.4 | Read access latency . . . . . | 64 |
| 3.3.5 | Adaptive real-time memory accelerator (ART Accelerator) . . . . . | 66 |
| 3.3.6 | Flash memory program and erase operations . . . . . | 69 |
| 3.3.7 | Flash main memory erase sequences . . . . . | 70 |
| 3.3.8 | Flash main memory programming sequences . . . . . | 72 |
| 3.4 | FLASH option bytes . . . . . | 77 |
| 3.4.1 | Option bytes description . . . . . | 77 |
| 3.4.2 | Option bytes programming . . . . . | 84 |
| 3.5 | FLASH UID64 . . . . . | 87 |
| 3.6 | Flash memory protection . . . . . | 88 |
| 3.6.1 | Read protection (RDP) . . . . . | 88 |
| 3.6.2 | Proprietary code readout protection (PCROP) . . . . . | 92 |
| 3.6.3 | Write protection (WRP) . . . . . | 93 |
| 3.6.4 | CPU2 security (ESE) . . . . . | 94 |
| 3.7 | FLASH program/erase suspension . . . . . | 95 |
| 3.8 | FLASH interrupts . . . . . | 96 |
| 3.9 | Register access protection . . . . . | 96 |
| 3.10 | FLASH registers . . . . . | 97 |
| 3.10.1 | Flash memory access control register (FLASH_ACR) . . . . . | 97 |
| 3.10.2 | Flash memory key register (FLASH_KEYR) . . . . . | 98 |
| 3.10.3 | Flash memory option key register (FLASH_OPTKEYR) . . . . . | 98 |
| 3.10.4 | Flash memory status register (FLASH_SR) . . . . . | 99 |
| 3.10.5 | Flash memory control register (FLASH_CR) . . . . . | 100 |
| 3.10.6 | Flash memory ECC register (FLASH_ECCR) . . . . . | 102 |
| 3.10.7 | Flash memory option register (FLASH_OPTR) . . . . . | 103 |
| 3.10.8 | Flash memory PCROP zone A start address register (FLASH_PCROP1ASR) . . . . . | 106 |
| 3.10.9 | Flash memory PCROP zone A end address register (FLASH_PCROP1AER) . . . . . | 106 |
| 3.10.10 | Flash memory WRP area A address register (FLASH_WRP1AR) . . . . . | 107 |
| 3.10.11 | Flash memory WRP area B address register (FLASH_WRP1BR) . . . . . | 107 |
| 3.10.12 | Flash memory PCROP zone B start address register (FLASH_PCROP1BSR) . . . . . | 108 |
| 3.10.13 | Flash memory PCROP zone B end address register (FLASH_PCROP1BER) . . . . . | 108 |
| 3.10.14 | Flash memory IPCC mailbox data buffer address register (FLASH_IPCCBR) . . . . . | 109 |
| 3.10.15 | Flash memory CPU2 access control register (FLASH_C2ACR) . . . . . | 109 |
| 3.10.16 | Flash memory CPU2 status register (FLASH_C2SR) . . . . . | 110 |
| 3.10.17 | Flash memory CPU2 control register (FLASH_C2CR) . . . . . | 112 |
3.10.18 Secure flash memory start address register (FLASH_SFR) . . . . . 113
3.10.19 Flash memory secure SRAM2 start address and CPU2 reset vector register (FLASH_SRRVR) . . . . . 114
3.10.20 FLASH register map . . . . . 116
4 Radio system . . . . . 118
4.1 Introduction . . . . . 118
4.2 Main features . . . . . 118
4.3 Radio system functional description . . . . . 119
4.3.1 General description . . . . . 119
5 Cyclic redundancy check calculation unit (CRC) . . . . . 120
5.1 Introduction . . . . . 120
5.2 CRC main features . . . . . 120
5.3 CRC functional description . . . . . 121
5.3.1 CRC block diagram . . . . . 121
5.3.2 CRC internal signals . . . . . 121
5.3.3 CRC operation . . . . . 121
5.4 CRC registers . . . . . 123
5.4.1 CRC data register (CRC_DR) . . . . . 123
5.4.2 CRC independent data register (CRC_IDR) . . . . . 123
5.4.3 CRC control register (CRC_CR) . . . . . 124
5.4.4 CRC initial value (CRC_INIT) . . . . . 125
5.4.5 CRC polynomial (CRC_POL) . . . . . 125
5.4.6 CRC register map . . . . . 126
6 Power control (PWR) . . . . . 127
6.1 Power supplies . . . . . 127
6.1.1 Independent analog peripherals supply . . . . . 128
6.1.2 Battery backup domain . . . . . 128
6.1.3 Voltage regulator . . . . . 129
6.2 Power supply supervisor . . . . . 130
6.2.1 Power-on reset (POR) / power-down reset (PDR) / brown-out reset (BOR) . . . . . 130
6.2.2 Programmable voltage detector (PVD) . . . . . 131
6.3 CPU2 boot . . . . . 132
6.4 Low-power modes . . . . . 134
| 6.4.1 | Run mode ..... | 140 |
| 6.4.2 | Low-power run mode (LP run) ..... | 140 |
| 6.4.3 | Entering Low-power mode ..... | 141 |
| 6.4.4 | Exiting Low-power mode ..... | 141 |
| 6.4.5 | Sleep mode ..... | 142 |
| 6.4.6 | Low-power sleep mode (LP sleep) ..... | 143 |
| 6.4.7 | Stop0 mode ..... | 144 |
| 6.4.8 | Stop1 mode ..... | 146 |
| 6.4.9 | Standby mode ..... | 147 |
| 6.4.10 | Shutdown mode ..... | 149 |
| 6.4.11 | Auto wake-up from Low-power mode ..... | 150 |
| 6.5 | Real-time radio information ..... | 151 |
| 6.6 | PWR registers ..... | 152 |
| 6.6.1 | PWR control register 1 (PWR_CR1) ..... | 152 |
| 6.6.2 | PWR control register 2 (PWR_CR2) ..... | 153 |
| 6.6.3 | PWR control register 3 (PWR_CR3) ..... | 153 |
| 6.6.4 | PWR control register 4 (PWR_CR4) ..... | 155 |
| 6.6.5 | PWR status register 1 (PWR_SR1) ..... | 155 |
| 6.6.6 | PWR status register 2 (PWR_SR2) ..... | 156 |
| 6.6.7 | PWR status clear register (PWR_SCR) ..... | 157 |
| 6.6.8 | PWR Port A pull-up control register (PWR_PUCRA) ..... | 158 |
| 6.6.9 | PWR Port A pull-down control register (PWR_PDCRA) ..... | 158 |
| 6.6.10 | PWR Port B pull-up control register (PWR_PUCRB) ..... | 159 |
| 6.6.11 | PWR Port B pull-down control register (PWR_PDCRB) ..... | 159 |
| 6.6.12 | PWR Port C pull-up control register (PWR_PUCRC) ..... | 160 |
| 6.6.13 | PWR Port C pull-down control register (PWR_PDCRC) ..... | 160 |
| 6.6.14 | PWR Port E pull-up control register (PWR_PUCRE) ..... | 161 |
| 6.6.15 | PWR Port E pull-down control register (PWR_PDCRE) ..... | 161 |
| 6.6.16 | PWR Port H pull-up control register (PWR_PUCRH) ..... | 162 |
| 6.6.17 | PWR Port H pull-down control register (PWR_PDCRH) ..... | 162 |
| 6.6.18 | PWR CPU2 control register 1 (PWR_C2CR1) ..... | 163 |
| 6.6.19 | PWR CPU2 control register 3 (PWR_C2CR3) ..... | 164 |
| 6.6.20 | PWR extended status and status clear register (PWR_EXTSCR) ..... | 165 |
| 6.6.21 | PWR register map and reset value table ..... | 167 |
| 7 | Peripherals interconnect matrix ..... | 169 |
| 7.1 | Introduction ..... | 169 |
- 7.2 Connection summary . . . . . 169
- 7.3 Interconnection details . . . . . 170
- 7.3.1 From timer (TIM1/TIM2) to timer (TIM1/TIM2) . . . . . 170
- 7.3.2 From timer (TIM1/TIM2) and EXTI to ADC (ADC1) . . . . . 170
- 7.3.3 From ADC (ADC1) to timer (TIM1) . . . . . 171
- 7.3.4 From LSE to timer (TIM2) . . . . . 171
- 7.3.5 From RTC to low-power timers (LPTIM1/LPTIM2) . . . . . 171
- 7.3.6 From internal analog to ADC1 . . . . . 171
- 7.3.7 From system errors to timer (TIM1) . . . . . 172
- 8 Reset and clock control (RCC) . . . . . 173
- 8.1 Reset . . . . . 173
- 8.1.1 Power reset . . . . . 173
- 8.1.2 System reset . . . . . 173
- 8.1.3 Backup domain reset . . . . . 175
- 8.2 Clocks . . . . . 175
- 8.2.1 HSE clock . . . . . 179
- 8.2.2 HSI16 clock . . . . . 181
- 8.2.3 MSI clock . . . . . 181
- 8.2.4 PLL . . . . . 182
- 8.2.5 LSE clock . . . . . 183
- 8.2.6 LSI1 clock . . . . . 184
- 8.2.7 LSI2 clock . . . . . 184
- 8.2.8 System clock (SYSCLK) selection . . . . . 184
- 8.2.9 Clock source frequency . . . . . 184
- 8.2.10 Clock security system (CSS) on HSE . . . . . 185
- 8.2.11 Clock security system on LSE (LSECSS) . . . . . 185
- 8.2.12 LSI source selection . . . . . 185
- 8.2.13 ADC clock . . . . . 186
- 8.2.14 RTC clock . . . . . 186
- 8.2.15 Timer clock . . . . . 186
- 8.2.16 Watchdog clock . . . . . 186
- 8.2.17 True RNG clock . . . . . 187
- 8.2.18 Clock-out capability . . . . . 187
- 8.2.19 Peripheral clocks enable . . . . . 187
- 8.3 Low-power modes . . . . . 189
- 8.1 Reset . . . . . 173
| 8.4 | RCC registers . . . . . | 191 |
| 8.4.1 | RCC clock control register (RCC_CR) . . . . . | 191 |
| 8.4.2 | RCC internal clock sources calibration register (RCC_ICSCR) . . . . . | 194 |
| 8.4.3 | RCC clock configuration register (RCC_CFGR) . . . . . | 195 |
| 8.4.4 | RCC PLL configuration register (RCC_PLLCFGR) . . . . . | 197 |
| 8.4.5 | RCC clock interrupt enable register (RCC_CIER) . . . . . | 200 |
| 8.4.6 | RCC clock interrupt flag register (RCC_CIFR) . . . . . | 201 |
| 8.4.7 | RCC clock interrupt clear register (RCC_CICR) . . . . . | 203 |
| 8.4.8 | RCC AHB1 peripheral reset register (RCC_AHB1RSTR) . . . . . | 204 |
| 8.4.9 | RCC AHB2 peripheral reset register (RCC_AHB2RSTR) . . . . . | 205 |
| 8.4.10 | RCC AHB4 peripheral reset register (RCC_AHB4RSTR) . . . . . | 206 |
| 8.4.11 | RCC APB1 peripheral reset register 1 (RCC_APB1RSTR1) . . . . . | 207 |
| 8.4.12 | RCC APB1 peripheral reset register 2 (RCC_APB1RSTR2) . . . . . | 207 |
| 8.4.13 | RCC APB2 peripheral reset register (RCC_APB2RSTR) . . . . . | 208 |
| 8.4.14 | RCC APB3 peripheral reset register (RCC_APB3RSTR) . . . . . | 209 |
| 8.4.15 | RCC AHB1 peripheral clock enable register (RCC_AHB1ENR) . . . . . | 209 |
| 8.4.16 | RCC AHB2 peripheral clock enable register (RCC_AHB2ENR) . . . . . | 210 |
| 8.4.17 | RCC AHB4 peripheral clock enable register (RCC_AHB4ENR) . . . . . | 211 |
| 8.4.18 | RCC APB1 peripheral clock enable register 1 (RCC_APB1ENR1) . . . . . | 212 |
| 8.4.19 | RCC APB1 peripheral clock enable register 2 (RCC_APB1ENR2) . . . . . | 213 |
| 8.4.20 | RCC APB2 peripheral clock enable register (RCC_APB2ENR) . . . . . | 213 |
| 8.4.21 | RCC AHB1 peripheral clocks enable in Sleep modes register (RCC_AHB1SMENR) . . . . . | 214 |
| 8.4.22 | RCC AHB2 peripheral clocks enable in Sleep modes register (RCC_AHB2SMENR) . . . . . | 215 |
| 8.4.23 | RCC AHB4 peripheral clocks enable in Sleep and Stop modes register (RCC_AHB4SMENR) . . . . . | 216 |
| 8.4.24 | RCC APB1 peripheral clocks enable in Sleep mode register 1 (RCC_APB1SMENR1) . . . . . | 217 |
| 8.4.25 | RCC APB1 peripheral clocks enable in Sleep mode register 2 (RCC_APB1SMENR2) . . . . . | 218 |
| 8.4.26 | RCC APB2 peripheral clocks enable in Sleep mode register (RCC_APB2SMENR) . . . . . | 219 |
| 8.4.27 | RCC peripherals independent clock configuration register (RCC_CCIPR) . . . . . | 220 |
| 8.4.28 | RCC backup domain control register (RCC_BDCR) . . . . . | 221 |
| 8.4.29 | RCC control/status register (RCC_CSR) . . . . . | 223 |
| 8.4.30 | RCC clock HSE register (RCC_HSECR) . . . . . | 225 |
| 8.4.31 | RCC extended clock recovery register (RCC_EXTCFGR) . . . . . | 226 |
| 8.4.32 | RCC CPU2 AHB1 peripheral clock enable register (RCC_C2AHB1ENR) . . . . . | 228 |
| 8.4.33 | RCC CPU2 AHB2 peripheral clock enable register (RCC_C2AHB2ENR) . . . . . | 229 |
| 8.4.34 | RCC CPU2 AHB4 peripheral clock enable register (RCC_C2AHB4ENR) . . . . . | 230 |
| 8.4.35 | RCC CPU2 APB1 peripheral clock enable register 1 (RCC_C2APB1ENR1) . . . . . | 231 |
| 8.4.36 | RCC CPU2 APB1 peripheral clock enable register 2 (RCC_C2APB1ENR2) . . . . . | 232 |
| 8.4.37 | RCC CPU2 APB2 peripheral clock enable register (RCC_C2APB2ENR) . . . . . | 232 |
| 8.4.38 | RCC CPU2 APB3 peripheral clock enable register (RCC_C2APB3ENR) . . . . . | 233 |
| 8.4.39 | RCC CPU2 AHB1 peripheral clocks enable in Sleep modes register (RCC_C2AHB1SMENR) . . . . . | 234 |
| 8.4.40 | RCC CPU2 AHB2 peripheral clocks enable in Sleep modes register (RCC_C2AHB2SMENR) . . . . . | 235 |
| 8.4.41 | RCC CPU2 AHB4 peripheral clocks enable in Sleep mode register (RCC_C2AHB4SMENR) . . . . . | 236 |
| 8.4.42 | RCC CPU2 APB1 peripheral clocks enable in Sleep mode register 1 (RCC_C2APB1SMENR1) . . . . . | 237 |
| 8.4.43 | RCC CPU2 APB1 peripheral clocks enable in Sleep mode register 2 (RCC_C2APB1SMENR2) . . . . . | 238 |
| 8.4.44 | RCC CPU2 APB2 peripheral clocks enable in Sleep mode register (RCC_C2APB2SMENR) . . . . . | 238 |
| 8.4.45 | RCC CPU2 APB3 peripheral clock enable in Sleep mode register (RCC_C2APB3SMENR) . . . . . | 239 |
| 8.4.46 | RCC register map . . . . . | 240 |
| 9 | General-purpose I/Os (GPIO) . . . . . | 246 |
| 9.1 | Introduction . . . . . | 246 |
| 9.2 | GPIO main features . . . . . | 246 |
| 9.3 | GPIO functional description . . . . . | 246 |
| 9.3.1 | General-purpose I/O (GPIO) . . . . . | 249 |
| 9.3.2 | I/O pin alternate function multiplexer and mapping . . . . . | 249 |
| 9.3.3 | I/O port control registers . . . . . | 250 |
| 9.3.4 | I/O port data registers . . . . . | 250 |
| 9.3.5 | I/O data bitwise handling . . . . . | 250 |
| 9.3.6 | GPIO locking mechanism . . . . . | 251 |
| 9.3.7 | I/O alternate function input/output . . . . . | 251 |
| 9.3.8 | External interrupt/wakeup lines . . . . . | 251 |
| 9.3.9 | Input configuration . . . . . | 251 |
| 9.3.10 | Output configuration . . . . . | 252 |
| 9.3.11 | Alternate function configuration . . . . . | 253 |
| 9.3.12 | Analog configuration . . . . . | 253 |
| 9.3.13 | Using the LSE oscillator pins as GPIOs . . . . . | 254 |
| 9.3.14 | Using the GPIO pins in the RTC supply domain . . . . . | 254 |
| 9.3.15 | Using PH3 as GPIO . . . . . | 254 |
| 9.4 | GPIO registers . . . . . | 255 |
| 9.4.1 | GPIO port mode register (GPIOx_MODER) (x = A to C and E, H) . . . . . | 255 |
| 9.4.2 | GPIO port output type register (GPIOx_OTYPER) (x = A to C and E, H) . . . . . | 256 |
| 9.4.3 | GPIO port output speed register (GPIOx_OSPEEDR) (x = A to C and E, H) . . . . . | 256 |
| 9.4.4 | GPIO port pull-up/pull-down register (GPIOx_PUPDR) (x = A to C and E, H) . . . . . | 257 |
| 9.4.5 | GPIO port input data register (GPIOx_IDR) (x = A to C and E, H) . . . . . | 257 |
| 9.4.6 | GPIO port output data register (GPIOx_ODR) (x = A to C and E, H) . . . . . | 258 |
| 9.4.7 | GPIO port bit set/reset register (GPIOx_BSRR) (x = A to C and E, H) . . . . . | 258 |
| 9.4.8 | GPIO port configuration lock register (GPIOx_LCKR) (x = A to C and E, H) . . . . . | 259 |
| 9.4.9 | GPIO alternate function low register (GPIOx_AFRL) (x = A to C and E, H) . . . . . | 260 |
| 9.4.10 | GPIO alternate function high register (GPIOx_AFRH) (x = A to C and E, H) . . . . . | 261 |
| 9.4.11 | GPIO port bit reset register (GPIOx_BRR) (x = A to C and E, H) . . . . . | 262 |
| 9.4.12 | GPIO register map . . . . . | 263 |
| 10 | System configuration controller (SYSCFG) . . . . . | 268 |
| 10.1 | SYSCFG main features . . . . . | 268 |
| 10.2 | SYSCFG registers . . . . . | 268 |
| 10.2.1 | SYSCFG memory remap register (SYSCFG_MEMRMP) . . . . . | 268 |
| 10.2.2 | SYSCFG configuration register 1 (SYSCFG_CFGR1) . . . . . | 269 |
| 10.2.3 | SYSCFG external interrupt configuration register 1 (SYSCFG_EXTICR1) . . . . . | 270 |
| 10.2.4 | SYSCFG external interrupt configuration register 2 (SYSCFG_EXTICR2) ..... | 271 |
| 10.2.5 | SYSCFG external interrupt configuration register 3 (SYSCFG_EXTICR3) ..... | 272 |
| 10.2.6 | SYSCFG external interrupt configuration register 4 (SYSCFG_EXTICR4) ..... | 274 |
| 10.2.7 | SYSCFG SRAM2 control and status register (SYSCFG_SCSR) ..... | 275 |
| 10.2.8 | SYSCFG configuration register 2 (SYSCFG_CFGR2) ..... | 276 |
| 10.2.9 | SYSCFG SRAM2 write protection register (SYSCFG_SWPR1) ..... | 277 |
| 10.2.10 | SYSCFG SRAM2 key register (SYSCFG_SKR) ..... | 277 |
| 10.2.11 | SYSCFG SRAM2 write protection register 2 (SYSCFG_SWPR2) ..... | 277 |
| 10.2.12 | SYSCFG CPU1 interrupt mask register 1 (SYSCFG_IMR1) ..... | 278 |
| 10.2.13 | SYSCFG CPU1 interrupt mask register 2 (SYSCFG_IMR2) ..... | 278 |
| 10.2.14 | SYSCFG CPU2 interrupt mask register 1 (SYSCFG_C2IMR1) ..... | 279 |
| 10.2.15 | SYSCFG CPU2 interrupt mask register 2 (SYSCFG_C2IMR2) ..... | 279 |
| 10.2.16 | SYSCFG secure IP control register (SYSCFG_SIPCR) ..... | 280 |
| 10.2.17 | SYSCFG register map ..... | 282 |
| 11 | Direct memory access controller (DMA) ..... | 284 |
| 11.1 | Introduction ..... | 284 |
| 11.2 | DMA main features ..... | 284 |
| 11.3 | DMA implementation ..... | 285 |
| 11.3.1 | DMA1 ..... | 285 |
| 11.3.2 | DMA request mapping ..... | 285 |
| 11.4 | DMA functional description ..... | 285 |
| 11.4.1 | DMA block diagram ..... | 285 |
| 11.4.2 | DMA pins and internal signals ..... | 286 |
| 11.4.3 | DMA transfers ..... | 286 |
| 11.4.4 | DMA arbitration ..... | 287 |
| 11.4.5 | DMA channels ..... | 287 |
| 11.4.6 | DMA data width, alignment, and endianness ..... | 291 |
| 11.4.7 | DMA error management ..... | 292 |
| 11.5 | DMA interrupts ..... | 293 |
| 11.6 | DMA registers ..... | 293 |
| 11.6.1 | DMA interrupt status register (DMA_ISR) ..... | 293 |
| 11.6.2 | DMA interrupt flag clear register (DMA_IFCR) ..... | 295 |
| 11.6.3 | DMA channel x configuration register (DMA_CCRx) ..... | 297 |
| 11.6.4 | DMA channel x number of data to transfer register (DMA_CNDTRx) | 299 |
| 11.6.5 | DMA channel x peripheral address register (DMA_CPARx) | 300 |
| 11.6.6 | DMA channel x memory address register (DMA_CMARx) | 301 |
| 11.6.7 | DMA register map | 301 |
| 12 | DMA request multiplexer (DMAMUX) | 304 |
| 12.1 | Introduction | 304 |
| 12.2 | DMAMUX main features | 305 |
| 12.3 | DMAMUX implementation | 305 |
| 12.3.1 | DMAMUX instantiation | 305 |
| 12.3.2 | DMAMUX mapping | 305 |
| 12.4 | DMAMUX functional description | 308 |
| 12.4.1 | DMAMUX block diagram | 308 |
| 12.4.2 | DMAMUX signals | 309 |
| 12.4.3 | DMAMUX channels | 309 |
| 12.4.4 | DMAMUX request line multiplexer | 309 |
| 12.4.5 | DMAMUX request generator | 312 |
| 12.5 | DMAMUX interrupts | 313 |
| 12.6 | DMAMUX registers | 314 |
| 12.6.1 | DMAMUX request line multiplexer channel x configuration register (DMAMUX_CxCR) | 314 |
| 12.6.2 | DMAMUX request line multiplexer interrupt channel status register (DMAMUX_CSR) | 315 |
| 12.6.3 | DMAMUX request line multiplexer interrupt clear flag register (DMAMUX_CFR) | 315 |
| 12.6.4 | DMAMUX request generator channel x configuration register (DMAMUX_RGxCR) | 316 |
| 12.6.5 | DMAMUX request generator interrupt status register (DMAMUX_RGSR) | 317 |
| 12.6.6 | DMAMUX request generator interrupt clear flag register (DMAMUX_RGCFR) | 317 |
| 12.6.7 | DMAMUX register map | 318 |
| 13 | Nested vectored interrupt controller (NVIC) | 320 |
| 13.1 | NVIC main features | 320 |
| 13.2 | Interrupt block diagram | 320 |
| 13.3 | Interrupt and exception vectors | 321 |
| 13.4 | Interrupt list | 326 |
| 14 | Extended interrupt and event controller (EXTI) . . . . . | 329 |
| 14.1 | EXTI main features . . . . . | 329 |
| 14.2 | EXTI block diagram . . . . . | 329 |
| 14.2.1 | EXTI connections between peripherals and CPU . . . . . | 331 |
| 14.3 | EXTI functional description . . . . . | 332 |
| 14.3.1 | EXTI configurable event input wakeup . . . . . | 332 |
| 14.3.2 | EXTI direct event input wakeup . . . . . | 334 |
| 14.4 | EXTI functional behavior . . . . . | 334 |
| 14.5 | EXTI registers . . . . . | 336 |
| 14.5.1 | EXTI rising trigger selection register (EXTI_RTSR1) . . . . . | 336 |
| 14.5.2 | EXTI falling trigger selection register (EXTI_FTSR1) . . . . . | 337 |
| 14.5.3 | EXTI software interrupt event register (EXTI_SWIER1) . . . . . | 337 |
| 14.5.4 | EXTI pending register (EXTI_PR1) . . . . . | 338 |
| 14.5.5 | EXTI rising trigger selection register (EXTI_RTSR2) . . . . . | 338 |
| 14.5.6 | EXTI falling trigger selection register (EXTI_FTSR2) . . . . . | 339 |
| 14.5.7 | EXTI software interrupt event register (EXTI_SWIER2) . . . . . | 339 |
| 14.5.8 | EXTI pending register (EXTI_PR2) . . . . . | 340 |
| 14.5.9 | EXTI CPU wakeup with interrupt mask register (EXTI_IMR1) . . . . . | 341 |
| 14.5.10 | EXTI CPU2 wakeup with interrupt mask register (EXTI_C2IMR1) . . . . . | 341 |
| 14.5.11 | EXTI CPU wakeup with event mask register (EXTI_EM1) . . . . . | 342 |
| 14.5.12 | EXTI CPU2 wakeup with event mask register (EXTI_C2EM1) . . . . . | 342 |
| 14.5.13 | EXTI CPU wakeup with interrupt mask register (EXTI_IMR2) . . . . . | 343 |
| 14.5.14 | EXTI CPU2 wakeup with interrupt mask register (EXTI_C2IMR2) . . . . . | 343 |
| 14.5.15 | EXTI CPU wakeup with event mask register (EXTI_EM2) . . . . . | 344 |
| 14.5.16 | EXTI CPU2 wakeup with event mask register (EXTI_C2EM2) . . . . . | 344 |
| 14.5.17 | EXTI register map . . . . . | 345 |
| 15 | Analog-to-digital converter (ADC) . . . . . | 347 |
| 15.1 | Introduction . . . . . | 347 |
| 15.2 | ADC main features . . . . . | 348 |
| 15.3 | ADC functional description . . . . . | 349 |
| 15.3.1 | ADC pins and internal signals . . . . . | 349 |
| 15.3.2 | ADC voltage regulator (ADVREGEN) . . . . . | 350 |
| 15.3.3 | Calibration (ADCAL) . . . . . | 351 |
| 15.3.4 | ADC on-off control (ADEN, ADDIS, ADRDY) . . . . . | 353 |
| 15.3.5 | ADC clock (CKMODE, PRESC[3:0]) . . . . . | 354 |
| 15.3.6 | ADC connectivity . . . . . | 356 |
| 15.3.7 | Configuring the ADC . . . . . | 357 |
| 15.3.8 | Channel selection (CHSEL, SCANDIR, CHSELRMOD) . . . . . | 357 |
| 15.3.9 | Programmable sampling time (SMPx[2:0]) . . . . . | 358 |
| 15.3.10 | Single conversion mode (CONT = 0) . . . . . | 359 |
| 15.3.11 | Continuous conversion mode (CONT = 1) . . . . . | 359 |
| 15.3.12 | Starting conversions (ADSTART) . . . . . | 360 |
| 15.3.13 | Timings . . . . . | 361 |
| 15.3.14 | Stopping an ongoing conversion (ADSTP) . . . . . | 362 |
| 15.4 | Conversion on external trigger and trigger polarity (EXTSEL, EXTEN) . . . . . | 362 |
| 15.4.1 | Discontinuous mode (DISCEN) . . . . . | 363 |
| 15.4.2 | Programmable resolution (RES) - Fast conversion mode . . . . . | 363 |
| 15.4.3 | End of conversion, end of sampling phase (EOC, EOSMP flags) . . . . . | 364 |
| 15.4.4 | End of conversion sequence (EOS flag) . . . . . | 364 |
| 15.4.5 | Example timing diagrams (single/continuous modes hardware/software triggers) . . . . . | 365 |
| 15.4.6 | Low frequency trigger mode . . . . . | 367 |
| 15.5 | Data management . . . . . | 367 |
| 15.5.1 | Data register and data alignment (ADC_DR, ALIGN) . . . . . | 367 |
| 15.5.2 | ADC overrun (OVR, OVRMOD) . . . . . | 367 |
| 15.5.3 | Managing a sequence of data converted without using the DMA . . . . . | 369 |
| 15.5.4 | Managing converted data without using the DMA without overrun . . . . . | 369 |
| 15.5.5 | Managing converted data using the DMA . . . . . | 369 |
| 15.6 | Low-power features . . . . . | 370 |
| 15.6.1 | Wait mode conversion . . . . . | 370 |
| 15.6.2 | Auto-off mode (AUTOFF) . . . . . | 371 |
| 15.7 | Analog window watchdog . . . . . | 373 |
| 15.7.1 | Description of the analog watchdog . . . . . | 373 |
| 15.7.2 | ADC_AWD1_OUT output signal generation . . . . . | 374 |
| 15.7.3 | Analog watchdog threshold control . . . . . | 376 |
| 15.8 | Temperature sensor and internal reference voltage . . . . . | 376 |
| 15.9 | Battery voltage monitoring . . . . . | 379 |
| 15.10 | ADC interrupts . . . . . | 380 |
| 15.11 | ADC registers . . . . . | 381 |
| 15.11.1 | ADC interrupt and status register (ADC_ISR) . . . . . | 381 |
| 15.11.2 | ADC interrupt enable register (ADC_IER) . . . . . | 382 |
| 15.11.3 | ADC control register (ADC_CR) . . . . . | 383 |
| 15.11.4 | ADC configuration register 1 (ADC_CFGR1) . . . . . | 385 |
| 15.11.5 | ADC configuration register 2 (ADC_CFGR2) . . . . . | 388 |
| 15.11.6 | ADC sampling time register (ADC_SMPR) . . . . . | 389 |
| 15.11.7 | ADC watchdog threshold register (ADC_TR) . . . . . | 390 |
| 15.11.8 | ADC channel selection register (ADC_CHSELR) . . . . . | 391 |
| 15.11.9 | ADC channel selection register [alternate] (ADC_CHSELR) . . . . . | 391 |
| 15.11.10 | ADC data register (ADC_DR) . . . . . | 393 |
| 15.11.11 | ADC calibration factor (ADC_CALFACT) . . . . . | 394 |
| 15.11.12 | ADC common configuration register (ADC_CCR) . . . . . | 394 |
| 15.12 | ADC register map . . . . . | 395 |
| 16 | Touch sensing controller (TSC) . . . . . | 398 |
| 16.1 | Introduction . . . . . | 398 |
| 16.2 | TSC main features . . . . . | 398 |
| 16.3 | TSC functional description . . . . . | 399 |
| 16.3.1 | TSC block diagram . . . . . | 399 |
| 16.3.2 | Surface charge transfer acquisition overview . . . . . | 399 |
| 16.3.3 | Reset and clocks . . . . . | 402 |
| 16.3.4 | Charge transfer acquisition sequence . . . . . | 402 |
| 16.3.5 | Spread spectrum feature . . . . . | 403 |
| 16.3.6 | Max count error . . . . . | 404 |
| 16.3.7 | Sampling capacitor I/O and channel I/O mode selection . . . . . | 404 |
| 16.3.8 | Acquisition mode . . . . . | 405 |
| 16.3.9 | I/O hysteresis and analog switch control . . . . . | 405 |
| 16.4 | TSC low-power modes . . . . . | 406 |
| 16.5 | TSC interrupts . . . . . | 406 |
| 16.6 | TSC registers . . . . . | 406 |
| 16.6.1 | TSC control register (TSC_CR) . . . . . | 406 |
| 16.6.2 | TSC interrupt enable register (TSC_IER) . . . . . | 409 |
| 16.6.3 | TSC interrupt clear register (TSC_ICR) . . . . . | 410 |
| 16.6.4 | TSC interrupt status register (TSC_ISR) . . . . . | 410 |
| 16.6.5 | TSC I/O hysteresis control register (TSC_IOHCR) . . . . . | 411 |
| 16.6.6 | TSC I/O analog switch control register (TSC_IOASCR) . . . . . | 411 |
| 16.6.7 | TSC I/O sampling control register (TSC_IOSCR) . . . . . | 412 |
| 16.6.8 | TSC I/O channel control register (TSC_IOCCR) . . . . . | 412 |
| 16.6.9 | TSC I/O group control status register (TSC_IOGCSR) . . . . . | 413 |
| 16.6.10 | TSC I/O group x counter register (TSC_IOGxCR) . . . . . | 413 |
| 16.6.11 | TSC register map . . . . . | 414 |
| 17 | True random number generator (RNG) . . . . . | 416 |
| 17.1 | Introduction . . . . . | 416 |
| 17.2 | RNG main features . . . . . | 416 |
| 17.3 | RNG functional description . . . . . | 417 |
| 17.3.1 | RNG block diagram . . . . . | 417 |
| 17.3.2 | RNG internal signals . . . . . | 417 |
| 17.3.3 | Random number generation . . . . . | 418 |
| 17.3.4 | RNG initialization . . . . . | 420 |
| 17.3.5 | RNG operation . . . . . | 421 |
| 17.3.6 | RNG clocking . . . . . | 422 |
| 17.3.7 | Error management . . . . . | 422 |
| 17.3.8 | RNG low-power use . . . . . | 423 |
| 17.4 | RNG interrupts . . . . . | 423 |
| 17.5 | RNG processing time . . . . . | 423 |
| 17.6 | RNG entropy source validation . . . . . | 424 |
| 17.6.1 | Introduction . . . . . | 424 |
| 17.6.2 | Validation conditions . . . . . | 424 |
| 17.7 | RNG registers . . . . . | 425 |
| 17.7.1 | RNG control register (RNG_CR) . . . . . | 425 |
| 17.7.2 | RNG status register (RNG_SR) . . . . . | 425 |
| 17.7.3 | RNG data register (RNG_DR) . . . . . | 426 |
| 17.7.4 | RNG register map . . . . . | 427 |
| 18 | AES hardware accelerator (AES) . . . . . | 428 |
| 18.1 | Introduction . . . . . | 428 |
| 18.2 | AES main features . . . . . | 428 |
| 18.3 | AES implementation . . . . . | 428 |
| 18.4 | AES functional description . . . . . | 429 |
| 18.4.1 | AES block diagram . . . . . | 429 |
| 18.4.2 | AES internal signals . . . . . | 429 |
| 18.4.3 | AES cryptographic core . . . . . | 429 |
| 18.4.4 | AES procedure to perform a cipher operation . . . . . | 435 |
- 18.4.5 AES decryption round key preparation . . . . . 438
- 18.4.6 AES ciphertext stealing and data padding . . . . . 439
- 18.4.7 AES task suspend and resume . . . . . 439
- 18.4.8 AES basic chaining modes (ECB, CBC) . . . . . 440
- 18.4.9 AES counter (CTR) mode . . . . . 445
- 18.4.10 AES Galois/counter mode (GCM) . . . . . 447
- 18.4.11 AES Galois message authentication code (GMAC) . . . . . 452
- 18.4.12 AES counter with CBC-MAC (CCM) . . . . . 454
- 18.4.13 AES data registers and data swapping . . . . . 459
- 18.4.14 AES key registers . . . . . 461
- 18.4.15 AES initialization vector registers . . . . . 461
- 18.4.16 AES DMA interface . . . . . 462
- 18.4.17 AES error management . . . . . 463
- 18.5 AES interrupts . . . . . 464
- 18.6 AES processing latency . . . . . 464
- 18.7 AES registers . . . . . 465
- 18.7.1 AES control register (AES_CR) . . . . . 465
- 18.7.2 AES status register (AES_SR) . . . . . 468
- 18.7.3 AES data input register (AES_DINR) . . . . . 469
- 18.7.4 AES data output register (AES_DOUTR) . . . . . 469
- 18.7.5 AES key register 0 (AES_KEYR0) . . . . . 470
- 18.7.6 AES key register 1 (AES_KEYR1) . . . . . 471
- 18.7.7 AES key register 2 (AES_KEYR2) . . . . . 471
- 18.7.8 AES key register 3 (AES_KEYR3) . . . . . 471
- 18.7.9 AES initialization vector register 0 (AES_IVR0) . . . . . 472
- 18.7.10 AES initialization vector register 1 (AES_IVR1) . . . . . 472
- 18.7.11 AES initialization vector register 2 (AES_IVR2) . . . . . 472
- 18.7.12 AES initialization vector register 3 (AES_IVR3) . . . . . 473
- 18.7.13 AES key register 4 (AES_KEYR4) . . . . . 473
- 18.7.14 AES key register 5 (AES_KEYR5) . . . . . 473
- 18.7.15 AES key register 6 (AES_KEYR6) . . . . . 474
- 18.7.16 AES key register 7 (AES_KEYR7) . . . . . 474
- 18.7.17 AES suspend registers (AES_SUSPxR) . . . . . 474
- 18.7.18 AES register map . . . . . 475
19 Public key accelerator (PKA) . . . . . 477
- 19.1 Introduction . . . . . 477
| 19.2 | PKA main features . . . . . | 477 |
| 19.3 | PKA functional description . . . . . | 477 |
| 19.3.1 | PKA block diagram . . . . . | 477 |
| 19.3.2 | PKA internal signals . . . . . | 478 |
| 19.3.3 | PKA reset and clocks . . . . . | 478 |
| 19.3.4 | PKA public key acceleration . . . . . | 478 |
| 19.3.5 | Typical applications for PKA . . . . . | 480 |
| 19.3.6 | PKA procedure to perform an operation . . . . . | 482 |
| 19.3.7 | PKA error management . . . . . | 483 |
| 19.4 | PKA operating modes . . . . . | 483 |
| 19.4.1 | Introduction . . . . . | 483 |
| 19.4.2 | Montgomery parameter computation . . . . . | 484 |
| 19.4.3 | Modular addition . . . . . | 484 |
| 19.4.4 | Modular subtraction . . . . . | 485 |
| 19.4.5 | Modular and Montgomery multiplication . . . . . | 485 |
| 19.4.6 | Modular exponentiation . . . . . | 486 |
| 19.4.7 | Modular inversion . . . . . | 487 |
| 19.4.8 | Modular reduction . . . . . | 488 |
| 19.4.9 | Arithmetic addition . . . . . | 488 |
| 19.4.10 | Arithmetic subtraction . . . . . | 488 |
| 19.4.11 | Arithmetic multiplication . . . . . | 489 |
| 19.4.12 | Arithmetic comparison . . . . . | 489 |
| 19.4.13 | RSA CRT exponentiation . . . . . | 489 |
| 19.4.14 | Point on elliptic curve Fp check . . . . . | 490 |
| 19.4.15 | ECC Fp scalar multiplication . . . . . | 491 |
| 19.4.16 | ECDSA sign . . . . . | 492 |
| 19.4.17 | ECDSA verification . . . . . | 494 |
| 19.5 | Example of configurations and processing times . . . . . | 495 |
| 19.5.1 | Supported elliptic curves . . . . . | 495 |
| 19.5.2 | Computation times . . . . . | 497 |
| 19.6 | PKA interrupts . . . . . | 498 |
| 19.7 | PKA registers . . . . . | 499 |
| 19.7.1 | PKA control register (PKA_CR) . . . . . | 499 |
| 19.7.2 | PKA status register (PKA_SR) . . . . . | 500 |
| 19.7.3 | PKA clear flag register (PKA_CLRFR) . . . . . | 501 |
| 19.7.4 | PKA RAM . . . . . | 501 |
19.7.5 PKA register map . . . . . 502
20 Advanced-control timer (TIM1) . . . . . 503
20.1 TIM1 introduction . . . . . 503
20.2 TIM1 main features . . . . . 504
20.3 TIM1 functional description . . . . . 506
20.3.1 Time-base unit . . . . . 506
20.3.2 Counter modes . . . . . 508
20.3.3 Repetition counter . . . . . 519
20.3.4 External trigger input . . . . . 521
20.3.5 Clock selection . . . . . 522
20.3.6 Capture/compare channels . . . . . 526
20.3.7 Input capture mode . . . . . 528
20.3.8 PWM input mode . . . . . 529
20.3.9 Forced output mode . . . . . 530
20.3.10 Output compare mode . . . . . 531
20.3.11 PWM mode . . . . . 532
20.3.12 Asymmetric PWM mode . . . . . 535
20.3.13 Combined PWM mode . . . . . 536
20.3.14 Combined 3-phase PWM mode . . . . . 537
20.3.15 Complementary outputs and dead-time insertion . . . . . 538
20.3.16 Using the break function . . . . . 540
20.3.17 Bidirectional break inputs . . . . . 546
20.3.18 Clearing the OCxREF signal on an external event . . . . . 548
20.3.19 6-step PWM generation . . . . . 549
20.3.20 One-pulse mode . . . . . 550
20.3.21 Retriggerable one pulse mode . . . . . 551
20.3.22 Encoder interface mode . . . . . 552
20.3.23 UIF bit remapping . . . . . 554
20.3.24 Timer input XOR function . . . . . 555
20.3.25 Interfacing with Hall sensors . . . . . 555
20.3.26 Timer synchronization . . . . . 558
20.3.27 ADC synchronization . . . . . 562
20.3.28 DMA burst mode . . . . . 562
20.3.29 Debug mode . . . . . 563
20.4 TIM1 registers . . . . . 564
20.4.1 TIM1 control register 1 (TIM1_CR1) . . . . . 564
| 20.4.2 | TIM1 control register 2 (TIM1_CR2) . . . . . | 565 |
| 20.4.3 | TIM1 slave mode control register (TIM1_SMCR) . . . . . | 568 |
| 20.4.4 | TIM1 DMA/interrupt enable register (TIM1_DIER) . . . . . | 570 |
| 20.4.5 | TIM1 status register (TIM1_SR) . . . . . | 572 |
| 20.4.6 | TIM1 event generation register (TIM1_EGR) . . . . . | 574 |
| 20.4.7 | TIM1 capture/compare mode register 1 (TIM1_CCMR1) . . . . . | 575 |
| 20.4.8 | TIM1 capture/compare mode register 1 [alternate] (TIM1_CCMR1) . . . . . | 576 |
| 20.4.9 | TIM1 capture/compare mode register 2 (TIM1_CCMR2) . . . . . | 579 |
| 20.4.10 | TIM1 capture/compare mode register 2 [alternate] (TIM1_CCMR2) . . . . . | 580 |
| 20.4.11 | TIM1 capture/compare enable register (TIM1_CCER) . . . . . | 581 |
| 20.4.12 | TIM1 counter (TIM1_CNT) . . . . . | 585 |
| 20.4.13 | TIM1 prescaler (TIM1_PSC) . . . . . | 585 |
| 20.4.14 | TIM1 auto-reload register (TIM1_ARR) . . . . . | 585 |
| 20.4.15 | TIM1 repetition counter register (TIM1_RCR) . . . . . | 586 |
| 20.4.16 | TIM1 capture/compare register 1 (TIM1_CCR1) . . . . . | 586 |
| 20.4.17 | TIM1 capture/compare register 2 (TIM1_CCR2) . . . . . | 587 |
| 20.4.18 | TIM1 capture/compare register 3 (TIM1_CCR3) . . . . . | 587 |
| 20.4.19 | TIM1 capture/compare register 4 (TIM1_CCR4) . . . . . | 588 |
| 20.4.20 | TIM1 break and dead-time register (TIM1_BDTR) . . . . . | 588 |
| 20.4.21 | TIM1 DMA control register (TIM1_DCR) . . . . . | 592 |
| 20.4.22 | TIM1 DMA address for full transfer (TIM1_DMAR) . . . . . | 593 |
| 20.4.23 | TIM1 option register 1 (TIM1_OR1) . . . . . | 594 |
| 20.4.24 | TIM1 capture/compare mode register 3 (TIM1_CCMR3) . . . . . | 594 |
| 20.4.25 | TIM1 capture/compare register 5 (TIM1_CCR5) . . . . . | 595 |
| 20.4.26 | TIM1 capture/compare register 6 (TIM1_CCR6) . . . . . | 596 |
| 20.4.27 | TIM1 alternate function option register 1 (TIM1_AF1) . . . . . | 597 |
20.4.28 TIM1 Alternate function register 2 (TIM1_AF2) . . . . . 597
20.4.29 TIM1 timer input selection register (TIM1_TISEL) . . . . . 598
20.4.30 TIM1 register map . . . . . 599
21 General-purpose timer (TIM2) . . . . . 602
21.1 TIM2 introduction . . . . . 602
21.2 TIM2 main features . . . . . 602
21.3 TIM2 functional description . . . . . 604
21.3.1 Time-base unit . . . . . 604
21.3.2 Counter modes . . . . . 606
21.3.3 Clock selection . . . . . 616
21.3.4 Capture/Compare channels . . . . . 620
21.3.5 Input capture mode . . . . . 622
21.3.6 PWM input mode . . . . . 623
21.3.7 Forced output mode . . . . . 624
21.3.8 Output compare mode . . . . . 624
21.3.9 PWM mode . . . . . 625
21.3.10 Asymmetric PWM mode . . . . . 629
21.3.11 Combined PWM mode . . . . . 629
21.3.12 Clearing the OCxREF signal on an external event . . . . . 630
21.3.13 One-pulse mode . . . . . 632
21.3.14 Retriggerable one pulse mode . . . . . 633
21.3.15 Encoder interface mode . . . . . 634
21.3.16 UIF bit remapping . . . . . 636
21.3.17 Timer input XOR function . . . . . 636
21.3.18 Timers and external trigger synchronization . . . . . 637
21.3.19 Timer synchronization . . . . . 640
21.3.20 DMA burst mode . . . . . 645
21.3.21 Debug mode . . . . . 646
21.4 TIM2 registers . . . . . 647
21.4.1 TIM2 control register 1 (TIM2_CR1) . . . . . 647
21.4.2 TIM2 control register 2 (TIM2_CR2) . . . . . 648
21.4.3 TIM2 slave mode control register (TIM2_SMCR) . . . . . 650
21.4.4 TIM2 DMA/Interrupt enable register (TIM2_DIER) . . . . . 653
21.4.5 TIM2 status register (TIM2_SR) . . . . . 654
21.4.6 TIM2 event generation register (TIM2_EGR) . . . . . 656
21.4.7 TIM2 capture/compare mode register 1 (TIM2_CCMR1) . . . . . 657
| 21.4.8 | TIM2 capture/compare mode register 1 [alternate] (TIM2_CCMR1) . . . | 658 |
| 21.4.9 | TIM2 capture/compare mode register 2 (TIM2_CCMR2) . . . . . | 661 |
| 21.4.10 | TIM2 capture/compare mode register 2 [alternate] (TIM2_CCMR2) . . . | 662 |
| 21.4.11 | TIM2 capture/compare enable register (TIM2_CCER) . . . . . | 663 |
| 21.4.12 | TIM2 counter (TIM2_CNT) . . . . . | 664 |
| 21.4.13 | TIM2 counter [alternate] (TIM2_CNT) . . . . . | 665 |
| 21.4.14 | TIM2 prescaler (TIM2_PSC) . . . . . | 665 |
| 21.4.15 | TIM2 auto-reload register (TIM2_ARR) . . . . . | 665 |
| 21.4.16 | TIM2 capture/compare register 1 (TIM2_CCR1) . . . . . | 666 |
| 21.4.17 | TIM2 capture/compare register 2 (TIM2_CCR2) . . . . . | 666 |
| 21.4.18 | TIM2 capture/compare register 3 (TIM2_CCR3) . . . . . | 667 |
| 21.4.19 | TIM2 capture/compare register 4 (TIM2_CCR4) . . . . . | 667 |
| 21.4.20 | TIM2 DMA control register (TIM2_DCR) . . . . . | 668 |
| 21.4.21 | TIM2 DMA address for full transfer (TIM2_DMAR) . . . . . | 668 |
| 21.4.22 | TIM2 option register 1 (TIM2_OR1) . . . . . | 669 |
| 21.4.23 | TIM2 alternate function option register 1 (TIM2_AF1) . . . . . | 669 |
| 21.4.24 | TIM2 timer input selection register (TIM2_TISEL) . . . . . | 670 |
| 21.4.25 | TIMx register map . . . . . | 671 |
| 22 | Low-power timer (LPTIM) . . . . . | 674 |
| 22.1 | Introduction . . . . . | 674 |
| 22.2 | LPTIM main features . . . . . | 674 |
| 22.3 | LPTIM implementation . . . . . | 675 |
| 22.4 | LPTIM functional description . . . . . | 675 |
| 22.4.1 | LPTIM block diagram . . . . . | 675 |
| 22.4.2 | LPTIM trigger mapping . . . . . | 676 |
| 22.4.3 | LPTIM reset and clocks . . . . . | 676 |
| 22.4.4 | Glitch filter . . . . . | 677 |
| 22.4.5 | Prescaler . . . . . | 678 |
| 22.4.6 | Trigger multiplexer . . . . . | 678 |
| 22.4.7 | Operating mode . . . . . | 679 |
| 22.4.8 | Timeout function . . . . . | 680 |
| 22.4.9 | Waveform generation . . . . . | 680 |
| 22.4.10 | Register update . . . . . | 682 |
| 22.4.11 | Counter mode . . . . . | 682 |
| 22.4.12 | Timer enable . . . . . | 683 |
| 22.4.13 | Timer counter reset . . . . . | 683 |
| 22.4.14 | Encoder mode . . . . . | 684 |
| 22.4.15 | Debug mode . . . . . | 685 |
| 22.5 | LPTIM low-power modes . . . . . | 685 |
| 22.6 | LPTIM interrupts . . . . . | 686 |
| 22.7 | LPTIM registers . . . . . | 686 |
| 22.7.1 | LPTIM interrupt and status register (LPTIM_ISR) . . . . . | 687 |
| 22.7.2 | LPTIM interrupt clear register (LPTIM_ICR) . . . . . | 688 |
| 22.7.3 | LPTIM interrupt enable register (LPTIM_IER) . . . . . | 688 |
| 22.7.4 | LPTIM configuration register (LPTIM_CFGR) . . . . . | 689 |
| 22.7.5 | LPTIM control register (LPTIM_CR) . . . . . | 692 |
| 22.7.6 | LPTIM compare register (LPTIM_CMP) . . . . . | 694 |
| 22.7.7 | LPTIM autoreload register (LPTIM_ARR) . . . . . | 694 |
| 22.7.8 | LPTIM counter register (LPTIM_CNT) . . . . . | 695 |
| 22.7.9 | LPTIM register map . . . . . | 696 |
| 23 | Real-time clock (RTC) . . . . . | 697 |
| 23.1 | Introduction . . . . . | 697 |
| 23.2 | RTC main features . . . . . | 698 |
| 23.3 | RTC functional description . . . . . | 699 |
| 23.3.1 | RTC block diagram . . . . . | 699 |
| 23.3.2 | Clock and prescalers . . . . . | 700 |
| 23.3.3 | Real-time clock and calendar . . . . . | 700 |
| 23.3.4 | Programmable alarms . . . . . | 701 |
| 23.3.5 | Periodic auto-wake-up . . . . . | 701 |
| 23.3.6 | RTC initialization and configuration . . . . . | 702 |
| 23.3.7 | Reading the calendar . . . . . | 703 |
| 23.3.8 | Resetting the RTC . . . . . | 704 |
| 23.3.9 | RTC synchronization . . . . . | 705 |
| 23.3.10 | RTC reference clock detection . . . . . | 705 |
| 23.3.11 | RTC smooth digital calibration . . . . . | 706 |
| 23.3.12 | Time-stamp function . . . . . | 708 |
| 23.3.13 | Tamper detection . . . . . | 709 |
| 23.3.14 | Calibration clock output . . . . . | 711 |
| 23.3.15 | Alarm output . . . . . | 711 |
| 23.4 | RTC low-power modes . . . . . | 712 |
| 23.5 | RTC interrupts ..... | 712 |
| 23.6 | RTC registers ..... | 713 |
| 23.6.1 | RTC time register (RTC_TR) ..... | 713 |
| 23.6.2 | RTC date register (RTC_DR) ..... | 714 |
| 23.6.3 | RTC control register (RTC_CR) ..... | 715 |
| 23.6.4 | RTC initialization and status register (RTC_ISR) ..... | 718 |
| 23.6.5 | RTC prescaler register (RTC_PRER) ..... | 721 |
| 23.6.6 | RTC wake-up timer register (RTC_WUTR) ..... | 722 |
| 23.6.7 | RTC alarm A register (RTC_ALRMAR) ..... | 723 |
| 23.6.8 | RTC alarm B register (RTC_ALRMBR) ..... | 724 |
| 23.6.9 | RTC write protection register (RTC_WPR) ..... | 725 |
| 23.6.10 | RTC sub second register (RTC_SSR) ..... | 725 |
| 23.6.11 | RTC shift control register (RTC_SHIFTR) ..... | 726 |
| 23.6.12 | RTC timestamp time register (RTC_TSTR) ..... | 727 |
| 23.6.13 | RTC timestamp date register (RTC_TSDR) ..... | 728 |
| 23.6.14 | RTC time-stamp sub second register (RTC_TSSSR) ..... | 729 |
| 23.6.15 | RTC calibration register (RTC_CALR) ..... | 730 |
| 23.6.16 | RTC tamper configuration register (RTC_TAMPCR) ..... | 731 |
| 23.6.17 | RTC alarm A sub second register (RTC_ALRMASSR) ..... | 733 |
| 23.6.18 | RTC alarm B sub second register (RTC_ALRMBSSR) ..... | 734 |
| 23.6.19 | RTC option register (RTC_OR) ..... | 735 |
| 23.6.20 | RTC backup registers (RTC_BKPxR) ..... | 735 |
| 23.6.21 | RTC register map ..... | 736 |
| 24 | Independent watchdog (IWDG) ..... | 738 |
| 24.1 | Introduction ..... | 738 |
| 24.2 | IWDG main features ..... | 738 |
| 24.3 | IWDG functional description ..... | 738 |
| 24.3.1 | IWDG block diagram ..... | 738 |
| 24.3.2 | Window option ..... | 739 |
| 24.3.3 | Hardware watchdog ..... | 740 |
| 24.3.4 | Low-power freeze ..... | 740 |
| 24.3.5 | Register access protection ..... | 740 |
| 24.3.6 | Debug mode ..... | 740 |
| 24.4 | IWDG registers ..... | 741 |
| 24.4.1 | IWDG key register (IWDG_KR) ..... | 741 |
- 24.4.2 IWDG prescaler register (IWDG_PR) . . . . . 742
- 24.4.3 IWDG reload register (IWDG_RLR) . . . . . 743
- 24.4.4 IWDG status register (IWDG_SR) . . . . . 744
- 24.4.5 IWDG window register (IWDG_WINR) . . . . . 745
- 24.4.6 IWDG register map . . . . . 746
- 25 System window watchdog (WWDG) . . . . . 747
- 25.1 Introduction . . . . . 747
- 25.2 WWDG main features . . . . . 747
- 25.3 WWDG functional description . . . . . 747
- 25.3.1 WWDG block diagram . . . . . 748
- 25.3.2 WWDG internal signals . . . . . 748
- 25.3.3 Enabling the watchdog . . . . . 748
- 25.3.4 Controlling the down-counter . . . . . 748
- 25.3.5 How to program the watchdog timeout . . . . . 749
- 25.3.6 Debug mode . . . . . 750
- 25.4 WWDG interrupts . . . . . 750
- 25.5 WWDG registers . . . . . 750
- 25.5.1 WWDG control register (WWDG_CR) . . . . . 751
- 25.5.2 WWDG configuration register (WWDG_CFR) . . . . . 751
- 25.5.3 WWDG status register (WWDG_SR) . . . . . 752
- 25.5.4 WWDG register map . . . . . 752
- 26 Inter-integrated circuit interface (I2C) . . . . . 753
- 26.1 Introduction . . . . . 753
- 26.2 I2C main features . . . . . 753
- 26.3 I2C implementation . . . . . 754
- 26.4 I2C functional description . . . . . 754
- 26.4.1 I2C block diagram . . . . . 755
- 26.4.2 I2C pins and internal signals . . . . . 755
- 26.4.3 I2C clock requirements . . . . . 756
- 26.4.4 I2C mode selection . . . . . 756
- 26.4.5 I2C initialization . . . . . 757
- 26.4.6 I2C reset . . . . . 761
- 26.4.7 I2C data transfer . . . . . 762
- 26.4.8 I2C target mode . . . . . 764
| 26.4.9 | I2C controller mode ..... | 773 |
| 26.4.10 | I2C_TIMINGR register configuration examples ..... | 784 |
| 26.4.11 | SMBus specific features ..... | 786 |
| 26.4.12 | SMBus initialization ..... | 788 |
| 26.4.13 | SMBus I2C_TIMEOUTR register configuration examples ..... | 790 |
| 26.4.14 | SMBus target mode ..... | 791 |
| 26.4.15 | SMBus controller mode ..... | 794 |
| 26.4.16 | Wake-up from Stop mode on address match ..... | 797 |
| 26.4.17 | Error conditions ..... | 798 |
| 26.5 | I2C in low-power modes ..... | 800 |
| 26.6 | I2C interrupts ..... | 800 |
| 26.7 | I2C DMA requests ..... | 801 |
| 26.7.1 | Transmission using DMA ..... | 801 |
| 26.7.2 | Reception using DMA ..... | 801 |
| 26.8 | I2C debug modes ..... | 801 |
| 26.9 | I2C registers ..... | 802 |
| 26.9.1 | I2C control register 1 (I2C_CR1) ..... | 802 |
| 26.9.2 | I2C control register 2 (I2C_CR2) ..... | 804 |
| 26.9.3 | I2C own address 1 register (I2C_OAR1) ..... | 806 |
| 26.9.4 | I2C own address 2 register (I2C_OAR2) ..... | 807 |
| 26.9.5 | I2C timing register (I2C_TIMINGR) ..... | 808 |
| 26.9.6 | I2C timeout register (I2C_TIMEOUTR) ..... | 809 |
| 26.9.7 | I2C interrupt and status register (I2C_ISR) ..... | 810 |
| 26.9.8 | I2C interrupt clear register (I2C_ICR) ..... | 812 |
| 26.9.9 | I2C PEC register (I2C_PECR) ..... | 813 |
| 26.9.10 | I2C receive data register (I2C_RXDR) ..... | 813 |
| 26.9.11 | I2C transmit data register (I2C_TXDR) ..... | 814 |
| 26.9.12 | I2C register map ..... | 815 |
| 27 | Universal synchronous/asynchronous receiver transmitter (USART/UART) ..... | 816 |
| 27.1 | USART introduction ..... | 816 |
| 27.2 | USART main features ..... | 817 |
| 27.3 | USART extended features ..... | 818 |
| 27.4 | USART implementation ..... | 818 |
| 27.5 | USART functional description ..... | 819 |
| 27.5.1 | USART block diagram . . . . . | 819 |
| 27.5.2 | USART signals . . . . . | 820 |
| 27.5.3 | USART character description . . . . . | 821 |
| 27.5.4 | USART FIFOs and thresholds . . . . . | 823 |
| 27.5.5 | USART transmitter . . . . . | 823 |
| 27.5.6 | USART receiver . . . . . | 827 |
| 27.5.7 | USART baud rate generation . . . . . | 834 |
| 27.5.8 | Tolerance of the USART receiver to clock deviation . . . . . | 835 |
| 27.5.9 | USART auto baud rate detection . . . . . | 837 |
| 27.5.10 | USART multiprocessor communication . . . . . | 839 |
| 27.5.11 | USART Modbus communication . . . . . | 841 |
| 27.5.12 | USART parity control . . . . . | 842 |
| 27.5.13 | USART LIN (local interconnection network) mode . . . . . | 843 |
| 27.5.14 | USART synchronous mode . . . . . | 845 |
| 27.5.15 | USART single-wire half-duplex communication . . . . . | 849 |
| 27.5.16 | USART receiver timeout . . . . . | 849 |
| 27.5.17 | USART smartcard mode . . . . . | 850 |
| 27.5.18 | USART IrDA SIR ENDEC block . . . . . | 854 |
| 27.5.19 | Continuous communication using USART and DMA . . . . . | 857 |
| 27.5.20 | RS232 hardware flow control and RS485 Driver Enable . . . . . | 859 |
| 27.5.21 | USART low-power management . . . . . | 862 |
| 27.6 | USART in low-power modes . . . . . | 865 |
| 27.7 | USART interrupts . . . . . | 866 |
| 27.8 | USART registers . . . . . | 867 |
| 27.8.1 | USART control register 1 (USART_CR1) . . . . . | 867 |
| 27.8.2 | USART control register 1 [alternate] (USART_CR1) . . . . . | 870 |
| 27.8.3 | USART control register 2 (USART_CR2) . . . . . | 874 |
| 27.8.4 | USART control register 3 (USART_CR3) . . . . . | 878 |
| 27.8.5 | USART baud rate register (USART_BRR) . . . . . | 882 |
| 27.8.6 | USART guard time and prescaler register (USART_GTPR) . . . . . | 882 |
| 27.8.7 | USART receiver timeout register (USART_RTOR) . . . . . | 883 |
| 27.8.8 | USART request register (USART_RQR) . . . . . | 884 |
| 27.8.9 | USART interrupt and status register (USART_ISR) . . . . . | 885 |
| 27.8.10 | USART interrupt and status register [alternate] (USART_ISR) . . . . . | 891 |
| 27.8.11 | USART interrupt flag clear register (USART_ICR) . . . . . | 896 |
| 27.8.12 | USART receive data register (USART_RDR) . . . . . | 898 |
| 27.8.13 | USART transmit data register (USART_TDR) . . . . . | 898 |
| 27.8.14 | USART prescaler register (USART_PRESC) ..... | 899 |
| 27.8.15 | USART register map ..... | 900 |
| 28 | Serial peripheral interface (SPI) ..... | 902 |
| 28.1 | Introduction ..... | 902 |
| 28.2 | SPI main features ..... | 902 |
| 28.3 | SPI implementation ..... | 903 |
| 28.4 | SPI functional description ..... | 903 |
| 28.4.1 | General description ..... | 903 |
| 28.4.2 | Communications between one master and one slave ..... | 904 |
| 28.4.3 | Standard multislave communication ..... | 906 |
| 28.4.4 | Multimaster communication ..... | 907 |
| 28.4.5 | Slave select (NSS) pin management ..... | 908 |
| 28.4.6 | Communication formats ..... | 909 |
| 28.4.7 | Configuration of SPI ..... | 911 |
| 28.4.8 | Procedure for enabling SPI ..... | 912 |
| 28.4.9 | Data transmission and reception procedures ..... | 912 |
| 28.4.10 | SPI status flags ..... | 922 |
| 28.4.11 | SPI error flags ..... | 923 |
| 28.4.12 | NSS pulse mode ..... | 924 |
| 28.4.13 | TI mode ..... | 924 |
| 28.4.14 | CRC calculation ..... | 925 |
| 28.5 | SPI interrupts ..... | 927 |
| 28.6 | SPI registers ..... | 928 |
| 28.6.1 | SPI control register 1 (SPIx_CR1) ..... | 928 |
| 28.6.2 | SPI control register 2 (SPIx_CR2) ..... | 930 |
| 28.6.3 | SPI status register (SPIx_SR) ..... | 932 |
| 28.6.4 | SPI data register (SPIx_DR) ..... | 933 |
| 28.6.5 | SPI CRC polynomial register (SPIx_CRCPR) ..... | 934 |
| 28.6.6 | SPI Rx CRC register (SPIx_RXCRCR) ..... | 934 |
| 28.6.7 | SPI Tx CRC register (SPIx_TXCRCR) ..... | 934 |
| 28.6.8 | SPI register map ..... | 936 |
| 29 | Inter-processor communication controller (IPCC) ..... | 937 |
| 29.1 | Introduction ..... | 937 |
| 29.2 | IPCC main features ..... | 937 |
| 29.3 | IPCC functional description . . . . . | 937 |
| 29.3.1 | IPCC block diagram . . . . . | 938 |
| 29.3.2 | IPCC Simplex channel mode . . . . . | 938 |
| 29.3.3 | IPCC Half-duplex channel mode . . . . . | 941 |
| 29.3.4 | IPCC interrupts . . . . . | 944 |
| 29.4 | IPCC registers . . . . . | 945 |
| 29.4.1 | IPCC processor 1 control register (IPCC_C1CR) . . . . . | 945 |
| 29.4.2 | IPCC processor 1 mask register (IPCC_C1MR) . . . . . | 945 |
| 29.4.3 | IPCC processor 1 status set clear register (IPCC_C1SCR) . . . . . | 946 |
| 29.4.4 | IPCC processor 1 to processor 2 status register (IPCC_C1TOC2SR) . . . . . | 946 |
| 29.4.5 | IPCC processor 2 control register (IPCC_C2CR) . . . . . | 947 |
| 29.4.6 | IPCC processor 2 mask register (IPCC_C2MR) . . . . . | 947 |
| 29.4.7 | IPCC processor 2 status set clear register (IPCC_C2SCR) . . . . . | 948 |
| 29.4.8 | IPCC processor 2 to processor 1 status register (IPCC_C2TOC1SR) . . . . . | 949 |
| 29.4.9 | IPCC register map . . . . . | 950 |
| 30 | Hardware semaphore (HSEM) . . . . . | 951 |
| 30.1 | Introduction . . . . . | 951 |
| 30.2 | Main features . . . . . | 951 |
| 30.3 | Functional description . . . . . | 952 |
| 30.3.1 | HSEM block diagram . . . . . | 952 |
| 30.3.2 | HSEM internal signals . . . . . | 952 |
| 30.3.3 | HSEM lock procedures . . . . . | 952 |
| 30.3.4 | HSEM write/read/read lock register address . . . . . | 954 |
| 30.3.5 | HSEM unlock procedures . . . . . | 954 |
| 30.3.6 | HSEM COREID semaphore clear . . . . . | 955 |
| 30.3.7 | HSEM interrupts . . . . . | 955 |
| 30.3.8 | AHB bus master ID verification . . . . . | 957 |
| 30.4 | HSEM registers . . . . . | 958 |
| 30.4.1 | HSEM register semaphore x (HSEM_Rx) . . . . . | 958 |
| 30.4.2 | HSEM read lock register semaphore x (HSEM_RLRx) . . . . . | 959 |
| 30.4.3 | HSEM interrupt enable register (HSEM_CnIER) . . . . . | 960 |
| 30.4.4 | HSEM interrupt clear register (HSEM_CnICR) . . . . . | 960 |
| 30.4.5 | HSEM interrupt status register (HSEM_CnISR) . . . . . | 960 |
| 30.4.6 | HSEM interrupt status register (HSEM_CnMISR) . . . . . | 961 |
| 30.4.7 | HSEM clear register (HSEM_CR) ..... | 961 |
| 30.4.8 | HSEM clear semaphore key register (HSEM_KEYR) ..... | 962 |
| 30.4.9 | HSEM register map ..... | 963 |
| 31 | Debug support (DBG) ..... | 965 |
| 31.1 | Introduction ..... | 965 |
| 31.2 | Debug use cases ..... | 965 |
| 31.3 | DBG functional description ..... | 967 |
| 31.3.1 | DBG block diagram ..... | 967 |
| 31.3.2 | DBG pins and internal signals ..... | 967 |
| 31.3.3 | DBG power domains ..... | 968 |
| 31.3.4 | DBG clocks ..... | 968 |
| 31.3.5 | Debug and low power modes ..... | 969 |
| 31.3.6 | DBG reset ..... | 969 |
| 31.4 | Serial wire and JTAG debug port (SWJ-DP) ..... | 969 |
| 31.4.1 | JTAG debug port ..... | 969 |
| 31.4.2 | SW debug port ..... | 972 |
| 31.4.3 | Debug port registers ..... | 973 |
| 31.4.4 | DP debug port identification register (DP_PIDR) ..... | 974 |
| 31.4.5 | DP abort register (DP_ABORTR) ..... | 974 |
| 31.4.6 | DP control and status register (DP_CTRL/STATR) ..... | 975 |
| 31.4.7 | DP data link control register (DP_DLCR) ..... | 977 |
| 31.4.8 | DP target identification register (DP_TARGETIDR) ..... | 977 |
| 31.4.9 | DP data link protocol identification register (DP_DLPIDR) ..... | 978 |
| 31.4.10 | DP resend register (DP_RESENR) ..... | 978 |
| 31.4.11 | DP access port select register (DP_SELECTR) ..... | 979 |
| 31.4.12 | DP read buffer register (DP_BUFFR) ..... | 979 |
| 31.4.13 | DP target selection register (DP_TARGETSEL) ..... | 980 |
| 31.4.14 | Debug port register map and reset values ..... | 981 |
| 31.5 | Access ports ..... | 982 |
| 31.5.1 | AP control/status word register (AP_CSWR) ..... | 984 |
| 31.5.2 | AP transfer address register (AP_TAR) ..... | 985 |
| 31.5.3 | AP data read/write register (AP_DRWR) ..... | 985 |
| 31.5.4 | AP banked data registers (AP_BD0-3R) ..... | 985 |
| 31.5.5 | AP base address register (AP_BASER) ..... | 986 |
| 31.5.6 | AP identification register (AP_IDR) ..... | 986 |
| 31.5.7 | Access port register map and reset values ..... | 988 |
| 31.6 | Cross trigger interface (CTI) and matrix (CTM) . . . . . | 989 |
| 31.7 | Cross trigger interface registers . . . . . | 993 |
| 31.7.1 | CTI control register (CTI_CONTROLR) . . . . . | 993 |
| 31.7.2 | CTI trigger acknowledge register (CTI_INTACKR) . . . . . | 993 |
| 31.7.3 | CTI application trigger set register (CTI_APPSETR) . . . . . | 993 |
| 31.7.4 | CTI application trigger clear register (CTI_APPCLEAR) . . . . . | 994 |
| 31.7.5 | CTI application pulse register (CTI_APPPULSER) . . . . . | 995 |
| 31.7.6 | CTI trigger In x enable register (CTI_INENRx) . . . . . | 995 |
| 31.7.7 | CTI trigger out x enable register (CTI_OUTENRx) . . . . . | 996 |
| 31.7.8 | CTI trigger in status register (CTI_TRGISTSR) . . . . . | 996 |
| 31.7.9 | CTI trigger out status register (CTI_TRGOSTSR) . . . . . | 997 |
| 31.7.10 | CTI channel in status register (CTI_CHINSTSR) . . . . . | 997 |
| 31.7.11 | CTI channel out status register (CTI_CHOUTSTSR) . . . . . | 997 |
| 31.7.12 | CTI channel gate register (CTI_GATER) . . . . . | 998 |
| 31.7.13 | CTI claim tag set register (CTI_CLAIMSETR) . . . . . | 998 |
| 31.7.14 | CTI claim tag clear register (CTI_CLAIMCLR) . . . . . | 999 |
| 31.7.15 | CTI lock access register (CTI_LAR) . . . . . | 999 |
| 31.7.16 | CTI lock status register (CTI_LSR) . . . . . | 1000 |
| 31.7.17 | CTI authentication status register (CTI_AUTHSTATR) . . . . . | 1000 |
| 31.7.18 | CTI device configuration register (CTI_DEVIDR) . . . . . | 1001 |
| 31.7.19 | CTI device type identifier register (CTI_DEVTYPE) . . . . . | 1001 |
| 31.7.20 | CTI CoreSight peripheral identity register 4 (CTI_PIDR4) . . . . . | 1002 |
| 31.7.21 | CTI CoreSight peripheral identity register 0 (CTI_PIDR0) . . . . . | 1002 |
| 31.7.22 | CTI CoreSight peripheral identity register 1 (CTI_PIDR1) . . . . . | 1002 |
| 31.7.23 | CTI CoreSight peripheral identity register 2 (CTI_PIDR2) . . . . . | 1003 |
| 31.7.24 | CTI CoreSight peripheral identity register 3 (CTI_PIDR3) . . . . . | 1003 |
| 31.7.25 | CTI CoreSight component identity register 0 (CTI_CIDR0) . . . . . | 1004 |
| 31.7.26 | CTI CoreSight peripheral identity register 1 (CTI_CIDR1) . . . . . | 1004 |
| 31.7.27 | CTI CoreSight component identity register 2 (CTI_CIDR2) . . . . . | 1005 |
| 31.7.28 | CTI CoreSight component identity register 3 (CTI_CIDR3) . . . . . | 1005 |
| 31.7.29 | CTI register map and reset values . . . . . | 1006 |
| 31.8 | Microcontroller debug unit (DBGMCU) . . . . . | 1009 |
| 31.8.1 | DBGMCU identity code register (DBGMCU_IDCODE) . . . . . | 1009 |
| 31.8.2 | DBGMCU configuration register (DBGMCU_CR) . . . . . | 1009 |
| 31.8.3 | DBGMCU CPU1 APB1 peripheral freeze register 1 (DBGMCU_APB1FZR1) . . . . . | 1010 |
| 31.8.4 | DBGMCU CPU2 APB1 peripheral freeze register 1 (DBGMCU_C2APB1FZR1) ..... | 1011 |
| 31.8.5 | DBGMCU CPU1 APB1 peripheral freeze register 2 (DBGMCU_APB1FZR2) ..... | 1012 |
| 31.8.6 | DBGMCU CPU2 APB1 peripheral freeze register 2 (DBGMCU_C2APB1FZR2) ..... | 1013 |
| 31.8.7 | DBGMCU CPU1 APB2 peripheral freeze register (DBGMCU_APB2FZR) ..... | 1013 |
| 31.8.8 | DBGMCU CPU2 APB2 peripheral freeze register (DBGMCU_C2APB2FZR) ..... | 1014 |
| 31.8.9 | DBGMCU register map and reset values ..... | 1015 |
| 31.9 | CPU2 ROM tables ..... | 1017 |
| 31.9.1 | CPU2 ROM1 memory type register (C2ROM1_MEMTYPER) ..... | 1019 |
| 31.9.2 | CPU2 ROM1 CoreSight peripheral identity register 4 (C2ROM1_PIDR4) ..... | 1019 |
| 31.9.3 | CPU2 ROM1 CoreSight peripheral identity register 0 (C2ROM1_PIDR0) ..... | 1019 |
| 31.9.4 | CPU2 ROM1 CoreSight peripheral identity register 1 (C2ROM1_PIDR1) ..... | 1020 |
| 31.9.5 | CPU2 ROM1 CoreSight peripheral identity register 2 (C2ROM1_PIDR2) ..... | 1020 |
| 31.9.6 | CPU2 ROM1 CoreSight peripheral identity register 3 (C2ROM1_PIDR3) ..... | 1021 |
| 31.9.7 | CPU2 ROM1 CoreSight component identity register 0 (C2ROM1_CIDR0) ..... | 1021 |
| 31.9.8 | CPU2 ROM1 CoreSight peripheral identity register 1 (C2ROM1_CIDR1) ..... | 1022 |
| 31.9.9 | CPU2 ROM1 CoreSight component identity register 2 (C2ROM1_CIDR2) ..... | 1022 |
| 31.9.10 | CPU2 ROM1 CoreSight component identity register 3 (C2ROM1_CIDR3) ..... | 1022 |
| 31.9.11 | CPU2 processor ROM table registers and reset values ..... | 1024 |
| 31.9.12 | CPU2 ROM2 memory type register (C2ROM2_MEMTYPER) ..... | 1025 |
| 31.9.13 | CPU2 ROM2 CoreSight peripheral identity register 4 (C2ROM2_PIDR4) ..... | 1025 |
| 31.9.14 | CPU2 ROM2 CoreSight peripheral identity register 0 (C2ROM2_PIDR0) ..... | 1025 |
| 31.9.15 | CPU2 ROM2 CoreSight peripheral identity register 1 (C2ROM2_PIDR1) ..... | 1026 |
| 31.9.16 | CPU2 ROM2 CoreSight peripheral identity register 2 (C2ROM2_PIDR2) ..... | 1026 |
| 31.9.17 | CPU2 ROM2 CoreSight peripheral identity register 3 (C2ROM2_PIDR3) ..... | 1027 |
| 31.9.18 | CPU2 ROM2 CoreSight component identity register 0 (C2ROM2_CIDR0) ..... | 1027 |
| 31.9.19 | CPU2 ROM2 CoreSight peripheral identity register 1 (C2ROM2_CIDR1) ..... | 1028 |
| 31.9.20 | CPU2 ROM2 CoreSight component identity register 2 (C2ROM2_CIDR2) ..... | 1028 |
| 31.9.21 | CPU2 ROM2 CoreSight component identity register 3 (C2ROM2_CIDR3) ..... | 1028 |
| 31.9.22 | CPU2 ROM table register map and reset values ..... | 1030 |
| 31.10 | CPU2 data watchpoint and trace unit (DWT) ..... | 1031 |
| 31.10.1 | DWT control register (DWT_CTRLR) ..... | 1031 |
| 31.10.2 | DWT cycle count register (DWT_CYCCNTR) ..... | 1033 |
| 31.10.3 | DWT CPI count register (DWT_CPICNTR) ..... | 1033 |
| 31.10.4 | DWT exception count register (DWT_EXCCNTR) ..... | 1034 |
| 31.10.5 | DWT sleep count register (DWT_SLP CNTR) ..... | 1034 |
| 31.10.6 | DWT LSU count register (DWT_LSUCNTR) ..... | 1035 |
| 31.10.7 | DWT fold count register (DWT_FOLDCNTR) ..... | 1035 |
| 31.10.8 | DWT program counter sample register (DWT_PCSR) ..... | 1035 |
| 31.10.9 | DWT comparator register x (DWT_COMPxR) ..... | 1036 |
| 31.10.10 | DWT mask register x (DWT_MASKxR) ..... | 1036 |
| 31.10.11 | DWT function register x (DWT_FUNCTxR) ..... | 1036 |
| 31.10.12 | DWT CoreSight peripheral identity register 4 (DWT_PIDR4) ..... | 1037 |
| 31.10.13 | DWT CoreSight peripheral identity register 0 (DWT_PIDR0) ..... | 1038 |
| 31.10.14 | DWT CoreSight peripheral identity register 1 (DWT_PIDR1) ..... | 1038 |
| 31.10.15 | DWT CoreSight peripheral identity register 2 (DWT_PIDR2) ..... | 1039 |
| 31.10.16 | DWT CoreSight peripheral identity register 3 (DWT_PIDR3) ..... | 1039 |
| 31.10.17 | DWT CoreSight component identity register 0 (DWT_CIDR0) ..... | 1040 |
| 31.10.18 | DWT CoreSight peripheral identity register 1 (DWT_CIDR1) ..... | 1040 |
| 31.10.19 | DWT CoreSight component identity register 2 (DWT_CIDR2) ..... | 1040 |
| 31.10.20 | DWT CoreSight component identity register 3 (DWT_CIDR3) ..... | 1041 |
| 31.10.21 | CPU2 DWT registers ..... | 1042 |
| 31.11 | CPU2 breakpoint unit (PBU) ..... | 1045 |
| 31.11.1 | BPU control register (BPU_CTRLR) ..... | 1045 |
| 31.11.2 | BPU remap register (BPU_REMAPR) ..... | 1045 |
| 31.11.3 | BPU comparator registers (BPU_COMPxR) ..... | 1046 |
| 31.11.4 | BPU CoreSight peripheral identity register 4 (BPU_PIDR4) ..... | 1046 |
| 31.11.5 | BPU CoreSight peripheral identity register 0 (BPU_PIDR0) . . . . . | 1047 |
| 31.11.6 | BPU CoreSight peripheral identity register 1 (BPU_PIDR1) . . . . . | 1047 |
| 31.11.7 | BPU CoreSight peripheral identity register 2 (BPU_PIDR2) . . . . . | 1047 |
| 31.11.8 | BPU CoreSight peripheral identity register 3 (BPU_PIDR3) . . . . . | 1048 |
| 31.11.9 | BPU CoreSight component identity register 0 (BPU_CIDR0) . . . . . | 1048 |
| 31.11.10 | BPU CoreSight peripheral identity register 1 (BPU_CIDR1) . . . . . | 1049 |
| 31.11.11 | BPU CoreSight component identity register 2 (BPU_CIDR2) . . . . . | 1049 |
| 31.11.12 | BPU CoreSight component identity register 3 (BPU_CIDR3) . . . . . | 1050 |
| 31.11.13 | CPU2 BPU register map and reset values . . . . . | 1051 |
| 31.12 | CPU2 cross trigger interface (CTI) . . . . . | 1052 |
| 31.13 | CPU1 ROM table . . . . . | 1052 |
| 31.13.1 | CPU1 ROM memory type register (C1ROM_MEMTYPER) . . . . . | 1053 |
| 31.13.2 | CPU1 ROM CoreSight peripheral identity register 4 (C1ROM_PIDR4) . . . . . | 1054 |
| 31.13.3 | CPU1 ROM CoreSight peripheral identity register 0 (C1ROM_PIDR0) . . . . . | 1054 |
| 31.13.4 | CPU1 ROM CoreSight peripheral identity register 1 (C1ROM_PIDR1) . . . . . | 1055 |
| 31.13.5 | CPU1 ROM CoreSight peripheral identity register 2 (C1ROM_PIDR2) . . . . . | 1055 |
| 31.13.6 | CPU1 ROM CoreSight peripheral identity register 3 (C1ROM_PIDR3) . . . . . | 1056 |
| 31.13.7 | CPU1 ROM CoreSight component identity register 0 (C1ROM_CIDR0) . . . . . | 1056 |
| 31.13.8 | CPU1 ROM CoreSight peripheral identity register 1 (C1ROM_CIDR1) . . . . . | 1056 |
| 31.13.9 | CPU1 ROM CoreSight component identity register 2 (C1ROM_CIDR2) . . . . . | 1057 |
| 31.13.10 | CPU1 ROM CoreSight component identity register 3 (C1ROM_CIDR3) . . . . . | 1057 |
| 31.13.11 | CPU1 ROM table register map and reset values . . . . . | 1059 |
| 31.14 | CPU1 data watchpoint and trace unit (DWT) . . . . . | 1060 |
| 31.14.1 | DWT control register (DWT_CTRLR) . . . . . | 1060 |
| 31.14.2 | DWT cycle count register (DWT_CYCCNTR) . . . . . | 1062 |
| 31.14.3 | DWT CPI count register (DWT_CPICNTR) . . . . . | 1062 |
| 31.14.4 | DWT exception count register (DWT_EXCCNTR) . . . . . | 1063 |
| 31.14.5 | DWT sleep count register (DWT_SLPNCNTR) . . . . . | 1063 |
| 31.14.6 | DWT LSU count register (DWT_LSUCNTR) . . . . . | 1064 |
| 31.14.7 | DWT fold count register (DWT_FOLDCNTR) . . . . . | 1064 |
| 31.14.8 | DWT program counter sample register (DWT_PCSR) . . . . . | 1064 |
| 31.14.9 | DWT comparator register x (DWT_COMPxR) . . . . . | 1065 |
| 31.14.10 | DWT mask register x (DWT_MASKxR) . . . . . | 1065 |
| 31.14.11 | DWT function register x (DWT_FUNCTxR) . . . . . | 1065 |
| 31.14.12 | DWT CoreSight peripheral identity register 4 (DWT_PIDR4) . . . . . | 1066 |
| 31.14.13 | DWT CoreSight peripheral identity register 0 (DWT_PIDR0) . . . . . | 1067 |
| 31.14.14 | DWT CoreSight peripheral identity register 1 (DWT_PIDR1) . . . . . | 1067 |
| 31.14.15 | DWT CoreSight peripheral identity register 2 (DWT_PIDR2) . . . . . | 1068 |
| 31.14.16 | DWT CoreSight peripheral identity register 3 (DWT_PIDR3) . . . . . | 1068 |
| 31.14.17 | DWT CoreSight component identity register 0 (DWT_CIDR0) . . . . . | 1069 |
| 31.14.18 | DWT CoreSight peripheral identity register 1 (DWT_CIDR1) . . . . . | 1069 |
| 31.14.19 | DWT CoreSight component identity register 2 (DWT_CIDR2) . . . . . | 1069 |
| 31.14.20 | DWT CoreSight component identity register 3 (DWT_CIDR3) . . . . . | 1070 |
| 31.14.21 | CPU1 DWT register map and reset values . . . . . | 1071 |
| 31.15 | CPU1 instrumentation trace macrocell (ITM) . . . . . | 1073 |
| 31.15.1 | ITM stimulus register x (ITM_STIMRx) . . . . . | 1073 |
| 31.15.2 | ITM trace enable register (ITM_TER) . . . . . | 1073 |
| 31.15.3 | ITM trace privilege register (ITM_TPR) . . . . . | 1074 |
| 31.15.4 | ITM trace control register (ITM_TCR) . . . . . | 1074 |
| 31.15.5 | ITM CoreSight peripheral identity register 4 (ITM_PIDR4) . . . . . | 1075 |
| 31.15.6 | ITM CoreSight peripheral identity register 0 (ITM_PIDR0) . . . . . | 1076 |
| 31.15.7 | ITM CoreSight peripheral identity register 1 (ITM_PIDR1) . . . . . | 1076 |
| 31.15.8 | ITM CoreSight peripheral identity register 2 (ITM_PIDR2) . . . . . | 1077 |
| 31.15.9 | ITM CoreSight peripheral identity register 3 (ITM_PIDR3) . . . . . | 1077 |
| 31.15.10 | ITM CoreSight component identity register 0 (ITM_CIDR0) . . . . . | 1078 |
| 31.15.11 | ITM CoreSight peripheral identity register 1 (ITM_CIDR1) . . . . . | 1078 |
| 31.15.12 | ITM CoreSight component identity register 2 (ITM_CIDR2) . . . . . | 1078 |
| 31.15.13 | ITM CoreSight component identity register 3 (ITM_CIDR3) . . . . . | 1079 |
| 31.15.14 | ITM register map and reset values . . . . . | 1080 |
| 31.16 | CPU1 breakpoint unit (FPB) . . . . . | 1081 |
| 31.16.1 | FPB control register (FPB_CTRLR) . . . . . | 1081 |
| 31.16.2 | FPB remap register (FPB_REMAPR) . . . . . | 1081 |
| 31.16.3 | FPB comparator registers (FPB_COMPxR) . . . . . | 1082 |
| 31.16.4 | FPB CoreSight peripheral identity register 4 (FPB_PIDR4) . . . . . | 1082 |
| 31.16.5 | FPB CoreSight peripheral identity register 0 (FPB_PIDR0) . . . . . | 1083 |
| 31.16.6 | FPB CoreSight peripheral identity register 1 (FPB_PIDR1) . . . . . | 1083 |
| 31.16.7 | FPB CoreSight peripheral identity register 2 (FPB_PIDR2) . . . . . | 1084 |
| 31.16.8 | FPB CoreSight peripheral identity register 3 (FPB_PIDR3) . . . . . | 1084 |
| 31.16.9 | FPB CoreSight component identity register 0 (FPB_CIDR0) . . . . . | 1085 |
| 31.16.10 | FPB CoreSight peripheral identity register 1 (FPB_CIDR1) . . . . . | 1085 |
| 31.16.11 | FPB CoreSight component identity register 2 (FPB_CIDR2) . . . . . | 1085 |
| 31.16.12 | FPB CoreSight component identity register 3 (FPB_CIDR3) . . . . . | 1086 |
| 31.16.13 | FPB register map and reset values . . . . . | 1087 |
| 31.17 | CPU1 trace port interface unit (TPIU) . . . . . | 1088 |
| 31.17.1 | TPIU supported port size register (TPIU_SSPSR) . . . . . | 1088 |
| 31.17.2 | TPIU current port size register (TPIU_CSPSR) . . . . . | 1088 |
| 31.17.3 | TPIU asynchronous clock presecaler register (TPIU_ACPR) . . . . . | 1089 |
| 31.17.4 | TPIU selected pin protocol register (TPIU_SPPR) . . . . . | 1089 |
| 31.17.5 | TPIU formatter and flush status register (TPIU_FFSR) . . . . . | 1090 |
| 31.17.6 | TPIU formatter and flush control register (TPIU_FFCR) . . . . . | 1090 |
| 31.17.7 | TPIU formatter synchronization counter register (TPIU_FSCR) . . . . . | 1091 |
| 31.17.8 | TPIU claim tag set register (TPIU_CLAIMSETR) . . . . . | 1091 |
| 31.17.9 | TPIU claim tag clear register (TPIU_CLAIMCLR) . . . . . | 1092 |
| 31.17.10 | TPIU device configuration register (TPIU_DEVIDR) . . . . . | 1092 |
| 31.17.11 | TPIU device type identifier register (TPIU_DEVTYPE) . . . . . | 1093 |
| 31.17.12 | TPIU CoreSight peripheral identity register 4 (TPIU_PIDR4) . . . . . | 1093 |
| 31.17.13 | TPIU CoreSight peripheral identity register 0 (TPIU_PIDR0) . . . . . | 1094 |
| 31.17.14 | TPIU CoreSight peripheral identity register 1 (TPIU_PIDR1) . . . . . | 1094 |
| 31.17.15 | TPIU CoreSight peripheral identity register 2 (TPIU_PIDR2) . . . . . | 1094 |
| 31.17.16 | TPIU CoreSight peripheral identity register 3 (TPIU_PIDR3) . . . . . | 1095 |
| 31.17.17 | TPIU CoreSight component identity register 0 (TPIU_CIDR0) . . . . . | 1095 |
| 31.17.18 | TPIU CoreSight peripheral identity register 1 (TPIU_CIDR1) . . . . . | 1096 |
| 31.17.19 | TPIU CoreSight component identity register 2 (TPIU_CIDR2) . . . . . | 1096 |
| 31.17.20 | TPIU CoreSight component identity register 3 (TPIU_CIDR3) . . . . . | 1097 |
| 31.17.21 | CPU1 TPIU register map and reset values . . . . . | 1098 |
| 31.18 | CPU1 cross trigger interface (CTI) . . . . . | 1100 |
| 31.19 | References . . . . . | 1100 |
| 32 | Device electronic signature . . . . . | 1101 |
| 32.1 | Unique device ID register (96 bits) . . . . . | 1101 |
| 32.2 | Memory size data register . . . . . | 1102 |
| 32.2.1 | Flash size data register . . . . . | 1102 |
| 32.3 | Package data register . . . . . | 1102 |
| 32.4 | Part number codification register . . . . . | 1103 |
| 33 | Important security notice . . . . . | 1104 |
| 34 | Revision history . . . . . | 1105 |
List of tables
| Table 1. | Memory map and peripheral register boundary addresses . . . . . | 56 |
| Table 2. | Boot modes. . . . . | 59 |
| Table 3. | Flash memory - Single bank organization . . . . . | 63 |
| Table 4. | Number of wait states vs, flash memory clock (HCLK4) frequency . . . . . | 65 |
| Table 5. | Page erase overview . . . . . | 70 |
| Table 6. | Mass erase overview . . . . . | 71 |
| Table 7. | Errors in page-based row programming . . . . . | 76 |
| Table 8. | Option bytes format . . . . . | 77 |
| Table 9. | Option bytes organization . . . . . | 77 |
| Table 10. | Option loading control. . . . . | 86 |
| Table 11. | UID64 organization . . . . . | 87 |
| Table 12. | Flash memory read protection status . . . . . | 88 |
| Table 13. | RDP regression from Level 1 to Level 0 and memory erase . . . . . | 90 |
| Table 14. | Access status vs. protection level and execution modes . . . . . | 91 |
| Table 17. | Flash memory interrupt requests . . . . . | 96 |
| Table 18. | Flash interface register map and reset values . . . . . | 116 |
| Table 19. | CRC internal input/output signals . . . . . | 121 |
| Table 20. | CRC register map and reset values . . . . . | 126 |
| Table 21. | Sub-system low power wake-up sources . . . . . | 135 |
| Table 22. | Low-power mode summary . . . . . | 137 |
| Table 23. | Functionalities depending on system operating mode . . . . . | 138 |
| Table 24. | Low-power run . . . . . | 141 |
| Table 25. | CPU CSTOP wake-up vs. system operating mode . . . . . | 142 |
| Table 26. | Sleep mode. . . . . | 143 |
| Table 27. | Low-power sleep. . . . . | 144 |
| Table 28. | Stop0 mode . . . . . | 146 |
| Table 29. | Stop1 mode . . . . . | 147 |
| Table 30. | Standby mode. . . . . | 149 |
| Table 31. | Shutdown mode . . . . . | 150 |
| Table 32. | PWR register map and reset values . . . . . | 167 |
| Table 33. | STM32WB10CC peripherals interconnect matrix . . . . . | 169 |
| Table 34. | Maximum clock source frequency . . . . . | 185 |
| Table 35. | Peripheral clock enable . . . . . | 188 |
| Table 36. | Single core Low power debug configurations . . . . . | 189 |
| Table 37. | RCC register map and reset values . . . . . | 240 |
| Table 38. | Port bit configuration table . . . . . | 248 |
| Table 39. | GPIO register map and reset values . . . . . | 263 |
| Table 40. | SYSCFG register map and reset values. . . . . | 282 |
| Table 41. | DMA implementation . . . . . | 285 |
| Table 42. | DMA internal input/output signals . . . . . | 286 |
| Table 43. | Programmable data width and endian behavior (when PINC = MINC = 1) . . . . . | 291 |
| Table 44. | DMA interrupt requests. . . . . | 293 |
| Table 45. | DMA register map and reset values . . . . . | 301 |
| Table 46. | DMAMUX instantiation . . . . . | 305 |
| Table 47. | DMAMUX: assignment of multiplexer inputs to resources . . . . . | 306 |
| Table 48. | DMAMUX: assignment of trigger inputs to resources. . . . . | 306 |
| Table 49. | DMAMUX: assignment of synchronization inputs to resources . . . . . | 307 |
| Table 50. | DMAMUX signals . . . . . | 309 |
| Table 51. | DMAMUX interrupts . . . . . | 313 |
| Table 52. | DMAMUX register map and reset values . . . . . | 318 |
| Table 53. | CPU1 vector table. . . . . | 322 |
| Table 54. | CPU2 vector table. . . . . | 325 |
| Table 55. | Wakeup interrupt table . . . . . | 327 |
| Table 56. | EXTI pin overview. . . . . | 330 |
| Table 57. | EVG pin overview . . . . . | 330 |
| Table 58. | EXTI event input configurations and register control . . . . . | 332 |
| Table 59. | Masking functionality . . . . . | 335 |
| Table 60. | EXTI register map sections. . . . . | 336 |
| Table 61. | EXTI register map and reset values . . . . . | 345 |
| Table 62. | ADC input/output pins. . . . . | 349 |
| Table 63. | ADC internal input/output signals . . . . . | 350 |
| Table 64. | External triggers . . . . . | 350 |
| Table 65. | Latency between trigger and start of conversion . . . . . | 355 |
| Table 66. | Configuring the trigger polarity . . . . . | 362 |
| Table 67. | tSAR timings depending on resolution . . . . . | 364 |
| Table 68. | Analog watchdog comparison. . . . . | 373 |
| Table 69. | Analog watchdog channel selection . . . . . | 374 |
| Table 70. | ADC interrupts . . . . . | 380 |
| Table 71. | ADC register map and reset values . . . . . | 396 |
| Table 72. | Acquisition sequence summary . . . . . | 401 |
| Table 73. | Spread spectrum deviation versus AHB clock frequency. . . . . | 403 |
| Table 74. | I/O state depending on its mode and IODEF bit value . . . . . | 404 |
| Table 75. | Effect of low-power modes on TSC . . . . . | 406 |
| Table 76. | Interrupt control bits . . . . . | 406 |
| Table 77. | TSC register map and reset values . . . . . | 414 |
| Table 78. | RNG internal input/output signals . . . . . | 417 |
| Table 79. | RNG interrupt requests. . . . . | 423 |
| Table 80. | RNG configurations . . . . . | 424 |
| Table 81. | RNG register map and reset map. . . . . | 427 |
| Table 82. | AES internal input/output signals . . . . . | 429 |
| Table 83. | CTR mode initialization vector definition. . . . . | 446 |
| Table 84. | GCM last block definition . . . . . | 448 |
| Table 85. | Initialization of AES_IVRx registers in GCM mode. . . . . | 449 |
| Table 86. | Initialization of AES_IVRx registers in CCM mode . . . . . | 456 |
| Table 87. | Key endianness in AES_KEYRx registers (128- or 256-bit key length) . . . . . | 461 |
| Table 88. | AES interrupt requests . . . . . | 464 |
| Table 89. | Processing latency for ECB, CBC and CTR. . . . . | 464 |
| Table 90. | Processing latency for GCM and CCM (in clock cycles). . . . . | 465 |
| Table 91. | AES register map and reset values . . . . . | 475 |
| Table 92. | Internal input/output signals . . . . . | 478 |
| Table 93. | PKA integer arithmetic functions list . . . . . | 479 |
| Table 94. | PKA prime field (Fp) elliptic curve functions list . . . . . | 479 |
| Table 95. | Montgomery parameter computation . . . . . | 484 |
| Table 96. | Modular addition . . . . . | 485 |
| Table 97. | Modular subtraction . . . . . | 485 |
| Table 98. | Montgomery multiplication . . . . . | 486 |
| Table 99. | Modular exponentiation (normal mode) . . . . . | 487 |
| Table 100. | Modular exponentiation (fast mode) . . . . . | 487 |
| Table 101. | Modular inversion . . . . . | 487 |
| Table 102. | Modular reduction . . . . . | 488 |
| Table 103. | Arithmetic addition . . . . . | 488 |
| Table 104. | Arithmetic subtraction . . . . . | 488 |
| Table 105. | Arithmetic multiplication . . . . . | 489 |
| Table 106. | Arithmetic comparison . . . . . | 489 |
| Table 107. | CRT exponentiation . . . . . | 490 |
| Table 108. | Point on elliptic curve Fp check . . . . . | 491 |
| Table 109. | ECC Fp scalar multiplication . . . . . | 491 |
| Table 110. | ECC Fp scalar multiplication (Fast Mode) . . . . . | 492 |
| Table 111. | ECDSA sign - Inputs . . . . . | 493 |
| Table 112. | ECDSA sign - Outputs . . . . . | 493 |
| Table 113. | Extended ECDSA sign (extra outputs) . . . . . | 494 |
| Table 114. | ECDSA verification (inputs) . . . . . | 494 |
| Table 115. | ECDSA verification (outputs) . . . . . | 494 |
| Table 116. | Family of supported curves for ECC operations . . . . . | 495 |
| Table 117. | Modular exponentiation computation times . . . . . | 497 |
| Table 118. | ECC scalar multiplication computation times . . . . . | 497 |
| Table 119. | ECDSA signature average computation times . . . . . | 497 |
| Table 120. | ECDSA verification average computation times . . . . . | 498 |
| Table 121. | Point on elliptic curve Fp check average computation times . . . . . | 498 |
| Table 122. | Montgomery parameters average computation times . . . . . | 498 |
| Table 123. | PKA interrupt requests . . . . . | 498 |
| Table 124. | PKA register map and reset values . . . . . | 502 |
| Table 125. | Behavior of timer outputs versus BRK/BRK2 inputs . . . . . | 545 |
| Table 126. | Break protection disarming conditions . . . . . | 547 |
| Table 127. | Counting direction versus encoder signals . . . . . | 553 |
| Table 128. | TIM1 internal trigger connection . . . . . | 570 |
| Table 129. | Output control bits for complementary OCx and OCxN channels with break feature . . . . . | 584 |
| Table 130. | TIM1 register map and reset values . . . . . | 599 |
| Table 131. | Counting direction versus encoder signals . . . . . | 635 |
| Table 132. | TIM2 internal trigger connection . . . . . | 653 |
| Table 133. | Output control bit for standard OCx channels . . . . . | 664 |
| Table 134. | TIM2 register map and reset values . . . . . | 671 |
| Table 135. | LPTIM features . . . . . | 675 |
| Table 136. | LPTIM1 external trigger connection . . . . . | 676 |
| Table 137. | LPTIM2 external trigger connection . . . . . | 676 |
| Table 138. | Prescaler division ratios . . . . . | 678 |
| Table 139. | Encoder counting scenarios . . . . . | 684 |
| Table 140. | Effect of low-power modes on the LPTIM . . . . . | 685 |
| Table 141. | Interrupt events . . . . . | 686 |
| Table 142. | LPTIM register map and reset values . . . . . | 696 |
| Table 143. | Effect of low-power modes on RTC . . . . . | 712 |
| Table 144. | Interrupt control bits . . . . . | 712 |
| Table 145. | RTC register map and reset values . . . . . | 736 |
| Table 146. | IWDG register map and reset values . . . . . | 746 |
| Table 147. | WWDG internal input/output signals . . . . . | 748 |
| Table 148. | WWDG register map and reset values . . . . . | 752 |
| Table 149. | I2C implementation . . . . . | 754 |
| Table 150. | I2C input/output pins . . . . . | 755 |
| Table 151. | I2C internal input/output signals . . . . . | 756 |
| Table 152. | Comparison of analog and digital filters . . . . . | 758 |
| Table 153. | I 2 C-bus and SMBus specification data setup and hold times . . . . . | 760 |
| Table 154. | I2C configuration . . . . . | 764 |
| Table 155. | I 2 C-bus and SMBus specification clock timings . . . . . | 775 |
| Table 156. | Timing settings for f I2CCLK of 8 MHz. . . . . | 785 |
| Table 157. | Timing settings for f I2CCLK of 16 MHz. . . . . | 785 |
| Table 158. | SMBus timeout specifications . . . . . | 787 |
| Table 159. | SMBus with PEC configuration . . . . . | 789 |
| Table 160. | TIMEOUTA[11:0] for maximum t TIMEOUT of 25 ms. . . . . | 790 |
| Table 161. | TIMEOUTB[11:0] for maximum t LOW:SEXT and t LOW:MEXT of 8 ms . . . . . | 790 |
| Table 162. | TIMEOUTA[11:0] for maximum t IDLE of 50 µs . . . . . | 790 |
| Table 163. | Effect of low-power modes to I2C. . . . . | 800 |
| Table 164. | I2C interrupt requests . . . . . | 800 |
| Table 165. | I2C register map and reset values . . . . . | 815 |
| Table 166. | USART features . . . . . | 818 |
| Table 167. | USART/UART input/output pins . . . . . | 821 |
| Table 168. | USART internal input/output signals. . . . . | 821 |
| Table 169. | Noise detection from sampled data . . . . . | 833 |
| Table 170. | Tolerance of the USART receiver when BRR [3:0] = 0000. . . . . | 836 |
| Table 171. | Tolerance of the USART receiver when BRR[3:0] is different from 0000. . . . . | 837 |
| Table 172. | USART frame formats . . . . . | 842 |
| Table 173. | Effect of low-power modes on the USART . . . . . | 865 |
| Table 174. | USART interrupt requests. . . . . | 866 |
| Table 175. | USART register map and reset values . . . . . | 900 |
| Table 176. | STM32WB10CC SPI implementation . . . . . | 903 |
| Table 177. | SPI interrupt requests . . . . . | 927 |
| Table 178. | SPI register map and reset values . . . . . | 936 |
| Table 179. | IPCC interface signals . . . . . | 938 |
| Table 180. | Bits used for the communication. . . . . | 939 |
| Table 181. | IPCC register map and reset values. . . . . | 950 |
| Table 182. | HSEM internal input/output signals. . . . . | 952 |
| Table 183. | Authorized AHB bus master IDs . . . . . | 957 |
| Table 184. | HSEM register map and reset values . . . . . | 963 |
| Table 185. | JTAG/Serial-wire debug port pins. . . . . | 967 |
| Table 186. | Trace port pins . . . . . | 968 |
| Table 187. | Single Wire Trace port pins . . . . . | 968 |
| Table 188. | Trigger pins . . . . . | 968 |
| Table 189. | JTAG-DP data registers . . . . . | 971 |
| Table 190. | Packet request . . . . . | 972 |
| Table 191. | ACK response. . . . . | 973 |
| Table 192. | Data transfer. . . . . | 973 |
| Table 193. | Debug port register map and reset values . . . . . | 981 |
| Table 194. | Access port register map and reset values. . . . . | 988 |
| Table 195. | CPU2 CTI inputs. . . . . | 989 |
| Table 196. | CPU2 CTI outputs. . . . . | 990 |
| Table 197. | CPU1 CTI inputs. . . . . | 990 |
| Table 198. | CPU1 CTI outputs. . . . . | 990 |
| Table 199. | CTI register map and reset values . . . . . | 1006 |
| Table 200. | DBGMCU register map and reset values . . . . . | 1015 |
| Table 201. | CPU2 processor ROM table . . . . . | 1017 |
| Table 202. | CPU2 ROM table . . . . . | 1017 |
| Table 203. | CPU2 processor ROM table register map and reset values. . . . . | 1024 |
| Table 204. | CPU2 ROM table register map and reset values . . . . . | 1030 |
| Table 205. | CPU2 DWT register map and reset values. . . . . | 1042 |
| Table 206. | CPU2 BPU register map and reset values . . . . . | 1051 |
| Table 207. | CPU1 ROM table . . . . . | 1052 |
| Table 208. | CPU1 ROM table register map and reset values . . . . . | 1059 |
| Table 209. | CPU1 DWT register map and reset values. . . . . | 1071 |
| Table 210. | CPU1 ITM register map and reset values. . . . . | 1080 |
| Table 211. | CPU1 FPB register map and reset values . . . . . | 1087 |
| Table 212. | CPU1 TPIU register map and reset values. . . . . | 1098 |
| Table 213. | Document revision history . . . . . | 1105 |
List of figures
Figure 1. System architecture . . . . . 52
Figure 2. Memory map . . . . . 55
Figure 3. Sequential 16-bit instructions execution . . . . . 67
Figure 4. Changing the Read protection (RDP) level . . . . . 91
Figure 5. Radio system block diagram . . . . . 119
Figure 6. CRC calculation unit block diagram . . . . . 121
Figure 7. Power supply overview . . . . . 128
Figure 8. Brown-out reset waveform . . . . . 131
Figure 9. PVD thresholds . . . . . 132
Figure 10. CPU2 boot options . . . . . 133
Figure 11. Low-power modes possible transitions . . . . . 136
Figure 12. Real-time radio activity flags . . . . . 151
Figure 13. Simplified diagram of the reset circuit . . . . . 174
Figure 14. Clock tree . . . . . 179
Figure 15. HSE clock sources . . . . . 180
Figure 16. LSE clock sources . . . . . 183
Figure 17. Three-volt or Five-volt tolerant GPIO structure (TT or FT) . . . . . 247
Figure 18. Input floating/pull up/pull down configurations . . . . . 252
Figure 19. Output configuration . . . . . 252
Figure 20. Alternate function configuration . . . . . 253
Figure 21. High impedance-analog configuration . . . . . 254
Figure 22. DMA block diagram . . . . . 285
Figure 23. DMAMUX block diagram . . . . . 308
Figure 24. Synchronization mode of the DMAMUX request line multiplexer channel . . . . . 311
Figure 25. Event generation of the DMA request line multiplexer channel . . . . . 311
Figure 26. Interrupt block diagram . . . . . 321
Figure 27. EXTI block diagram . . . . . 330
Figure 28. Configurable event trigger logic CPU wakeup . . . . . 333
Figure 29. Direct event trigger logic CPU wakeup . . . . . 334
Figure 30. ADC block diagram . . . . . 349
Figure 31. ADC calibration . . . . . 352
Figure 32. Calibration factor forcing . . . . . 352
Figure 33. Enabling/disabling the ADC . . . . . 353
Figure 34. ADC clock scheme . . . . . 354
Figure 35. ADC connectivity . . . . . 356
Figure 36. Analog-to-digital conversion time . . . . . 361
Figure 37. ADC conversion timings . . . . . 361
Figure 38. Stopping an ongoing conversion . . . . . 362
Figure 39. Single conversions of a sequence, software trigger . . . . . 365
Figure 40. Continuous conversion of a sequence, software trigger . . . . . 365
Figure 41. Single conversions of a sequence, hardware trigger . . . . . 366
Figure 42. Continuous conversions of a sequence, hardware trigger . . . . . 366
Figure 43. Data alignment and resolution . . . . . 367
Figure 44. Example of overrun (OVR) . . . . . 368
Figure 45. Wait mode conversion (continuous mode, software trigger) . . . . . 371
Figure 46. Behavior with WAIT = 0, AUTOFF = 1 . . . . . 372
Figure 47. Behavior with WAIT = 1, AUTOFF = 1 . . . . . 372
Figure 48. Analog watchdog guarded area . . . . . 373
| Figure 49. | ADC_AWD1_OUT signal generation . . . . . | 375 |
| Figure 50. | ADC_AWD1_OUT signal generation (AWD flag not cleared by software) . . . . . | 375 |
| Figure 51. | ADC1_AWD_OUT signal generation (on a single channel) . . . . . | 375 |
| Figure 52. | Analog watchdog threshold update . . . . . | 376 |
| Figure 53. | Temperature sensor and VREFINT channel block diagram . . . . . | 377 |
| Figure 54. | VBAT channel block diagram . . . . . | 379 |
| Figure 55. | TSC block diagram . . . . . | 399 |
| Figure 56. | Surface charge transfer analog I/O group structure . . . . . | 400 |
| Figure 57. | Sampling capacitor voltage variation . . . . . | 401 |
| Figure 58. | Charge transfer acquisition sequence . . . . . | 402 |
| Figure 59. | Spread spectrum variation principle . . . . . | 403 |
| Figure 60. | RNG block diagram . . . . . | 417 |
| Figure 61. | Entropy source model . . . . . | 418 |
| Figure 62. | RNG initialization overview . . . . . | 420 |
| Figure 63. | AES block diagram . . . . . | 429 |
| Figure 64. | ECB encryption and decryption principle . . . . . | 431 |
| Figure 65. | CBC encryption and decryption principle . . . . . | 432 |
| Figure 66. | CTR encryption and decryption principle . . . . . | 433 |
| Figure 67. | GCM encryption and authentication principle . . . . . | 434 |
| Figure 68. | GMAC authentication principle . . . . . | 434 |
| Figure 69. | CCM encryption and authentication principle . . . . . | 435 |
| Figure 70. | Encryption key derivation for ECB/CBC decryption (Mode 2). . . . . | 438 |
| Figure 71. | Example of suspend mode management . . . . . | 439 |
| Figure 72. | ECB encryption . . . . . | 440 |
| Figure 73. | ECB decryption . . . . . | 440 |
| Figure 74. | CBC encryption . . . . . | 441 |
| Figure 75. | CBC decryption . . . . . | 441 |
| Figure 76. | ECB/CBC encryption (Mode 1) . . . . . | 442 |
| Figure 77. | ECB/CBC decryption (Mode 3) . . . . . | 443 |
| Figure 78. | Message construction in CTR mode . . . . . | 445 |
| Figure 79. | CTR encryption . . . . . | 446 |
| Figure 80. | CTR decryption . . . . . | 446 |
| Figure 81. | Message construction in GCM . . . . . | 448 |
| Figure 82. | GCM authenticated encryption . . . . . | 449 |
| Figure 83. | Message construction in GMAC mode . . . . . | 453 |
| Figure 84. | GMAC authentication mode . . . . . | 453 |
| Figure 85. | Message construction in CCM mode . . . . . | 454 |
| Figure 86. | CCM mode authenticated encryption . . . . . | 456 |
| Figure 87. | 128-bit block construction with respect to data swap . . . . . | 460 |
| Figure 88. | DMA transfer of a 128-bit data block during input phase . . . . . | 462 |
| Figure 89. | DMA transfer of a 128-bit data block during output phase . . . . . | 463 |
| Figure 90. | PKA block diagram . . . . . | 478 |
| Figure 91. | Advanced-control timer block diagram . . . . . | 505 |
| Figure 92. | Counter timing diagram with prescaler division change from 1 to 2 . . . . . | 507 |
| Figure 93. | Counter timing diagram with prescaler division change from 1 to 4 . . . . . | 507 |
| Figure 94. | Counter timing diagram, internal clock divided by 1 . . . . . | 509 |
| Figure 95. | Counter timing diagram, internal clock divided by 2 . . . . . | 509 |
| Figure 96. | Counter timing diagram, internal clock divided by 4 . . . . . | 510 |
| Figure 97. | Counter timing diagram, internal clock divided by N . . . . . | 510 |
| Figure 98. | Counter timing diagram, update event when ARPE=0 (TIMx_ARR not preloaded) . . . . . | 511 |
| Figure 99. | Counter timing diagram, update event when ARPE=1 (TIMx_ARR preloaded) . . . . . | 511 |
| Figure 100. | Counter timing diagram, internal clock divided by 1 . . . . . | 513 |
| Figure 101. Counter timing diagram, internal clock divided by 2 . . . . . | 513 |
| Figure 102. Counter timing diagram, internal clock divided by 4 . . . . . | 514 |
| Figure 103. Counter timing diagram, internal clock divided by N . . . . . | 514 |
| Figure 104. Counter timing diagram, update event when repetition counter is not used . . . . . | 515 |
| Figure 105. Counter timing diagram, internal clock divided by 1, TIMx_ARR = 0x6 . . . . . | 516 |
| Figure 106. Counter timing diagram, internal clock divided by 2 . . . . . | 517 |
| Figure 107. Counter timing diagram, internal clock divided by 4, TIMx_ARR=0x36 . . . . . | 517 |
| Figure 108. Counter timing diagram, internal clock divided by N . . . . . | 518 |
| Figure 109. Counter timing diagram, update event with ARPE=1 (counter underflow) . . . . . | 518 |
| Figure 110. Counter timing diagram, Update event with ARPE=1 (counter overflow) . . . . . | 519 |
| Figure 111. Update rate examples depending on mode and TIMx_RCR register settings . . . . . | 520 |
| Figure 112. External trigger input block . . . . . | 521 |
| Figure 113. TIM1 ETR input circuitry . . . . . | 521 |
| Figure 114. Control circuit in normal mode, internal clock divided by 1 . . . . . | 522 |
| Figure 115. TI2 external clock connection example . . . . . | 523 |
| Figure 116. Control circuit in external clock mode 1 . . . . . | 524 |
| Figure 117. External trigger input block . . . . . | 524 |
| Figure 118. Control circuit in external clock mode 2 . . . . . | 525 |
| Figure 119. Capture/compare channel (example: channel 1 input stage) . . . . . | 526 |
| Figure 120. Capture/compare channel 1 main circuit . . . . . | 526 |
| Figure 121. Output stage of capture/compare channel (channel 1, idem ch. 2 and 3) . . . . . | 527 |
| Figure 122. Output stage of capture/compare channel (channel 4) . . . . . | 527 |
| Figure 123. Output stage of capture/compare channel (channel 5, idem ch. 6) . . . . . | 528 |
| Figure 124. PWM input mode timing . . . . . | 530 |
| Figure 125. Output compare mode, toggle on OC1 . . . . . | 532 |
| Figure 126. Edge-aligned PWM waveforms (ARR=8) . . . . . | 533 |
| Figure 127. Center-aligned PWM waveforms (ARR=8) . . . . . | 534 |
| Figure 128. Generation of 2 phase-shifted PWM signals with 50% duty cycle . . . . . | 536 |
| Figure 129. Combined PWM mode on channel 1 and 3 . . . . . | 537 |
| Figure 130. 3-phase combined PWM signals with multiple trigger pulses per period . . . . . | 538 |
| Figure 131. Complementary output with dead-time insertion . . . . . | 539 |
| Figure 132. Dead-time waveforms with delay greater than the negative pulse . . . . . | 539 |
| Figure 133. Dead-time waveforms with delay greater than the positive pulse . . . . . | 540 |
| Figure 134. Break and Break2 circuitry overview . . . . . | 542 |
| Figure 135. Various output behavior in response to a break event on BRK (OSSI = 1) . . . . . | 544 |
| Figure 136. PWM output state following BRK and BRK2 pins assertion (OSSI=1) . . . . . | 545 |
| Figure 137. PWM output state following BRK assertion (OSSI=0) . . . . . | 546 |
| Figure 138. Output redirection (BRK2 request not represented) . . . . . | 547 |
| Figure 139. Clearing TIMx OCxREF . . . . . | 548 |
| Figure 140. 6-step generation, COM example (OSSR=1) . . . . . | 549 |
| Figure 141. Example of one pulse mode . . . . . | 550 |
| Figure 142. Retriggerable one pulse mode . . . . . | 552 |
| Figure 143. Example of counter operation in encoder interface mode . . . . . | 553 |
| Figure 144. Example of encoder interface mode with TI1FP1 polarity inverted . . . . . | 554 |
| Figure 145. Measuring time interval between edges on 3 signals . . . . . | 555 |
| Figure 146. Example of Hall sensor interface . . . . . | 557 |
| Figure 147. Control circuit in reset mode . . . . . | 558 |
| Figure 148. Control circuit in Gated mode . . . . . | 559 |
| Figure 149. Control circuit in trigger mode . . . . . | 560 |
| Figure 150. Control circuit in external clock mode 2 + trigger mode . . . . . | 561 |
| Figure 151. General-purpose timer block diagram . . . . . | 603 |
| Figure 152. Counter timing diagram with prescaler division change from 1 to 2 . . . . . | 605 |
| Figure 153. Counter timing diagram with prescaler division change from 1 to 4 . . . . . | 605 |
| Figure 154. Counter timing diagram, internal clock divided by 1 . . . . . | 606 |
| Figure 155. Counter timing diagram, internal clock divided by 2 . . . . . | 607 |
| Figure 156. Counter timing diagram, internal clock divided by 4 . . . . . | 607 |
| Figure 157. Counter timing diagram, internal clock divided by N . . . . . | 608 |
| Figure 158. Counter timing diagram, Update event when ARPE=0 (TIMx_ARR not preloaded). . . . . | 608 |
| Figure 159. Counter timing diagram, Update event when ARPE=1 (TIMx_ARR preloaded). . . . . | 609 |
| Figure 160. Counter timing diagram, internal clock divided by 1 . . . . . | 610 |
| Figure 161. Counter timing diagram, internal clock divided by 2 . . . . . | 610 |
| Figure 162. Counter timing diagram, internal clock divided by 4 . . . . . | 611 |
| Figure 163. Counter timing diagram, internal clock divided by N . . . . . | 611 |
| Figure 164. Counter timing diagram, Update event . . . . . | 612 |
| Figure 165. Counter timing diagram, internal clock divided by 1, TIMx_ARR=0x6 . . . . . | 613 |
| Figure 166. Counter timing diagram, internal clock divided by 2 . . . . . | 614 |
| Figure 167. Counter timing diagram, internal clock divided by 4, TIMx_ARR=0x36 . . . . . | 614 |
| Figure 168. Counter timing diagram, internal clock divided by N . . . . . | 615 |
| Figure 169. Counter timing diagram, Update event with ARPE=1 (counter underflow). . . . . | 615 |
| Figure 170. Counter timing diagram, Update event with ARPE=1 (counter overflow). . . . . | 616 |
| Figure 171. Control circuit in normal mode, internal clock divided by 1 . . . . . | 617 |
| Figure 172. TI2 external clock connection example. . . . . | 617 |
| Figure 173. Control circuit in external clock mode 1 . . . . . | 618 |
| Figure 174. External trigger input block . . . . . | 619 |
| Figure 175. Control circuit in external clock mode 2 . . . . . | 620 |
| Figure 176. Capture/Compare channel (example: channel 1 input stage) . . . . . | 620 |
| Figure 177. Capture/Compare channel 1 main circuit . . . . . | 621 |
| Figure 178. Output stage of Capture/Compare channel (channel 1). . . . . | 621 |
| Figure 179. PWM input mode timing . . . . . | 623 |
| Figure 180. Output compare mode, toggle on OC1 . . . . . | 625 |
| Figure 181. Edge-aligned PWM waveforms (ARR=8). . . . . | 626 |
| Figure 182. Center-aligned PWM waveforms (ARR=8). . . . . | 628 |
| Figure 183. Generation of 2 phase-shifted PWM signals with 50% duty cycle . . . . . | 629 |
| Figure 184. Combined PWM mode on channels 1 and 3 . . . . . | 630 |
| Figure 185. Clearing TIMx_OCxREF . . . . . | 631 |
| Figure 186. Example of one-pulse mode. . . . . | 632 |
| Figure 187. Retriggerable one-pulse mode . . . . . | 634 |
| Figure 188. Example of counter operation in encoder interface mode . . . . . | 635 |
| Figure 189. Example of encoder interface mode with TI1FP1 polarity inverted . . . . . | 636 |
| Figure 190. Control circuit in reset mode . . . . . | 637 |
| Figure 191. Control circuit in gated mode . . . . . | 638 |
| Figure 192. Control circuit in trigger mode. . . . . | 639 |
| Figure 193. Control circuit in external clock mode 2 + trigger mode . . . . . | 640 |
| Figure 194. Master/Slave timer example . . . . . | 641 |
| Figure 195. Master/slave connection example with 1 channel only timers . . . . . | 641 |
| Figure 196. Gating TIM2 with OC1REF of TIM1 . . . . . | 642 |
| Figure 197. Gating TIM2 with Enable of TIM1 . . . . . | 643 |
| Figure 198. Triggering TIM2 with update of TIM1 . . . . . | 644 |
| Figure 199. Triggering TIM2 with Enable of TIM1 . . . . . | 644 |
| Figure 200. Low-power timer block diagram . . . . . | 675 |
| Figure 201. Glitch filter timing diagram . . . . . | 677 |
| Figure 202. LPTIM output waveform, single counting mode configuration . . . . . | 679 |
| Figure 203. LPTIM output waveform, Single counting mode configuration and Set-once mode activated (WAVE bit is set). . . . . | 679 |
| Figure 204. LPTIM output waveform, Continuous counting mode configuration . . . . . | 680 |
| Figure 205. Waveform generation . . . . . | 681 |
| Figure 206. Encoder mode counting sequence . . . . . | 685 |
| Figure 207. RTC block diagram . . . . . | 699 |
| Figure 208. Independent watchdog block diagram . . . . . | 738 |
| Figure 209. Watchdog block diagram . . . . . | 748 |
| Figure 210. Window watchdog timing diagram . . . . . | 749 |
| Figure 211. Block diagram . . . . . | 755 |
| Figure 212. I 2 C-bus protocol . . . . . | 757 |
| Figure 213. Setup and hold timings . . . . . | 759 |
| Figure 214. I2C initialization flow . . . . . | 761 |
| Figure 215. Data reception . . . . . | 762 |
| Figure 216. Data transmission . . . . . | 763 |
| Figure 217. Target initialization flow . . . . . | 766 |
| Figure 218. Transfer sequence flow for I2C target transmitter, NOSTRETCH = 0 . . . . . | 768 |
| Figure 219. Transfer sequence flow for I2C target transmitter, NOSTRETCH = 1 . . . . . | 769 |
| Figure 220. Transfer bus diagrams for I2C target transmitter (mandatory events only) . . . . . | 770 |
| Figure 221. Transfer sequence flow for I2C target receiver, NOSTRETCH = 0 . . . . . | 771 |
| Figure 222. Transfer sequence flow for I2C target receiver, NOSTRETCH = 1 . . . . . | 772 |
| Figure 223. Transfer bus diagrams for I2C target receiver (mandatory events only) . . . . . | 772 |
| Figure 224. Controller clock generation . . . . . | 774 |
| Figure 225. Controller initialization flow . . . . . | 776 |
| Figure 226. 10-bit address read access with HEAD10R = 0 . . . . . | 776 |
| Figure 227. 10-bit address read access with HEAD10R = 1 . . . . . | 777 |
| Figure 228. Transfer sequence flow for I2C controller transmitter, N ≤ 255 bytes. . . . . | 778 |
| Figure 229. Transfer sequence flow for I2C controller transmitter, N > 255 bytes. . . . . | 779 |
| Figure 230. Transfer bus diagrams for I2C controller transmitter (mandatory events only) . . . . . | 780 |
| Figure 231. Transfer sequence flow for I2C controller receiver, N ≤ 255 bytes . . . . . | 782 |
| Figure 232. Transfer sequence flow for I2C controller receiver, N > 255 bytes. . . . . | 783 |
| Figure 233. Transfer bus diagrams for I2C controller receiver (mandatory events only) . . . . . | 784 |
| Figure 234. Timeout intervals for t LOW:SEXT , t LOW:MEXT . . . . . | 788 |
| Figure 235. Transfer sequence flow for SMBus target transmitter N bytes + PEC . . . . . | 791 |
| Figure 236. Transfer bus diagram for SMBus target transmitter (SBC = 1). . . . . | 792 |
| Figure 237. Transfer sequence flow for SMBus target receiver N bytes + PEC . . . . . | 793 |
| Figure 238. Bus transfer diagrams for SMBus target receiver (SBC = 1) . . . . . | 794 |
| Figure 239. Bus transfer diagrams for SMBus controller transmitter . . . . . | 795 |
| Figure 240. Bus transfer diagrams for SMBus controller receiver . . . . . | 797 |
| Figure 241. USART block diagram . . . . . | 819 |
| Figure 242. Word length programming . . . . . | 822 |
| Figure 243. Configurable stop bits . . . . . | 824 |
| Figure 244. TC/TXE behavior when transmitting . . . . . | 827 |
| Figure 245. Start bit detection when oversampling by 16 or 8. . . . . | 828 |
| Figure 246. usart_ker_ck clock divider block diagram . . . . . | 831 |
| Figure 247. Data sampling when oversampling by 16. . . . . | 832 |
| Figure 248. Data sampling when oversampling by 8. . . . . | 833 |
| Figure 249. Mute mode using Idle line detection . . . . . | 840 |
| Figure 250. Mute mode using address mark detection . . . . . | 841 |
| Figure 251. Break detection in LIN mode (11-bit break length - LBDL bit is set). . . . . | 844 |
| Figure 252. Break detection in LIN mode vs. Framing error detection. . . . . | 845 |
| Figure 253. | USART example of synchronous master transmission. . . . . | 846 |
| Figure 254. | USART data clock timing diagram in synchronous master mode (M bits = 00) . . . . . | 846 |
| Figure 255. | USART data clock timing diagram in synchronous master mode (M bits = 01) . . . . . | 847 |
| Figure 256. | USART data clock timing diagram in synchronous slave mode (M bits = 00) . . . . . | 848 |
| Figure 257. | ISO 7816-3 asynchronous protocol . . . . . | 850 |
| Figure 258. | Parity error detection using the 1.5 stop bits . . . . . | 852 |
| Figure 259. | IrDA SIR ENDEC block diagram. . . . . | 856 |
| Figure 260. | IrDA data modulation (3/16) - normal mode . . . . . | 856 |
| Figure 261. | Transmission using DMA . . . . . | 858 |
| Figure 262. | Reception using DMA . . . . . | 859 |
| Figure 263. | Hardware flow control between 2 USARTs . . . . . | 859 |
| Figure 264. | RS232 RTS flow control . . . . . | 860 |
| Figure 265. | RS232 CTS flow control . . . . . | 861 |
| Figure 266. | Wake-up event verified (wake-up event = address match, FIFO disabled) . . . . . | 864 |
| Figure 267. | Wake-up event not verified (wake-up event = address match, FIFO disabled) . . . . . | 864 |
| Figure 268. | SPI block diagram. . . . . | 903 |
| Figure 269. | Full-duplex single master/ single slave application. . . . . | 904 |
| Figure 270. | Half-duplex single master/ single slave application . . . . . | 905 |
| Figure 271. | Simplex single master/single slave application (master in transmit-only/ slave in receive-only mode) . . . . . | 906 |
| Figure 272. | Master and three independent slaves. . . . . | 907 |
| Figure 273. | Multimaster application. . . . . | 908 |
| Figure 274. | Hardware/software slave select management . . . . . | 909 |
| Figure 275. | Data clock timing diagram . . . . . | 910 |
| Figure 276. | Data alignment when data length is not equal to 8-bit or 16-bit . . . . . | 911 |
| Figure 277. | Packing data in FIFO for transmission and reception. . . . . | 915 |
| Figure 278. | Master full-duplex communication . . . . . | 918 |
| Figure 279. | Slave full-duplex communication . . . . . | 919 |
| Figure 280. | Master full-duplex communication with CRC . . . . . | 920 |
| Figure 281. | Master full-duplex communication in packed mode . . . . . | 921 |
| Figure 282. | NSSP pulse generation in Motorola SPI master mode. . . . . | 924 |
| Figure 283. | TI mode transfer . . . . . | 925 |
| Figure 284. | IPCC block diagram . . . . . | 938 |
| Figure 285. | IPCC Simplex channel mode transfer timing . . . . . | 939 |
| Figure 286. | IPCC Simplex - Send procedure state diagram . . . . . | 940 |
| Figure 287. | IPCC Simplex - Receive procedure state diagram . . . . . | 941 |
| Figure 288. | IPCC Half-duplex channel mode transfer timing. . . . . | 942 |
| Figure 289. | IPCC Half-duplex - Send procedure state diagram . . . . . | 942 |
| Figure 290. | IPCC Half-duplex - Receive procedure state diagram . . . . . | 943 |
| Figure 291. | HSEM block diagram . . . . . | 952 |
| Figure 292. | Procedure state diagram . . . . . | 953 |
| Figure 293. | Interrupt state diagram . . . . . | 956 |
| Figure 294. | Block diagram of debug support infrastructure. . . . . | 967 |
| Figure 295. | JTAG TAP state machine . . . . . | 970 |
| Figure 296. | Debug and access port connections. . . . . | 982 |
| Figure 297. | Embedded cross trigger . . . . . | 989 |
| Figure 298. | Mapping trigger inputs to outputs . . . . . | 991 |
| Figure 299. | Cross trigger configuration example. . . . . | 992 |
| Figure 300. CPU2 CoreSight™ topology . . . . . | 1018 |
| Figure 301. CPU1 CoreSight™ topology . . . . . | 1053 |
| Figure 302. Trace port interface unit (TPIU) . . . . . | 1088 |
Chapters
- 1. Documentation conventions
- 2. System and memory overview
- 3. Embedded flash memory (FLASH)
- 4. Radio system
- 5. Cyclic redundancy check calculation unit (CRC)
- 6. Power control (PWR)
- 7. Peripherals interconnect matrix
- 8. Reset and clock control (RCC)
- 9. General-purpose I/Os (GPIO)
- 10. System configuration controller (SYSCFG)
- 11. Direct memory access controller (DMA)
- 12. DMA request multiplexer (DMAMUX)
- 13. Nested vectored interrupt controller (NVIC)
- 14. Extended interrupt and event controller (EXTI)
- 15. Analog-to-digital converter (ADC)
- 16. Touch sensing controller (TSC)
- 17. True random number generator (RNG)
- 18. AES hardware accelerator (AES)
- 19. Public key accelerator (PKA)
- 20. Advanced-control timer (TIM1)
- 21. General-purpose timer (TIM2)
- 22. Low-power timer (LPTIM)
- 23. Real-time clock (RTC)
- 24. Independent watchdog (IWDG)
- 25. System window watchdog (WWDG)
- 26. Inter-integrated circuit interface (I2C)
- 27. Universal synchronous/asynchronous receiver transmitter (USART/UART)
- 28. Serial peripheral interface (SPI)
- 29. Inter-processor communication controller (IPCC)
- 30. Hardware semaphore (HSEM)
- 31. Debug support (DBG)
- 32. Device electronic signature
- 33. Important security notice
- 34. Revision history
- Index