STM32F745xx, STM32F746xx Datasheet

STMicroelectronics

View All Related Products | Download PDF Datasheet

Datasheet

June 2018 RM0385 Rev 8 1/1724
1
RM0385
Reference manual
STM32F75xxx and STM32F74xxx advanced Arm®-based
32-bit MCUs
Introduction
This reference manual targets application developers. It provides complete information on
how to use the STM32F75xxx and STM32F74xxx microcontroller memory and peripherals.
The STM32F75xxx and STM32F74xxx is a family of microcontrollers with different memory
sizes, packages and peripherals.
For ordering information, mechanical and electrical device characteristics refer to the
datasheets.
For information on the Arm® Cortex®-M7 with FPU core, refer to the Cortex®-M7 with FPU
technical reference manual.
Related documents
Available from STMicroelectronics web site www.st.com:
STM32F74xxx and STM32F756xx datasheets
STM32F750x8 datasheet
STM32F7 Series Cortex®-M7 processor programming manual (PM0253)
www.st.com
Contents RM0385
2/1724 RM0385 Rev 8
Contents
1 Documentation conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
1.1 General information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
1.2 List of abbreviations for registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
1.3 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
1.4 Availability of peripherals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
2 System and memory overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
2.1 System architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
2.1.1 Multi AHB BusMatrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
2.1.2 AHB/APB bridges (APB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
2.1.3 CPU AXIM bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
2.1.4 ITCM bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
2.1.5 DTCM bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
2.1.6 CPU AHBS bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
2.1.7 AHB peripheral bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
2.1.8 DMA memory bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
2.1.9 DMA peripheral bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
2.1.10 Ethernet DMA bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
2.1.11 USB OTG HS DMA bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
2.1.12 LCD-TFT controller DMA bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
2.1.13 DMA2D bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
2.2 Memory organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
2.2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
2.2.2 Memory map and register boundary addresses . . . . . . . . . . . . . . . . . . 69
2.3 Embedded SRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
2.4 Flash memory overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
2.5 Boot configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
3 Embedded Flash memory (FLASH) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.2 Flash main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.3 Flash functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3.3.1 Flash memory organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
RM0385 Rev 8 3/1724
RM0385 Contents
43
3.3.2 Read access latency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
3.3.3 Flash program and erase operations . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
3.3.4 Unlocking the Flash control register . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
3.3.5 Program/erase parallelism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
3.3.6 Flash erase sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
3.3.7 Flash programming sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
3.3.8 Flash Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
3.4 FLASH Option bytes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
3.4.1 Option bytes description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
3.4.2 Option bytes programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
3.5 FLASH memory protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
3.5.1 Read protection (RDP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
3.5.2 Write protections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
3.6 One-time programmable bytes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
3.7 FLASH registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
3.7.1 Flash access control register (FLASH_ACR) . . . . . . . . . . . . . . . . . . . . 91
3.7.2 Flash key register (FLASH_KEYR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
3.7.3 Flash option key register (FLASH_OPTKEYR) . . . . . . . . . . . . . . . . . . . 92
3.7.4 Flash status register (FLASH_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
3.7.5 Flash control register (FLASH_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
3.7.6 Flash option control register (FLASH_OPTCR) . . . . . . . . . . . . . . . . . . . 95
3.7.7 Flash option control register (FLASH_OPTCR1) . . . . . . . . . . . . . . . . . . 96
3.7.8 Flash interface register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
4 Power controller (PWR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
4.1 Power supplies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
4.1.1 Independent A/D converter supply and reference voltage . . . . . . . . . . 100
4.1.2 Independent USB transceivers supply . . . . . . . . . . . . . . . . . . . . . . . . . 101
4.1.3 Battery backup domain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
4.1.4 Voltage regulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
4.2 Power supply supervisor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
4.2.1 Power-on reset (POR)/power-down reset (PDR) . . . . . . . . . . . . . . . . . 107
4.2.2 Brownout reset (BOR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
4.2.3 Programmable voltage detector (PVD) . . . . . . . . . . . . . . . . . . . . . . . . 108
4.3 Low-power modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
4.3.1 Debug mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Contents RM0385
4/1724 RM0385 Rev 8
4.3.2 Run mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
4.3.3 Low-power mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
4.3.4 Sleep mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
4.3.5 Stop mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
4.3.6 Standby mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
4.3.7 Programming the RTC alternate functions to wake up the device from
the Stop and Standby modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
4.4 Power control registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
4.4.1 PWR power control register (PWR_CR1) . . . . . . . . . . . . . . . . . . . . . . 123
4.4.2 PWR power control/status register (PWR_CSR1) . . . . . . . . . . . . . . . . 125
4.4.3 PWR power control/status register 2 (PWR_CR2) . . . . . . . . . . . . . . . 127
4.4.4 PWR power control register 2 (PWR_CSR2) . . . . . . . . . . . . . . . . . . . 129
4.5 PWR register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
5 Reset and clock control (RCC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
5.1 Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
5.1.1 System reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
5.1.2 Power reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
5.1.3 Backup domain reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
5.2 Clocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
5.2.1 HSE clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
5.2.2 HSI clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
5.2.3 PLL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
5.2.4 LSE clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
5.2.5 LSI clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
5.2.6 System clock (SYSCLK) selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
5.2.7 Clock security system (CSS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
5.2.8 RTC/AWU clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
5.2.9 Watchdog clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
5.2.10 Clock-out capability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
5.2.11 Internal/external clock measurement using TIM5/TIM11 . . . . . . . . . . . 141
5.2.12 Peripheral clock enable register (RCC_AHBxENR,
RCC_APBxENRy) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
5.3 RCC registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
5.3.1 RCC clock control register (RCC_CR) . . . . . . . . . . . . . . . . . . . . . . . . . 143
5.3.2 RCC PLL configuration register (RCC_PLLCFGR) . . . . . . . . . . . . . . . 146
5.3.3 RCC clock configuration register (RCC_CFGR) . . . . . . . . . . . . . . . . . 148
RM0385 Rev 8 5/1724
RM0385 Contents
43
5.3.4 RCC clock interrupt register (RCC_CIR) . . . . . . . . . . . . . . . . . . . . . . . 150
5.3.5 RCC AHB1 peripheral reset register (RCC_AHB1RSTR) . . . . . . . . . . 153
5.3.6 RCC AHB2 peripheral reset register (RCC_AHB2RSTR) . . . . . . . . . . 156
5.3.7 RCC AHB3 peripheral reset register (RCC_AHB3RSTR) . . . . . . . . . . 157
5.3.8 RCC APB1 peripheral reset register (RCC_APB1RSTR) . . . . . . . . . . 157
5.3.9 RCC APB2 peripheral reset register (RCC_APB2RSTR) . . . . . . . . . . 161
5.3.10 RCC AHB1 peripheral clock register (RCC_AHB1ENR) . . . . . . . . . . . 163
5.3.11 RCC AHB2 peripheral clock enable register (RCC_AHB2ENR) . . . . . 165
5.3.12 RCC AHB3 peripheral clock enable register (RCC_AHB3ENR) . . . . . 166
5.3.13 RCC APB1 peripheral clock enable register (RCC_APB1ENR) . . . . . 166
5.3.14 RCC APB2 peripheral clock enable register (RCC_APB2ENR) . . . . . 170
5.3.15 RCC AHB1 peripheral clock enable in low-power mode register
(RCC_AHB1LPENR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
5.3.16 RCC AHB2 peripheral clock enable in low-power mode register
(RCC_AHB2LPENR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
5.3.17 RCC AHB3 peripheral clock enable in low-power mode register
(RCC_AHB3LPENR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
5.3.18 RCC APB1 peripheral clock enable in low-power mode register
(RCC_APB1LPENR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
5.3.19 RCC APB2 peripheral clock enabled in low-power mode register
(RCC_APB2LPENR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
5.3.20 RCC backup domain control register (RCC_BDCR) . . . . . . . . . . . . . . 183
5.3.21 RCC clock control & status register (RCC_CSR) . . . . . . . . . . . . . . . . 184
5.3.22 RCC spread spectrum clock generation register (RCC_SSCGR) . . . . 186
5.3.23 RCC PLLI2S configuration register (RCC_PLLI2SCFGR) . . . . . . . . . 187
5.3.24 RCC PLLSAI configuration register (RCC_PLLSAICFGR) . . . . . . . . . 190
5.3.25 RCC dedicated clocks configuration register (RCC_DCKCFGR1) . . . 191
5.3.26 RCC dedicated clocks configuration register (DCKCFGR2) . . . . . . . . 193
5.3.27 RCC register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
6 General-purpose I/Os (GPIO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
6.2 GPIO main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
6.3 GPIO functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
6.3.1 General-purpose I/O (GPIO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
6.3.2 I/O pin alternate function multiplexer and mapping . . . . . . . . . . . . . . . 202
6.3.3 I/O port control registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
6.3.4 I/O port data registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Contents RM0385
6/1724 RM0385 Rev 8
6.3.5 I/O data bitwise handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
6.3.6 GPIO locking mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
6.3.7 I/O alternate function input/output . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
6.3.8 External interrupt/wakeup lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
6.3.9 Input configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
6.3.10 Output configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
6.3.11 Alternate function configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
6.3.12 Analog configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
6.3.13 Using the HSE or LSE oscillator pins as GPIOs . . . . . . . . . . . . . . . . . 207
6.3.14 Using the GPIO pins in the backup supply domain . . . . . . . . . . . . . . . 207
6.4 GPIO registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
6.4.1 GPIO port mode register (GPIOx_MODER) (x =A to K) . . . . . . . . . . . 208
6.4.2 GPIO port output type register (GPIOx_OTYPER) (x = A to K) . . . . . . 208
6.4.3 GPIO port output speed register (GPIOx_OSPEEDR)
(x = A to K) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
6.4.4 GPIO port pull-up/pull-down register (GPIOx_PUPDR)
(x = A to K) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
6.4.5 GPIO port input data register (GPIOx_IDR) (x = A to K) . . . . . . . . . . . 210
6.4.6 GPIO port output data register (GPIOx_ODR) (x = A to K) . . . . . . . . . 210
6.4.7 GPIO port bit set/reset register (GPIOx_BSRR) (x = A to K) . . . . . . . . 210
6.4.8 GPIO port configuration lock register (GPIOx_LCKR)
(x = A to K) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
6.4.9 GPIO alternate function low register (GPIOx_AFRL)
(x = A to K) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
6.4.10 GPIO alternate function high register (GPIOx_AFRH)
(x = A to J) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
6.4.11 GPIO register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
7 System configuration controller (SYSCFG) . . . . . . . . . . . . . . . . . . . . 216
7.1 I/O compensation cell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
7.2 SYSCFG registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
7.2.1 SYSCFG memory remap register (SYSCFG_MEMRMP) . . . . . . . . . . 216
7.2.2 SYSCFG peripheral mode configuration register (SYSCFG_PMC) . . 217
7.2.3 SYSCFG external interrupt configuration register 1
(SYSCFG_EXTICR1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
7.2.4 SYSCFG external interrupt configuration register 2
(SYSCFG_EXTICR2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
7.2.5 SYSCFG external interrupt configuration register 3
(SYSCFG_EXTICR3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
RM0385 Rev 8 7/1724
RM0385 Contents
43
7.2.6 SYSCFG external interrupt configuration register 4
(SYSCFG_EXTICR4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
7.2.7 Compensation cell control register (SYSCFG_CMPCR) . . . . . . . . . . . 220
7.2.8 SYSCFG register maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
8 Direct memory access controller (DMA) . . . . . . . . . . . . . . . . . . . . . . . 222
8.1 DMA introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
8.2 DMA main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
8.3 DMA functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
8.3.1 DMA block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
8.3.2 DMA overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
8.3.3 DMA transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
8.3.4 Channel selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
8.3.5 Arbiter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
8.3.6 DMA streams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
8.3.7 Source, destination and transfer modes . . . . . . . . . . . . . . . . . . . . . . . 227
8.3.8 Pointer incrementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
8.3.9 Circular mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
8.3.10 Double-buffer mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
8.3.11 Programmable data width, packing/unpacking, endianness . . . . . . . . 232
8.3.12 Single and burst transfers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
8.3.13 FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
8.3.14 DMA transfer completion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
8.3.15 DMA transfer suspension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
8.3.16 Flow controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
8.3.17 Summary of the possible DMA configurations . . . . . . . . . . . . . . . . . . . 239
8.3.18 Stream configuration procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
8.3.19 Error management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
8.4 DMA interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
8.5 DMA registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
8.5.1 DMA low interrupt status register (DMA_LISR) . . . . . . . . . . . . . . . . . . 243
8.5.2 DMA high interrupt status register (DMA_HISR) . . . . . . . . . . . . . . . . . 244
8.5.3 DMA low interrupt flag clear register (DMA_LIFCR) . . . . . . . . . . . . . . 245
8.5.4 DMA high interrupt flag clear register (DMA_HIFCR) . . . . . . . . . . . . . 245
8.5.5 DMA stream x configuration register (DMA_SxCR) . . . . . . . . . . . . . . . 246
8.5.6 DMA stream x number of data register (DMA_SxNDTR) . . . . . . . . . . 249
8.5.7 DMA stream x peripheral address register (DMA_SxPAR) . . . . . . . . . 250
Contents RM0385
8/1724 RM0385 Rev 8
8.5.8 DMA stream x memory 0 address register (DMA_SxM0AR) . . . . . . . . 250
8.5.9 DMA stream x memory 1 address register (DMA_SxM1AR) . . . . . . . . 250
8.5.10 DMA stream x FIFO control register (DMA_SxFCR) . . . . . . . . . . . . . . 251
8.5.11 DMA register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
9 Chrom-ART Accelerator™ controller (DMA2D) . . . . . . . . . . . . . . . . . 257
9.1 DMA2D introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
9.2 DMA2D main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
9.3 DMA2D functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
9.3.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
9.3.2 DMA2D control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
9.3.3 DMA2D foreground and background FIFOs . . . . . . . . . . . . . . . . . . . . 259
9.3.4 DMA2D foreground and background pixel format converter (PFC) . . . 260
9.3.5 DMA2D foreground and background CLUT interface . . . . . . . . . . . . . 262
9.3.6 DMA2D blender . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
9.3.7 DMA2D output PFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
9.3.8 DMA2D output FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
9.3.9 DMA2D AHB master port timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
9.3.10 DMA2D transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
9.3.11 DMA2D configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
9.3.12 DMA2D transfer control (start, suspend, abort and completion) . . . . . 268
9.3.13 Watermark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
9.3.14 Error management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
9.3.15 AHB dead time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
9.4 DMA2D interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
9.5 DMA2D registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
9.5.1 DMA2D control register (DMA2D_CR) . . . . . . . . . . . . . . . . . . . . . . . . 270
9.5.2 DMA2D Interrupt Status Register (DMA2D_ISR) . . . . . . . . . . . . . . . . 272
9.5.3 DMA2D interrupt flag clear register (DMA2D_IFCR) . . . . . . . . . . . . . . 273
9.5.4 DMA2D foreground memory address register (DMA2D_FGMAR) . . . 274
9.5.5 DMA2D foreground offset register (DMA2D_FGOR) . . . . . . . . . . . . . . 274
9.5.6 DMA2D background memory address register (DMA2D_BGMAR) . . 274
9.5.7 DMA2D background offset register (DMA2D_BGOR) . . . . . . . . . . . . . 275
9.5.8 DMA2D foreground PFC control register (DMA2D_FGPFCCR) . . . . . 276
9.5.9 DMA2D foreground color register (DMA2D_FGCOLR) . . . . . . . . . . . . 278
9.5.10 DMA2D background PFC control register (DMA2D_BGPFCCR) . . . . 279
9.5.11 DMA2D background color register (DMA2D_BGCOLR) . . . . . . . . . . . 281
RM0385 Rev 8 9/1724
RM0385 Contents
43
9.5.12 DMA2D foreground CLUT memory address register
(DMA2D_FGCMAR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
9.5.13 DMA2D background CLUT memory address register
(DMA2D_BGCMAR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
9.5.14 DMA2D output PFC control register (DMA2D_OPFCCR) . . . . . . . . . . 282
9.5.15 DMA2D output color register (DMA2D_OCOLR) . . . . . . . . . . . . . . . . . 283
9.5.16 DMA2D output memory address register (DMA2D_OMAR) . . . . . . . . 284
9.5.17 DMA2D output offset register (DMA2D_OOR) . . . . . . . . . . . . . . . . . . 285
9.5.18 DMA2D number of line register (DMA2D_NLR) . . . . . . . . . . . . . . . . . 285
9.5.19 DMA2D line watermark register (DMA2D_LWR) . . . . . . . . . . . . . . . . . 286
9.5.20 DMA2D AHB master timer configuration register (DMA2D_AMTCR) . 286
9.5.21 DMA2D register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
10 Nested vectored interrupt controller (NVIC) . . . . . . . . . . . . . . . . . . . . 289
10.1 NVIC features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
10.1.1 SysTick calibration value register . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
10.1.2 Interrupt and exception vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
11 Extended interrupts and events controller (EXTI) . . . . . . . . . . . . . . . 294
11.1 EXTI main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
11.2 EXTI block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
11.3 Wakeup event management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
11.4 Functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
11.5 Hardware interrupt selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
11.6 Hardware event selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
11.7 Software interrupt/event selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
11.8 External interrupt/event line mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
11.9 EXTI registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
11.9.1 Interrupt mask register (EXTI_IMR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
11.9.2 Event mask register (EXTI_EMR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
11.9.3 Rising trigger selection register (EXTI_RTSR) . . . . . . . . . . . . . . . . . . 298
11.9.4 Falling trigger selection register (EXTI_FTSR) . . . . . . . . . . . . . . . . . . 298
11.9.5 Software interrupt event register (EXTI_SWIER) . . . . . . . . . . . . . . . . 299
11.9.6 Pending register (EXTI_PR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
11.9.7 EXTI register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
12 Cyclic redundancy check calculation unit (CRC) . . . . . . . . . . . . . . . . 301
Contents RM0385
10/1724 RM0385 Rev 8
12.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
12.2 CRC main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
12.3 CRC functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
12.3.1 CRC block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
12.3.2 CRC internal signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
12.3.3 CRC operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
12.4 CRC registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
12.4.1 Data register (CRC_DR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
12.4.2 Independent data register (CRC_IDR) . . . . . . . . . . . . . . . . . . . . . . . . 304
12.4.3 Control register (CRC_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
12.4.4 Initial CRC value (CRC_INIT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
12.4.5 CRC polynomial (CRC_POL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
12.4.6 CRC register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
13 Flexible memory controller (FMC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
13.1 FMC main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
13.2 FMC block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
13.3 AHB interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
13.3.1 Supported memories and transactions . . . . . . . . . . . . . . . . . . . . . . . . 309
13.4 External device address mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .311
13.4.1 NOR/PSRAM address mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
13.4.2 NAND Flash memory address mapping . . . . . . . . . . . . . . . . . . . . . . . 312
13.4.3 SDRAM address mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
13.5 NOR Flash/PSRAM controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
13.5.1 External memory interface signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
13.5.2 Supported memories and transactions . . . . . . . . . . . . . . . . . . . . . . . . 319
13.5.3 General timing rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
13.5.4 NOR Flash/PSRAM controller asynchronous transactions . . . . . . . . . 321
13.5.5 Synchronous transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
13.5.6 NOR/PSRAM controller registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
13.6 NAND Flash controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
13.6.1 External memory interface signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
13.6.2 NAND Flash supported memories and transactions . . . . . . . . . . . . . . 354
13.6.3 Timing diagrams for NAND Flash memory . . . . . . . . . . . . . . . . . . . . . 354
13.6.4 NAND Flash operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
13.6.5 NAND Flash prewait functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
RM0385 Rev 8 11/1724
RM0385 Contents
43
13.6.6 Computation of the error correction code (ECC)
in NAND Flash memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
13.6.7 NAND Flash controller registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
13.7 SDRAM controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
13.7.1 SDRAM controller main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
13.7.2 SDRAM External memory interface signals . . . . . . . . . . . . . . . . . . . . . 364
13.7.3 SDRAM controller functional description . . . . . . . . . . . . . . . . . . . . . . . 365
13.7.4 Low-power modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
13.7.5 SDRAM controller registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
13.8 FMC register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
14 Quad-SPI interface (QUADSPI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
14.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
14.2 QUADSPI main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
14.3 QUADSPI functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
14.3.1 QUADSPI block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
14.3.2 QUADSPI pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
14.3.3 QUADSPI command sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
14.3.4 QUADSPI signal interface protocol modes . . . . . . . . . . . . . . . . . . . . . 388
14.3.5 QUADSPI indirect mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
14.3.6 QUADSPI status flag polling mode . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
14.3.7 QUADSPI memory-mapped mode . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
14.3.8 QUADSPI Flash memory configuration . . . . . . . . . . . . . . . . . . . . . . . . 393
14.3.9 QUADSPI delayed data sampling . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
14.3.10 QUADSPI configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
14.3.11 QUADSPI usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
14.3.12 Sending the instruction only once . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
14.3.13 QUADSPI error management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
14.3.14 QUADSPI busy bit and abort functionality . . . . . . . . . . . . . . . . . . . . . . 397
14.3.15 nCS behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
14.4 QUADSPI interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
14.5 QUADSPI registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
14.5.1 QUADSPI control register (QUADSPI_CR) . . . . . . . . . . . . . . . . . . . . . 400
14.5.2 QUADSPI device configuration register (QUADSPI_DCR) . . . . . . . . . 403
14.5.3 QUADSPI status register (QUADSPI_SR) . . . . . . . . . . . . . . . . . . . . . 404
14.5.4 QUADSPI flag clear register (QUADSPI_FCR) . . . . . . . . . . . . . . . . . . 405
14.5.5 QUADSPI data length register (QUADSPI_DLR) . . . . . . . . . . . . . . . . 405
Contents RM0385
12/1724 RM0385 Rev 8
14.5.6 QUADSPI communication configuration register (QUADSPI_CCR) . . 406
14.5.7 QUADSPI address register (QUADSPI_AR) . . . . . . . . . . . . . . . . . . . . 408
14.5.8 QUADSPI alternate bytes registers (QUADSPI_ABR) . . . . . . . . . . . . 409
14.5.9 QUADSPI data register (QUADSPI_DR) . . . . . . . . . . . . . . . . . . . . . . . 409
14.5.10 QUADSPI polling status mask register (QUADSPI _PSMKR) . . . . . . . 410
14.5.11 QUADSPI polling status match register (QUADSPI _PSMAR) . . . . . . 410
14.5.12 QUADSPI polling interval register (QUADSPI _PIR) . . . . . . . . . . . . . . 411
14.5.13 QUADSPI low-power timeout register (QUADSPI_LPTR) . . . . . . . . . . 411
14.5.14 QUADSPI register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
15 Analog-to-digital converter (ADC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
15.1 ADC introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
15.2 ADC main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
15.3 ADC functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
15.3.1 ADC on-off control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
15.3.2 ADC1/2 and ADC3 connectivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
15.3.3 ADC clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
15.3.4 Channel selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
15.3.5 Single conversion mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
15.3.6 Continuous conversion mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
15.3.7 Timing diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
15.3.8 Analog watchdog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
15.3.9 Scan mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
15.3.10 Injected channel management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
15.3.11 Discontinuous mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
15.4 Data alignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
15.5 Channel-wise programmable sampling time . . . . . . . . . . . . . . . . . . . . . 425
15.6 Conversion on external trigger and trigger polarity . . . . . . . . . . . . . . . . 426
15.7 Fast conversion mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
15.8 Data management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
15.8.1 Using the DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
15.8.2 Managing a sequence of conversions without using the DMA . . . . . . 428
15.8.3 Conversions without DMA and without overrun detection . . . . . . . . . . 429
15.9 Multi ADC mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
15.9.1 Injected simultaneous mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
15.9.2 Regular simultaneous mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
RM0385 Rev 8 13/1724
RM0385 Contents
43
15.9.3 Interleaved mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
15.9.4 Alternate trigger mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
15.9.5 Combined regular/injected simultaneous mode . . . . . . . . . . . . . . . . . . 438
15.9.6 Combined regular simultaneous + alternate trigger mode . . . . . . . . . . 438
15.10 Temperature sensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
15.11 Battery charge monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
15.12 ADC interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
15.13 ADC registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
15.13.1 ADC status register (ADC_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
15.13.2 ADC control register 1 (ADC_CR1) . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
15.13.3 ADC control register 2 (ADC_CR2) . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
15.13.4 ADC sample time register 1 (ADC_SMPR1) . . . . . . . . . . . . . . . . . . . . 448
15.13.5 ADC sample time register 2 (ADC_SMPR2) . . . . . . . . . . . . . . . . . . . . 449
15.13.6 ADC injected channel data offset register x (ADC_JOFRx) (x=1..4) . . 449
15.13.7 ADC watchdog higher threshold register (ADC_HTR) . . . . . . . . . . . . . 449
15.13.8 ADC watchdog lower threshold register (ADC_LTR) . . . . . . . . . . . . . . 450
15.13.9 ADC regular sequence register 1 (ADC_SQR1) . . . . . . . . . . . . . . . . . 450
15.13.10 ADC regular sequence register 2 (ADC_SQR2) . . . . . . . . . . . . . . . . . 451
15.13.11 ADC regular sequence register 3 (ADC_SQR3) . . . . . . . . . . . . . . . . . 452
15.13.12 ADC injected sequence register (ADC_JSQR) . . . . . . . . . . . . . . . . . . 453
15.13.13 ADC injected data register x (ADC_JDRx) (x= 1..4) . . . . . . . . . . . . . . 453
15.13.14 ADC regular data register (ADC_DR) . . . . . . . . . . . . . . . . . . . . . . . . . 454
15.13.15 ADC Common status register (ADC_CSR) . . . . . . . . . . . . . . . . . . . . . 454
15.13.16 ADC common control register (ADC_CCR) . . . . . . . . . . . . . . . . . . . . . 455
15.13.17 ADC common regular data register for dual and triple modes
(ADC_CDR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
15.13.18 ADC register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
16 Digital-to-analog converter (DAC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
16.1 DAC introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
16.2 DAC main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
16.3 DAC functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
16.3.1 DAC channel enable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
16.3.2 DAC output buffer enable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
16.3.3 DAC data format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
16.3.4 DAC conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
16.3.5 DAC output voltage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
Contents RM0385
14/1724 RM0385 Rev 8
16.3.6 DAC trigger selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
16.3.7 DMA request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466
16.3.8 Noise generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466
16.3.9 Triangle-wave generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
16.4 Dual DAC channel conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
16.4.1 Independent trigger without wave generation . . . . . . . . . . . . . . . . . . . 469
16.4.2 Independent trigger with single LFSR generation . . . . . . . . . . . . . . . . 469
16.4.3 Independent trigger with different LFSR generation . . . . . . . . . . . . . . 469
16.4.4 Independent trigger with single triangle generation . . . . . . . . . . . . . . . 470
16.4.5 Independent trigger with different triangle generation . . . . . . . . . . . . . 470
16.4.6 Simultaneous software start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
16.4.7 Simultaneous trigger without wave generation . . . . . . . . . . . . . . . . . . 471
16.4.8 Simultaneous trigger with single LFSR generation . . . . . . . . . . . . . . . 471
16.4.9 Simultaneous trigger with different LFSR generation . . . . . . . . . . . . . 471
16.4.10 Simultaneous trigger with single triangle generation . . . . . . . . . . . . . . 472
16.4.11 Simultaneous trigger with different triangle generation . . . . . . . . . . . . 472
16.5 DAC registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
16.5.1 DAC control register (DAC_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
16.5.2 DAC software trigger register (DAC_SWTRIGR) . . . . . . . . . . . . . . . . . 476
16.5.3 DAC channel1 12-bit right-aligned data holding register
(DAC_DHR12R1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
16.5.4 DAC channel1 12-bit left aligned data holding register
(DAC_DHR12L1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477
16.5.5 DAC channel1 8-bit right aligned data holding register
(DAC_DHR8R1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477
16.5.6 DAC channel2 12-bit right aligned data holding register
(DAC_DHR12R2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478
16.5.7 DAC channel2 12-bit left aligned data holding register
(DAC_DHR12L2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478
16.5.8 DAC channel2 8-bit right-aligned data holding register
(DAC_DHR8R2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478
16.5.9 Dual DAC 12-bit right-aligned data holding register
(DAC_DHR12RD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479
16.5.10 DUAL DAC 12-bit left aligned data holding register
(DAC_DHR12LD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479
16.5.11 DUAL DAC 8-bit right aligned data holding register
(DAC_DHR8RD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480
16.5.12 DAC channel1 data output register (DAC_DOR1) . . . . . . . . . . . . . . . . 480
16.5.13 DAC channel2 data output register (DAC_DOR2) . . . . . . . . . . . . . . . . 480
RM0385 Rev 8 15/1724
RM0385 Contents
43
16.5.14 DAC status register (DAC_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
16.5.15 DAC register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482
17 Digital camera interface (DCMI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483
17.1 DCMI introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483
17.2 DCMI main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483
17.3 DCMI clocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483
17.4 DCMI functional overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483
17.4.1 DCMI block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484
17.4.2 DMA interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484
17.4.3 DCMI physical interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484
17.4.4 Synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487
17.4.5 Capture modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
17.4.6 Crop feature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
17.4.7 JPEG format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
17.4.8 FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
17.5 Data format description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
17.5.1 Data formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
17.5.2 Monochrome format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
17.5.3 RGB format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
17.5.4 YCbCr format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
17.5.5 YCbCr format - Y only . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
17.5.6 Half resolution image extraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
17.6 DCMI interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
17.7 DCMI register description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
17.7.1 DCMI control register (DCMI_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
17.7.2 DCMI status register (DCMI_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
17.7.3 DCMI raw interrupt status register (DCMI_RIS) . . . . . . . . . . . . . . . . . . 499
17.7.4 DCMI interrupt enable register (DCMI_IER) . . . . . . . . . . . . . . . . . . . . 500
17.7.5 DCMI masked interrupt status register (DCMI_MIS) . . . . . . . . . . . . . . 501
17.7.6 DCMI interrupt clear register (DCMI_ICR) . . . . . . . . . . . . . . . . . . . . . . 502
17.7.7 DCMI embedded synchronization code register (DCMI_ESCR) . . . . . 503
17.7.8 DCMI embedded synchronization unmask register (DCMI_ESUR) . . 504
17.7.9 DCMI crop window start (DCMI_CWSTRT) . . . . . . . . . . . . . . . . . . . . . 505
17.7.10 DCMI crop window size (DCMI_CWSIZE) . . . . . . . . . . . . . . . . . . . . . . 505
17.7.11 DCMI data register (DCMI_DR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506
Contents RM0385
16/1724 RM0385 Rev 8
17.7.12 DCMI register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507
18 LCD-TFT display controller (LTDC) . . . . . . . . . . . . . . . . . . . . . . . . . . 508
18.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508
18.2 LTDC main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508
18.3 LTDC functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509
18.3.1 LTDC block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509
18.3.2 LTDC pins and external signal interface . . . . . . . . . . . . . . . . . . . . . . . 509
18.3.3 LTDC reset and clocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510
18.4 LTDC programmable parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .511
18.4.1 LTDC global configuration parameters . . . . . . . . . . . . . . . . . . . . . . . . 511
18.4.2 Layer programmable parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514
18.5 LTDC interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518
18.6 LTDC programming procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
18.7 LTDC registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521
18.7.1 LTDC synchronization size configuration register (LTDC_SSCR) . . . . 521
18.7.2 LTDC back porch configuration register (LTDC_BPCR) . . . . . . . . . . . 521
18.7.3 LTDC active width configuration register (LTDC_AWCR) . . . . . . . . . . 522
18.7.4 LTDC total width configuration register (LTDC_TWCR) . . . . . . . . . . . . 523
18.7.5 LTDC global control register (LTDC_GCR) . . . . . . . . . . . . . . . . . . . . . 523
18.7.6 LTDC shadow reload configuration register (LTDC_SRCR) . . . . . . . . 525
18.7.7 LTDC background color configuration register (LTDC_BCCR) . . . . . . 525
18.7.8 LTDC interrupt enable register (LTDC_IER) . . . . . . . . . . . . . . . . . . . . 526
18.7.9 LTDC interrupt status register (LTDC_ISR) . . . . . . . . . . . . . . . . . . . . . 527
18.7.10 LTDC Interrupt Clear Register (LTDC_ICR) . . . . . . . . . . . . . . . . . . . . . 527
18.7.11 LTDC line interrupt position configuration register (LTDC_LIPCR) . . . 528
18.7.12 LTDC current position status register (LTDC_CPSR) . . . . . . . . . . . . . 528
18.7.13 LTDC current display status register (LTDC_CDSR) . . . . . . . . . . . . . . 529
18.7.14 LTDC layer x control register (LTDC_LxCR) . . . . . . . . . . . . . . . . . . . . 530
18.7.15 LTDC layer x window horizontal position configuration register
(LTDC_LxWHPCR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531
18.7.16 LTDC layer x window vertical position configuration register
(LTDC_LxWVPCR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532
18.7.17 LTDC layer x color keying configuration register
(LTDC_LxCKCR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533
18.7.18 LTDC layer x pixel format configuration register
(LTDC_LxPFCR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533
RM0385 Rev 8 17/1724
RM0385 Contents
43
18.7.19 LTDC layer x constant alpha configuration register
(LTDC_LxCACR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534
18.7.20 LTDC layer x default color configuration register
(LTDC_LxDCCR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535
18.7.21 LTDC layer x blending factors configuration register
(LTDC_LxBFCR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536
18.7.22 LTDC layer x color frame buffer address register
(LTDC_LxCFBAR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537
18.7.23 LTDC layer x color frame buffer length register
(LTDC_LxCFBLR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537
18.7.24 LTDC layer x color frame buffer line number register
(LTDC_LxCFBLNR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538
18.7.25 LTDC layer x CLUT write register (LTDC_LxCLUTWR) . . . . . . . . . . . 539
18.7.26 LTDC register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540
19 True random number generator (RNG) . . . . . . . . . . . . . . . . . . . . . . . . 543
19.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543
19.2 RNG main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543
19.3 RNG functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544
19.3.1 RNG block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544
19.3.2 RNG internal signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544
19.3.3 Random number generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545
19.3.4 RNG initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547
19.3.5 RNG operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547
19.3.6 RNG clocking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548
19.3.7 Error management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548
19.4 RNG low-power usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549
19.5 RNG interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549
19.6 RNG processing time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549
19.7 Entropy source validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550
19.7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550
19.7.2 Validation conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550
19.7.3 Data collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550
19.8 RNG registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551
19.8.1 RNG control register (RNG_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551
19.8.2 RNG status register (RNG_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552
19.8.3 RNG data register (RNG_DR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553
19.8.4 RNG register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554
Contents RM0385
18/1724 RM0385 Rev 8
20 Cryptographic processor (CRYP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
20.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
20.2 CRYP main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
20.3 CRYP functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557
20.3.1 CRYP block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557
20.3.2 CRYP internal signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557
20.3.3 CRYP DES/TDES cryptographic core . . . . . . . . . . . . . . . . . . . . . . . . . 558
20.3.4 CRYP AES cryptographic core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559
20.3.5 CRYP procedure to perform a cipher operation . . . . . . . . . . . . . . . . . . 565
20.3.6 CRYP busy state . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
20.3.7 Preparing the CRYP AES key for decryption . . . . . . . . . . . . . . . . . . . . 569
20.3.8 CRYP stealing and data padding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569
20.3.9 CRYP suspend/resume operations . . . . . . . . . . . . . . . . . . . . . . . . . . . 571
20.3.10 CRYP DES/TDES basic chaining modes (ECB, CBC) . . . . . . . . . . . . 572
20.3.11 CRYP AES basic chaining modes (ECB, CBC) . . . . . . . . . . . . . . . . . . 577
20.3.12 CRYP AES counter mode (AES-CTR) . . . . . . . . . . . . . . . . . . . . . . . . . 582
20.3.13 CRYP AES Galois/counter mode (GCM) . . . . . . . . . . . . . . . . . . . . . . . 586
20.3.14 CRYP AES Galois message authentication code (GMAC) . . . . . . . . . 591
20.3.15 CRYP AES Counter with CBC-MAC (CCM) . . . . . . . . . . . . . . . . . . . . 592
20.3.16 CRYP data registers and data swapping . . . . . . . . . . . . . . . . . . . . . . . 598
20.3.17 CRYP key registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602
20.3.18 CRYP initialization vector registers . . . . . . . . . . . . . . . . . . . . . . . . . . . 603
20.3.19 CRYP DMA interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604
20.3.20 CRYP error management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606
20.4 CRYP interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606
20.5 CRYP processing time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608
20.6 CRYP registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609
20.6.1 CRYP control register (CRYP_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 609
20.6.2 CRYP status register (CRYP_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611
20.6.3 CRYP data input register (CRYP_DIN) . . . . . . . . . . . . . . . . . . . . . . . . 611
20.6.4 CRYP data output register (CRYP_DOUT) . . . . . . . . . . . . . . . . . . . . . 612
20.6.5 CRYP DMA control register (CRYP_DMACR) . . . . . . . . . . . . . . . . . . . 613
20.6.6 CRYP interrupt mask set/clear register (CRYP_IMSCR) . . . . . . . . . . . 613
20.6.7 CRYP raw interrupt status register (CRYP_RISR) . . . . . . . . . . . . . . . 614
20.6.8 CRYP masked interrupt status register (CRYP_MISR) . . . . . . . . . . . . 614
20.6.9 CRYP key register 0L (CRYP_K0LR) . . . . . . . . . . . . . . . . . . . . . . . . . 615
RM0385 Rev 8 19/1724
RM0385 Contents
43
20.6.10 CRYP key register 0R (CRYP_K0RR) . . . . . . . . . . . . . . . . . . . . . . . . . 616
20.6.11 CRYP key register 1L (CRYP_K1LR) . . . . . . . . . . . . . . . . . . . . . . . . . 616
20.6.12 CRYP key register 1R (CRYP_K1RR) . . . . . . . . . . . . . . . . . . . . . . . . . 617
20.6.13 CRYP key register 2L (CRYP_K2LR) . . . . . . . . . . . . . . . . . . . . . . . . . 617
20.6.14 CRYP key register 2R (CRYP_K2RR) . . . . . . . . . . . . . . . . . . . . . . . . . 617
20.6.15 CRYP key register 3L (CRYP_K3LR) . . . . . . . . . . . . . . . . . . . . . . . . . 618
20.6.16 CRYP key register 3R (CRYP_K3RR) . . . . . . . . . . . . . . . . . . . . . . . . . 618
20.6.17 CRYP initialization vector register 0L (CRYP_IV0LR) . . . . . . . . . . . . . 619
20.6.18 CRYP initialization vector register 0R (CRYP_IV0RR) . . . . . . . . . . . . 619
20.6.19 CRYP initialization vector register 1L (CRYP_IV1LR) . . . . . . . . . . . . . 620
20.6.20 CRYP initialization vector register 1R (CRYP_IV1RR) . . . . . . . . . . . . 620
20.6.21 CRYP register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621
21 Hash processor (HASH) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623
21.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623
21.2 HASH main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623
21.3 HASH functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624
21.3.1 HASH block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624
21.3.2 HASH internal signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624
21.3.3 About secure hash algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
21.3.4 Message data feeding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
21.3.5 Message digest computing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627
21.3.6 Message padding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628
21.3.7 HMAC operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630
21.3.8 Context swapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632
21.3.9 HASH DMA interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634
21.3.10 HASH error management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634
21.4 HASH interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634
21.5 HASH processing time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635
21.6 HASH registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636
21.6.1 HASH control register (HASH_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 636
21.6.2 HASH data input register (HASH_DIN) . . . . . . . . . . . . . . . . . . . . . . . . 639
21.6.3 HASH start register (HASH_STR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640
21.6.4 HASH digest registers (HASH_HR0..7) . . . . . . . . . . . . . . . . . . . . . . . . 641
21.6.5 HASH interrupt enable register (HASH_IMR) . . . . . . . . . . . . . . . . . . . 644
21.6.6 HASH status register (HASH_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645
Contents RM0385
20/1724 RM0385 Rev 8
21.6.7 HASH context swap registers (HASH_CSRx) . . . . . . . . . . . . . . . . . . . 646
21.6.8 HASH register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647
22 Advanced-control timers (TIM1/TIM8) . . . . . . . . . . . . . . . . . . . . . . . . . 648
22.1 TIM1/TIM8 introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648
22.2 TIM1/TIM8 main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648
22.3 TIM1/TIM8 functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650
22.3.1 Time-base unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650
22.3.2 Counter modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652
22.3.3 Repetition counter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663
22.3.4 External trigger input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665
22.3.5 Clock selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666
22.3.6 Capture/compare channels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670
22.3.7 Input capture mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672
22.3.8 PWM input mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673
22.3.9 Forced output mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674
22.3.10 Output compare mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675
22.3.11 PWM mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676
22.3.12 Asymmetric PWM mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679
22.3.13 Combined PWM mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680
22.3.14 Combined 3-phase PWM mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681
22.3.15 Complementary outputs and dead-time insertion . . . . . . . . . . . . . . . . 682
22.3.16 Using the break function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684
22.3.17 Clearing the OCxREF signal on an external event . . . . . . . . . . . . . . . 690
22.3.18 6-step PWM generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692
22.3.19 One-pulse mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693
22.3.20 Retriggerable one pulse mode (OPM) . . . . . . . . . . . . . . . . . . . . . . . . . 694
22.3.21 Encoder interface mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695
22.3.22 UIF bit remapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697
22.3.23 Timer input XOR function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698
22.3.24 Interfacing with Hall sensors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698
22.3.25 Timer synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701
22.3.26 ADC synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705
22.3.27 DMA burst mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705
22.3.28 Debug mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 706
22.4 TIM1/TIM8 registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 707
22.4.1 TIMx control register 1 (TIMx_CR1)(x = 1, 8) . . . . . . . . . . . . . . . . . . . 707
RM0385 Rev 8 21/1724
RM0385 Contents
43
22.4.2 TIMx control register 2 (TIMx_CR2)(x = 1, 8) . . . . . . . . . . . . . . . . . . . 708
22.4.3 TIMx slave mode control register (TIMx_SMCR)(x = 1, 8) . . . . . . . . . 711
22.4.4 TIMx DMA/interrupt enable register (TIMx_DIER)(x = 1, 8) . . . . . . . . . 713
22.4.5 TIMx status register (TIMx_SR)(x = 1, 8) . . . . . . . . . . . . . . . . . . . . . . . 715
22.4.6 TIMx event generation register (TIMx_EGR)(x = 1, 8) . . . . . . . . . . . . . 717
22.4.7 TIMx capture/compare mode register 1 (TIMx_CCMR1)(x = 1, 8) . . . 718
22.4.8 TIMx capture/compare mode register 2 (TIMx_CCMR2)(x = 1, 8) . . . 722
22.4.9 TIMx capture/compare enable register (TIMx_CCER)(x = 1, 8) . . . . . 724
22.4.10 TIMx counter (TIMx_CNT)(x = 1, 8) . . . . . . . . . . . . . . . . . . . . . . . . . . . 728
22.4.11 TIMx prescaler (TIMx_PSC)(x = 1, 8) . . . . . . . . . . . . . . . . . . . . . . . . . 728
22.4.12 TIMx auto-reload register (TIMx_ARR)(x = 1, 8) . . . . . . . . . . . . . . . . . 728
22.4.13 TIMx repetition counter register (TIMx_RCR)(x = 1, 8) . . . . . . . . . . . . 729
22.4.14 TIMx capture/compare register 1 (TIMx_CCR1)(x = 1, 8) . . . . . . . . . . 729
22.4.15 TIMx capture/compare register 2 (TIMx_CCR2)(x = 1, 8) . . . . . . . . . . 730
22.4.16 TIMx capture/compare register 3 (TIMx_CCR3)(x = 1, 8) . . . . . . . . . . 730
22.4.17 TIMx capture/compare register 4 (TIMx_CCR4)(x = 1, 8) . . . . . . . . . . 731
22.4.18 TIMx break and dead-time register (TIMx_BDTR)(x = 1, 8) . . . . . . . . 731
22.4.19 TIMx DMA control register (TIMx_DCR)(x = 1, 8) . . . . . . . . . . . . . . . . 734
22.4.20 TIMx DMA address for full transfer (TIMx_DMAR)(x = 1, 8) . . . . . . . . 735
22.4.21 TIMx capture/compare mode register 3 (TIMx_CCMR3)(x = 1, 8) . . . 736
22.4.22 TIMx capture/compare register 5 (TIMx_CCR5)(x = 1, 8) . . . . . . . . . . 737
22.4.23 TIMx capture/compare register 6 (TIMx_CCR6)(x = 1, 8) . . . . . . . . . . 738
22.4.24 TIM1 register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739
22.4.25 TIM8 register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741
23 General-purpose timers (TIM2/TIM3/TIM4/TIM5) . . . . . . . . . . . . . . . . . 743
23.1 TIM2/TIM3/TIM4/TIM5 introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743
23.2 TIM2/TIM3/TIM4/TIM5 main features . . . . . . . . . . . . . . . . . . . . . . . . . . . 743
23.3 TIM2/TIM3/TIM4/TIM5 functional description . . . . . . . . . . . . . . . . . . . . . 745
23.3.1 Time-base unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745
23.3.2 Counter modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747
23.3.3 Clock selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757
23.3.4 Capture/Compare channels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761
23.3.5 Input capture mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763
23.3.6 PWM input mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764
23.3.7 Forced output mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765
23.3.8 Output compare mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 766
Contents RM0385
22/1724 RM0385 Rev 8
23.3.9 PWM mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767
23.3.10 Asymmetric PWM mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 770
23.3.11 Combined PWM mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 771
23.3.12 Clearing the OCxREF signal on an external event . . . . . . . . . . . . . . . 772
23.3.13 One-pulse mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774
23.3.14 Retriggerable one pulse mode (OPM) . . . . . . . . . . . . . . . . . . . . . . . . . 775
23.3.15 Encoder interface mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776
23.3.16 UIF bit remapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778
23.3.17 Timer input XOR function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778
23.3.18 Timers and external trigger synchronization . . . . . . . . . . . . . . . . . . . . 779
23.3.19 Timer synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782
23.3.20 DMA burst mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 786
23.3.21 Debug mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787
23.4 TIM2/TIM3/TIM4/TIM5 registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 788
23.4.1 TIMx control register 1 (TIMx_CR1)(x = 2 to 5) . . . . . . . . . . . . . . . . . . 788
23.4.2 TIMx control register 2 (TIMx_CR2)(x = 2 to 5) . . . . . . . . . . . . . . . . . . 789
23.4.3 TIMx slave mode control register (TIMx_SMCR)(x = 2 to 5) . . . . . . . . 791
23.4.4 TIMx DMA/Interrupt enable register (TIMx_DIER)(x = 2 to 5) . . . . . . . 794
23.4.5 TIMx status register (TIMx_SR)(x = 2 to 5) . . . . . . . . . . . . . . . . . . . . . 795
23.4.6 TIMx event generation register (TIMx_EGR)(x = 2 to 5) . . . . . . . . . . . 796
23.4.7 TIMx capture/compare mode register 1 (TIMx_CCMR1)(x = 2 to 5) . . 797
23.4.8 TIMx capture/compare mode register 2 (TIMx_CCMR2)(x = 2 to 5) . . 801
23.4.9 TIMx capture/compare enable register (TIMx_CCER)(x = 2 to 5) . . . . 803
23.4.10 TIMx counter (TIMx_CNT)(x = 2 to 5) . . . . . . . . . . . . . . . . . . . . . . . . . 804
23.4.11 TIMx prescaler (TIMx_PSC)(x = 2 to 5) . . . . . . . . . . . . . . . . . . . . . . . . 805
23.4.12 TIMx auto-reload register (TIMx_ARR)(x = 2 to 5) . . . . . . . . . . . . . . . 805
23.4.13 TIMx capture/compare register 1 (TIMx_CCR1)(x = 2 to 5) . . . . . . . . 806
23.4.14 TIMx capture/compare register 2 (TIMx_CCR2)(x = 2 to 5) . . . . . . . . 806
23.4.15 TIMx capture/compare register 3 (TIMx_CCR3)(x = 2 to 5) . . . . . . . . 807
23.4.16 TIMx capture/compare register 4 (TIMx_CCR4)(x = 2 to 5) . . . . . . . . 807
23.4.17 TIMx DMA control register (TIMx_DCR)(x = 2 to 5) . . . . . . . . . . . . . . . 808
23.4.18 TIMx DMA address for full transfer (TIMx_DMAR)(x = 2 to 5) . . . . . . . 808
23.4.19 TIM2 option register (TIM2_OR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809
23.4.20 TIM5 option register (TIM5_OR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809
23.4.21 TIMx register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 810
24 General-purpose timers (TIM9/TIM10/TIM11/TIM12/TIM13/TIM14) . . 813
RM0385 Rev 8 23/1724
RM0385 Contents
43
24.1 TIM9/TIM10/TIM11/TIM12/TIM13/TIM14 introduction . . . . . . . . . . . . . . 813
24.2 TIM9/TIM10/TIM11/TIM12/TIM13/TIM14 main features . . . . . . . . . . . . . 813
24.2.1 TIM9/TIM12 main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813
24.2.2 TIM10/TIM11/TIM13/TIM14 main features . . . . . . . . . . . . . . . . . . . . . . 814
24.3 TIM9/TIM10/TIM11/TIM12/TIM13/TIM14 functional description . . . . . . . 816
24.3.1 Time-base unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816
24.3.2 Counter modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818
24.3.3 Clock selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821
24.3.4 Capture/compare channels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823
24.3.5 Input capture mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 825
24.3.6 PWM input mode (only for TIM9/TIM12) . . . . . . . . . . . . . . . . . . . . . . . 826
24.3.7 Forced output mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827
24.3.8 Output compare mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827
24.3.9 PWM mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 828
24.3.10 Combined PWM mode (TIM9/TIM12 only) . . . . . . . . . . . . . . . . . . . . . 829
24.3.11 One-pulse mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831
24.3.12 Retriggerable one pulse mode (OPM) (TIM12 only) . . . . . . . . . . . . . . 832
24.3.13 UIF bit remapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833
24.3.14 TIM9/TIM12 external trigger synchronization . . . . . . . . . . . . . . . . . . . 833
24.3.15 Slave mode – combined reset + trigger mode . . . . . . . . . . . . . . . . . . . 836
24.3.16 Timer synchronization (TIM9/TIM12) . . . . . . . . . . . . . . . . . . . . . . . . . . 837
24.3.17 Debug mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837
24.4 TIM9/TIM12 registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837
24.4.1 TIMx control register 1 (TIMx_CR1)(x = 9, 12) . . . . . . . . . . . . . . . . . . 837
24.4.2 TIMx slave mode control register (TIMx_SMCR)(x = 9, 12) . . . . . . . . 838
24.4.3 TIMx Interrupt enable register (TIMx_DIER)(x = 9, 12) . . . . . . . . . . . . 840
24.4.4 TIMx status register (TIMx_SR)(x = 9, 12) . . . . . . . . . . . . . . . . . . . . . . 840
24.4.5 TIMx event generation register (TIMx_EGR)(x = 9, 12) . . . . . . . . . . . . 841
24.4.6 TIMx capture/compare mode register 1 (TIMx_CCMR1)(x = 9, 12) . . 842
24.4.7 TIMx capture/compare enable register (TIMx_CCER)(x = 9, 12) . . . . 846
24.4.8 TIMx counter (TIMx_CNT)(x = 9, 12) . . . . . . . . . . . . . . . . . . . . . . . . . . 847
24.4.9 TIMx prescaler (TIMx_PSC)(x = 9, 12) . . . . . . . . . . . . . . . . . . . . . . . . 847
24.4.10 TIMx auto-reload register (TIMx_ARR)(x = 9, 12) . . . . . . . . . . . . . . . . 848
24.4.11 TIMx capture/compare register 1 (TIMx_CCR1)(x = 9, 12) . . . . . . . . . 848
24.4.12 TIMx capture/compare register 2 (TIMx_CCR2)(x = 9, 12) . . . . . . . . . 848
24.4.13 TIM9/TIM12 register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 850
Contents RM0385
24/1724 RM0385 Rev 8
24.5 TIM10/TIM11/TIM13/TIM14 registers . . . . . . . . . . . . . . . . . . . . . . . . . . . 852
24.5.1 TIMx control register 1 (TIMx_CR1)(x = 10, 11, 13, 14) . . . . . . . . . . . 852
24.5.2 TIMx Interrupt enable register (TIMx_DIER)(x = 10, 11, 13, 14) . . . . . 853
24.5.3 TIMx status register (TIMx_SR)(x = 10, 11, 13, 14) . . . . . . . . . . . . . . . 853
24.5.4 TIMx event generation register (TIMx_EGR)(x = 10, 11, 13, 14) . . . . . 854
24.5.5 TIMx capture/compare mode register 1
(TIMx_CCMR1)(x = 10, 11, 13, 14) . . . . . . . . . . . . . . . . . . . . . . . . . . . 855
24.5.6 TIMx capture/compare enable register
(TIMx_CCER)(x = 10, 11, 13, 14) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 857
24.5.7 TIMx counter (TIMx_CNT)(x = 10, 11, 13, 14) . . . . . . . . . . . . . . . . . . . 858
24.5.8 TIMx prescaler (TIMx_PSC)(x = 10, 11, 13, 14) . . . . . . . . . . . . . . . . . 859
24.5.9 TIMx auto-reload register (TIMx_ARR)(x = 10, 11, 13, 14) . . . . . . . . . 859
24.5.10 TIMx capture/compare register 1 (TIMx_CCR1)(x = 10, 11, 13, 14) . . 859
24.5.11 TIM11 option register 1 (TIM11_OR) . . . . . . . . . . . . . . . . . . . . . . . . . . 860
24.5.12 TIM10/TIM11/TIM13/TIM14 register map . . . . . . . . . . . . . . . . . . . . . . 860
25 Basic timers (TIM6/TIM7) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 862
25.1 TIM6/TIM7 introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 862
25.2 TIM6/TIM7 main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 862
25.3 TIM6/TIM7 functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863
25.3.1 Time-base unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863
25.3.2 Counting mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865
25.3.3 UIF bit remapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 868
25.3.4 Clock source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 868
25.3.5 Debug mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 869
25.4 TIM6/TIM7 registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 869
25.4.1 TIM6/TIM7 control register 1 (TIMx_CR1) . . . . . . . . . . . . . . . . . . . . . . 869
25.4.2 TIM6/TIM7 control register 2 (TIMx_CR2) . . . . . . . . . . . . . . . . . . . . . . 871
25.4.3 TIM6/TIM7 DMA/Interrupt enable register (TIMx_DIER) . . . . . . . . . . . 871
25.4.4 TIM6/TIM7 status register (TIMx_SR) . . . . . . . . . . . . . . . . . . . . . . . . . 872
25.4.5 TIM6/TIM7 event generation register (TIMx_EGR) . . . . . . . . . . . . . . . 872
25.4.6 TIM6/TIM7 counter (TIMx_CNT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 872
25.4.7 TIM6/TIM7 prescaler (TIMx_PSC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 873
25.4.8 TIM6/TIM7 auto-reload register (TIMx_ARR) . . . . . . . . . . . . . . . . . . . 873
25.4.9 TIM6/TIM7 register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 874
26 Low-power timer (LPTIM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 875
RM0385 Rev 8 25/1724
RM0385 Contents
43
26.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 875
26.2 LPTIM main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 875
26.3 LPTIM implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 875
26.4 LPTIM functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876
26.4.1 LPTIM block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876
26.4.2 LPTIM trigger mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876
26.4.3 LPTIM reset and clocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 877
26.4.4 Glitch filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 877
26.4.5 Prescaler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 878
26.4.6 Trigger multiplexer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 878
26.4.7 Operating mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 879
26.4.8 Timeout function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 881
26.4.9 Waveform generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 881
26.4.10 Register update . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 882
26.4.11 Counter mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 883
26.4.12 Timer enable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 883
26.4.13 Encoder mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 884
26.4.14 Debug mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885
26.5 LPTIM low-power modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885
26.6 LPTIM interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 886
26.7 LPTIM registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 886
26.7.1 LPTIM interrupt and status register (LPTIM_ISR) . . . . . . . . . . . . . . . . 886
26.7.2 LPTIM interrupt clear register (LPTIM_ICR) . . . . . . . . . . . . . . . . . . . . 888
26.7.3 LPTIM interrupt enable register (LPTIM_IER) . . . . . . . . . . . . . . . . . . . 889
26.7.4 LPTIM configuration register (LPTIM_CFGR) . . . . . . . . . . . . . . . . . . . 890
26.7.5 LPTIM control register (LPTIM_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . 893
26.7.6 LPTIM compare register (LPTIM_CMP) . . . . . . . . . . . . . . . . . . . . . . . 894
26.7.7 LPTIM autoreload register (LPTIM_ARR) . . . . . . . . . . . . . . . . . . . . . . 895
26.7.8 LPTIM counter register (LPTIM_CNT) . . . . . . . . . . . . . . . . . . . . . . . . . 895
26.7.9 LPTIM register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 896
27 Independent watchdog (IWDG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 897
27.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 897
27.2 IWDG main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 897
27.3 IWDG functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 897
27.3.1 IWDG block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 897
Contents RM0385
26/1724 RM0385 Rev 8
27.3.2 Window option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 898
27.3.3 Hardware watchdog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899
27.3.4 Low-power freeze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899
27.3.5 Behavior in Stop and Standby modes . . . . . . . . . . . . . . . . . . . . . . . . . 899
27.3.6 Register access protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899
27.3.7 Debug mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899
27.4 IWDG registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900
27.4.1 Key register (IWDG_KR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900
27.4.2 Prescaler register (IWDG_PR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 901
27.4.3 Reload register (IWDG_RLR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 902
27.4.4 Status register (IWDG_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903
27.4.5 Window register (IWDG_WINR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904
27.4.6 IWDG register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 905
28 System window watchdog (WWDG) . . . . . . . . . . . . . . . . . . . . . . . . . . 906
28.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 906
28.2 WWDG main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 906
28.3 WWDG functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 906
28.3.1 WWDG block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 907
28.3.2 Enabling the watchdog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 907
28.3.3 Controlling the downcounter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 907
28.3.4 Advanced watchdog interrupt feature . . . . . . . . . . . . . . . . . . . . . . . . . 907
28.3.5 How to program the watchdog timeout . . . . . . . . . . . . . . . . . . . . . . . . 908
28.3.6 Debug mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 909
28.4 WWDG registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 910
28.4.1 Control register (WWDG_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 910
28.4.2 Configuration register (WWDG_CFR) . . . . . . . . . . . . . . . . . . . . . . . . . 910
28.4.3 Status register (WWDG_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 911
28.4.4 WWDG register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 912
29 Real-time clock (RTC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 913
29.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 913
29.2 RTC main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 914
29.3 RTC functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 915
29.3.1 RTC block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 915
29.3.2 GPIOs controlled by the RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 916
RM0385 Rev 8 27/1724
RM0385 Contents
43
29.3.3 Clock and prescalers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 918
29.3.4 Real-time clock and calendar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 919
29.3.5 Programmable alarms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 919
29.3.6 Periodic auto-wakeup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 920
29.3.7 RTC initialization and configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . 921
29.3.8 Reading the calendar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 922
29.3.9 Resetting the RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 923
29.3.10 RTC synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 924
29.3.11 RTC reference clock detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 924
29.3.12 RTC smooth digital calibration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 925
29.3.13 Time-stamp function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 927
29.3.14 Tamper detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 928
29.3.15 Calibration clock output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 930
29.3.16 Alarm output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 930
29.4 RTC low-power modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 931
29.5 RTC interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 931
29.6 RTC registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 932
29.6.1 RTC time register (RTC_TR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 932
29.6.2 RTC date register (RTC_DR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 933
29.6.3 RTC control register (RTC_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 934
29.6.4 RTC initialization and status register (RTC_ISR) . . . . . . . . . . . . . . . . . 937
29.6.5 RTC prescaler register (RTC_PRER) . . . . . . . . . . . . . . . . . . . . . . . . . 940
29.6.6 RTC wakeup timer register (RTC_WUTR) . . . . . . . . . . . . . . . . . . . . . . 941
29.6.7 RTC alarm A register (RTC_ALRMAR) . . . . . . . . . . . . . . . . . . . . . . . . 942
29.6.8 RTC alarm B register (RTC_ALRMBR) . . . . . . . . . . . . . . . . . . . . . . . . 943
29.6.9 RTC write protection register (RTC_WPR) . . . . . . . . . . . . . . . . . . . . . 944
29.6.10 RTC sub second register (RTC_SSR) . . . . . . . . . . . . . . . . . . . . . . . . . 944
29.6.11 RTC shift control register (RTC_SHIFTR) . . . . . . . . . . . . . . . . . . . . . . 945
29.6.12 RTC timestamp time register (RTC_TSTR) . . . . . . . . . . . . . . . . . . . . . 946
29.6.13 RTC timestamp date register (RTC_TSDR) . . . . . . . . . . . . . . . . . . . . 947
29.6.14 RTC time-stamp sub second register (RTC_TSSSR) . . . . . . . . . . . . . 948
29.6.15 RTC calibration register (RTC_CALR) . . . . . . . . . . . . . . . . . . . . . . . . . 949
29.6.16 RTC tamper configuration register (RTC_TAMPCR) . . . . . . . . . . . . . . 950
29.6.17 RTC alarm A sub second register (RTC_ALRMASSR) . . . . . . . . . . . . 953
29.6.18 RTC alarm B sub second register (RTC_ALRMBSSR) . . . . . . . . . . . . 954
29.6.19 RTC option register (RTC_OR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 955
29.6.20 RTC backup registers (RTC_BKPxR) . . . . . . . . . . . . . . . . . . . . . . . . . 955
Contents RM0385
28/1724 RM0385 Rev 8
29.6.21 RTC register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 956
30 Inter-integrated circuit (I2C) interface . . . . . . . . . . . . . . . . . . . . . . . . . 958
30.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 958
30.2 I2C main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 958
30.3 I2C implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 959
30.4 I2C functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 959
30.4.1 I2C block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 960
30.4.2 I2C clock requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 960
30.4.3 Mode selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 961
30.4.4 I2C initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 962
30.4.5 Software reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 966
30.4.6 Data transfer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 967
30.4.7 I2C slave mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 969
30.4.8 I2C master mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 978
30.4.9 I2C_TIMINGR register configuration examples . . . . . . . . . . . . . . . . . . 990
30.4.10 SMBus specific features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 991
30.4.11 SMBus initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 994
30.4.12 SMBus: I2C_TIMEOUTR register configuration examples . . . . . . . . . 996
30.4.13 SMBus slave mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 996
30.4.14 Error conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1003
30.4.15 DMA requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1005
30.4.16 Debug mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1006
30.5 I2C low-power modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1006
30.6 I2C interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1007
30.7 I2C registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1007
30.7.1 I2C2 control register 1 (I2C_CR1) . . . . . . . . . . . . . . . . . . . . . . . . . . . 1007
30.7.2 I2C2 control register 2 (I2C_CR2) . . . . . . . . . . . . . . . . . . . . . . . . . . . 1010
30.7.3 I2C2 own address 1 register (I2C_OAR1) . . . . . . . . . . . . . . . . . . . . . 1013
30.7.4 I2C2 own address 2 register (I2C_OAR2) . . . . . . . . . . . . . . . . . . . . . 1014
30.7.5 I2C2 timing register (I2C_TIMINGR) . . . . . . . . . . . . . . . . . . . . . . . . . 1015
30.7.6 I2C2 timeout register (I2C_TIMEOUTR) . . . . . . . . . . . . . . . . . . . . . . 1016
30.7.7 I2C2 interrupt and status register (I2C_ISR) . . . . . . . . . . . . . . . . . . . 1017
30.7.8 I2C2 interrupt clear register (I2C_ICR)( . . . . . . . . . . . . . . . . . . . . . . . 1019
30.7.9 I2C2 PEC register (I2C_PECR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1020
30.7.10 I2C2 receive data register (I2C_RXDR) . . . . . . . . . . . . . . . . . . . . . . 1021
RM0385 Rev 8 29/1724
RM0385 Contents
43
30.7.11 I2C2 transmit data register (I2C_TXDR) . . . . . . . . . . . . . . . . . . . . . . 1021
30.7.12 I2C register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1022
31 Universal synchronous receiver transmitter (USART)
/universal asynchronous receiver transmitter (UART) . . . . . . . . . . 1024
31.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1024
31.2 USART main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1024
31.3 USART extended features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1025
31.4 USART implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1026
31.5 USART functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1026
31.5.1 USART character description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1029
31.5.2 USART transmitter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1031
31.5.3 USART receiver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1033
31.5.4 USART baud rate generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1039
31.5.5 Tolerance of the USART receiver to clock deviation . . . . . . . . . . . . . 1042
31.5.6 USART auto baud rate detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1043
31.5.7 Multiprocessor communication using USART . . . . . . . . . . . . . . . . . . 1044
31.5.8 Modbus communication using USART . . . . . . . . . . . . . . . . . . . . . . . 1046
31.5.9 USART parity control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1047
31.5.10 USART LIN (local interconnection network) mode . . . . . . . . . . . . . . 1048
31.5.11 USART synchronous mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1050
31.5.12 USART Single-wire Half-duplex communication . . . . . . . . . . . . . . . . 1053
31.5.13 USART Smartcard mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1053
31.5.14 USART IrDA SIR ENDEC block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1058
31.5.15 USART continuous communication in DMA mode . . . . . . . . . . . . . . 1060
31.5.16 RS232 hardware flow control and RS485 driver enable
using USART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1062
31.6 USART low-power modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1064
31.7 USART interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1065
31.8 USART registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1067
31.8.1 Control register 1 (USART_CR1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1067
31.8.2 Control register 2 (USART_CR2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1070
31.8.3 Control register 3 (USART_CR3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1073
31.8.4 Baud rate register (USART_BRR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 1076
31.8.5 Guard time and prescaler register (USART_GTPR) . . . . . . . . . . . . . 1077
31.8.6 Receiver timeout register (USART_RTOR) . . . . . . . . . . . . . . . . . . . . 1078
31.8.7 Request register (USART_RQR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1079
Contents RM0385
30/1724 RM0385 Rev 8
31.8.8 Interrupt and status register (USART_ISR) . . . . . . . . . . . . . . . . . . . . 1080
31.8.9 Interrupt flag clear register (USART_ICR) . . . . . . . . . . . . . . . . . . . . . 1084
31.8.10 Receive data register (USART_RDR) . . . . . . . . . . . . . . . . . . . . . . . . 1085
31.8.11 Transmit data register (USART_TDR) . . . . . . . . . . . . . . . . . . . . . . . . 1086
31.8.12 USART register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1086
32 Serial peripheral interface / inter-IC sound (SPI/I2S) . . . . . . . . . . . . 1088
32.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1088
32.2 SPI main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1088
32.3 I2S main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1089
32.4 SPI/I2S implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1089
32.5 SPI functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1090
32.5.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1090
32.5.2 Communications between one master and one slave . . . . . . . . . . . . 1091
32.5.3 Standard multi-slave communication . . . . . . . . . . . . . . . . . . . . . . . . . 1093
32.5.4 Multi-master communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1094
32.5.5 Slave select (NSS) pin management . . . . . . . . . . . . . . . . . . . . . . . . . 1095
32.5.6 Communication formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1096
32.5.7 Configuration of SPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1098
32.5.8 Procedure for enabling SPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1099
32.5.9 Data transmission and reception procedures . . . . . . . . . . . . . . . . . . 1099
32.5.10 SPI status flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1109
32.5.11 SPI error flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1110
32.5.12 NSS pulse mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1111
32.5.13 TI mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1111
32.5.14 CRC calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1112
32.6 SPI interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1114
32.7 I2S functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1115
32.7.1 I2S general description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1115
32.7.2 I2S full duplex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1116
32.7.3 Supported audio protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1117
32.7.4 Start-up description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1124
32.7.5 Clock generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1126
32.7.6 I2S master mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1129
32.7.7 I2S slave mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1130
32.7.8 I2S status flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1132
RM0385 Rev 8 31/1724
RM0385 Contents
43
32.7.9 I2S error flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1133
32.7.10 DMA features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1134
32.8 I2S interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1134
32.9 SPI and I2S registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1135
32.9.1 SPI control register 1 (SPIx_CR1) . . . . . . . . . . . . . . . . . . . . . . . . . . . 1135
32.9.2 SPI control register 2 (SPIx_CR2) . . . . . . . . . . . . . . . . . . . . . . . . . . . 1137
32.9.3 SPI status register (SPIx_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1139
32.9.4 SPI data register (SPIx_DR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1141
32.9.5 SPI CRC polynomial register (SPIx_CRCPR) . . . . . . . . . . . . . . . . . . 1141
32.9.6 SPI Rx CRC register (SPIx_RXCRCR) . . . . . . . . . . . . . . . . . . . . . . . 1141
32.9.7 SPI Tx CRC register (SPIx_TXCRCR) . . . . . . . . . . . . . . . . . . . . . . . 1142
32.9.8 SPIx_I2S configuration register (SPIx_I2SCFGR) . . . . . . . . . . . . . . . 1142
32.9.9 SPIx_I2S prescaler register (SPIx_I2SPR) . . . . . . . . . . . . . . . . . . . . 1144
32.9.10 SPI/I2S register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1146
33 Serial audio interface (SAI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1147
33.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1147
33.2 SAI main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1148
33.3 SAI functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1149
33.3.1 SAI block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1149
33.3.2 SAI pins and internal signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1150
33.3.3 Main SAI modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1150
33.3.4 SAI synchronization mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1151
33.3.5 Audio data size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1152
33.3.6 Frame synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1153
33.3.7 Slot configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1156
33.3.8 SAI clock generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1158
33.3.9 Internal FIFOs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1160
33.3.10 AC’97 link controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1162
33.3.11 SPDIF output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1164
33.3.12 Specific features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1167
33.3.13 Error flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1171
33.3.14 Disabling the SAI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1174
33.3.15 SAI DMA interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1174
33.4 SAI interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1175
33.5 SAI registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1176
Contents RM0385
32/1724 RM0385 Rev 8
33.5.1 Global configuration register (SAI_GCR) . . . . . . . . . . . . . . . . . . . . . . 1176
33.5.2 Configuration register 1 (SAI_ACR1) . . . . . . . . . . . . . . . . . . . . . . . . . 1176
33.5.3 Configuration register 1 (SAI_BCR1) . . . . . . . . . . . . . . . . . . . . . . . . . 1179
33.5.4 Configuration register 2 (SAI_ACR2) . . . . . . . . . . . . . . . . . . . . . . . . . 1181
33.5.5 Configuration register 2 (SAI_BCR2) . . . . . . . . . . . . . . . . . . . . . . . . . 1183
33.5.6 Frame configuration register (SAI_AFRCR) . . . . . . . . . . . . . . . . . . . 1185
33.5.7 Frame configuration register (SAI_BFRCR) . . . . . . . . . . . . . . . . . . . 1186
33.5.8 Slot register (SAI_ASLOTR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1188
33.5.9 Slot register (SAI_BSLOTR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1189
33.5.10 Interrupt mask register (SAI_AIM) . . . . . . . . . . . . . . . . . . . . . . . . . . . 1190
33.5.11 Interrupt mask register (SAI_BIM) . . . . . . . . . . . . . . . . . . . . . . . . . . . 1191
33.5.12 Status register (SAI_ASR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1192
33.5.13 Status register (SAI_BSR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1194
33.5.14 Clear flag register (SAI_ACLRFR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 1196
33.5.15 Clear flag register (SAI_BCLRFR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 1197
33.5.16 Data register (SAI_ADR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1198
33.5.17 Data register (SAI_BDR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1199
33.5.18 SAI register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1200
34 SPDIF receiver interface (SPDIFRX) . . . . . . . . . . . . . . . . . . . . . . . . . 1201
34.1 SPDIFRX interface introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1201
34.2 SPDIFRX main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1201
34.3 SPDIFRX functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1201
34.3.1 S/PDIF protocol (IEC-60958) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1202
34.3.2 SPDIFRX decoder (SPDIFRX_DC) . . . . . . . . . . . . . . . . . . . . . . . . . . 1205
34.3.3 SPDIFRX tolerance to clock deviation . . . . . . . . . . . . . . . . . . . . . . . . 1209
34.3.4 SPDIFRX synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1209
34.3.5 SPDIFRX handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1211
34.3.6 Data reception management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1213
34.3.7 Dedicated control flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1215
34.3.8 Reception errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1216
34.3.9 Clocking strategy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1218
34.3.10 DMA Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1218
34.3.11 Interrupt Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1219
34.3.12 Register protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1220
34.4 Programming procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1221
34.4.1 Initialization phase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1221
RM0385 Rev 8 33/1724
RM0385 Contents
43
34.4.2 Handling of interrupts coming from SPDIFRX . . . . . . . . . . . . . . . . . . 1222
34.4.3 Handling of interrupts coming from DMA . . . . . . . . . . . . . . . . . . . . . . 1223
34.5 SPDIFRX interface registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1223
34.5.1 Control register (SPDIFRX_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1223
34.5.2 Interrupt mask register (SPDIFRX_IMR) . . . . . . . . . . . . . . . . . . . . . . 1226
34.5.3 Status register (SPDIFRX_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1227
34.5.4 Interrupt flag clear register (SPDIFRX_IFCR) . . . . . . . . . . . . . . . . . . 1229
34.5.5 Data input register (SPDIFRX_FMT0_DR) . . . . . . . . . . . . . . . . . . . . 1230
34.5.6 Data input register (SPDIFRX_FMT1_DR) . . . . . . . . . . . . . . . . . . . . 1231
34.5.7 Data input register (SPDIFRX_FMT2_DR) . . . . . . . . . . . . . . . . . . . . 1232
34.5.8 Channel status register (SPDIFRX_CSR) . . . . . . . . . . . . . . . . . . . . . 1233
34.5.9 Debug information register (SPDIFRX_DIR) . . . . . . . . . . . . . . . . . . . 1233
34.5.10 SPDIFRX interface register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1235
35 SD/SDIO/MMC card host interface (SDMMC) . . . . . . . . . . . . . . . . . . 1236
35.1 SDMMC main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1236
35.2 SDMMC bus topology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1236
35.3 SDMMC functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1238
35.3.1 SDMMC adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1240
35.3.2 SDMMC APB2 interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1251
35.4 Card functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1252
35.4.1 Card identification mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1252
35.4.2 Card reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1253
35.4.3 Operating voltage range validation . . . . . . . . . . . . . . . . . . . . . . . . . . 1253
35.4.4 Card identification process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1253
35.4.5 Block write . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1254
35.4.6 Block read . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1255
35.4.7 Stream access, stream write and stream read
(MultiMediaCard only) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1255
35.4.8 Erase: group erase and sector erase . . . . . . . . . . . . . . . . . . . . . . . . 1257
35.4.9 Wide bus selection or deselection . . . . . . . . . . . . . . . . . . . . . . . . . . . 1257
35.4.10 Protection management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1257
35.4.11 Card status register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1261
35.4.12 SD status register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1264
35.4.13 SD I/O mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1268
35.4.14 Commands and responses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1269
35.5 Response formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1272
Contents RM0385
34/1724 RM0385 Rev 8
35.5.1 R1 (normal response command) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1273
35.5.2 R1b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1273
35.5.3 R2 (CID, CSD register) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1273
35.5.4 R3 (OCR register) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1274
35.5.5 R4 (Fast I/O) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1274
35.5.6 R4b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1274
35.5.7 R5 (interrupt request) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1275
35.5.8 R6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1275
35.6 SDIO I/O card-specific operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1276
35.6.1 SDIO I/O read wait operation by SDMMC_D2 signalling . . . . . . . . . . 1276
35.6.2 SDIO read wait operation by stopping SDMMC_CK . . . . . . . . . . . . . 1277
35.6.3 SDIO suspend/resume operation . . . . . . . . . . . . . . . . . . . . . . . . . . . 1277
35.6.4 SDIO interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1277
35.7 HW flow control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1277
35.8 SDMMC registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1278
35.8.1 SDMMC power control register (SDMMC_POWER) . . . . . . . . . . . . . 1278
35.8.2 SDMMC clock control register (SDMMC_CLKCR) . . . . . . . . . . . . . . 1278
35.8.3 SDMMC argument register (SDMMC_ARG) . . . . . . . . . . . . . . . . . . . 1280
35.8.4 SDMMC command register (SDMMC_CMD) . . . . . . . . . . . . . . . . . . 1280
35.8.5 SDMMC command response register (SDMMC_RESPCMD) . . . . . . 1281
35.8.6 SDMMC response 1..4 register (SDMMC_RESPx) . . . . . . . . . . . . . . 1281
35.8.7 SDMMC data timer register (SDMMC_DTIMER) . . . . . . . . . . . . . . . . 1282
35.8.8 SDMMC data length register (SDMMC_DLEN) . . . . . . . . . . . . . . . . . 1283
35.8.9 SDMMC data control register (SDMMC_DCTRL) . . . . . . . . . . . . . . . 1283
35.8.10 SDMMC data counter register (SDMMC_DCOUNT) . . . . . . . . . . . . . 1286
35.8.11 SDMMC status register (SDMMC_STA) . . . . . . . . . . . . . . . . . . . . . . 1286
35.8.12 SDMMC interrupt clear register (SDMMC_ICR) . . . . . . . . . . . . . . . . 1287
35.8.13 SDMMC mask register (SDMMC_MASK) . . . . . . . . . . . . . . . . . . . . . 1289
35.8.14 SDMMC FIFO counter register (SDMMC_FIFOCNT) . . . . . . . . . . . . 1291
35.8.15 SDMMC data FIFO register (SDMMC_FIFO) . . . . . . . . . . . . . . . . . . 1292
35.8.16 SDMMC register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1293
36 Controller area network (bxCAN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1295
36.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1295
36.2 bxCAN main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1295
36.3 bxCAN general description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1296
RM0385 Rev 8 35/1724
RM0385 Contents
43
36.3.1 CAN 2.0B active core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1296
36.3.2 Control, status and configuration registers . . . . . . . . . . . . . . . . . . . . 1296
36.3.3 Tx mailboxes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1296
36.3.4 Acceptance filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1297
36.4 bxCAN operating modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1298
36.4.1 Initialization mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1298
36.4.2 Normal mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1298
36.4.3 Sleep mode (low-power) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1299
36.5 Test mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1300
36.5.1 Silent mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1300
36.5.2 Loop back mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1300
36.5.3 Loop back combined with silent mode . . . . . . . . . . . . . . . . . . . . . . . . 1301
36.6 Behavior in debug mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1301
36.7 bxCAN functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1301
36.7.1 Transmission handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1301
36.7.2 Time triggered communication mode . . . . . . . . . . . . . . . . . . . . . . . . . 1303
36.7.3 Reception handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1303
36.7.4 Identifier filtering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1305
36.7.5 Message storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1309
36.7.6 Error management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1311
36.7.7 Bit timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1311
36.8 bxCAN interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1314
36.9 CAN registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1315
36.9.1 Register access protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1315
36.9.2 CAN control and status registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1315
36.9.3 CAN mailbox registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1325
36.9.4 CAN filter registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1332
36.9.5 bxCAN register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1336
37 USB on-the-go full-speed/high-speed (OTG_FS/OTG_HS) . . . . . . . 1340
37.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1340
37.2 OTG main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1341
37.2.1 General features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342
37.2.2 Host-mode features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343
37.2.3 Peripheral-mode features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343
37.3 OTG implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1344
Contents RM0385
36/1724 RM0385 Rev 8
37.4 OTG functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1345
37.4.1 OTG block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1345
37.4.2 USB OTG pin and internal signals . . . . . . . . . . . . . . . . . . . . . . . . . . . 1346
37.4.3 OTG core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1347
37.4.4 Full-speed OTG PHY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1347
37.4.5 Embedded full speed OTG PHY . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1348
37.4.6 High-speed OTG PHY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1349
37.5 OTG dual role device (DRD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1349
37.5.1 ID line detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1349
37.5.2 HNP dual role device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1350
37.5.3 SRP dual role device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1350
37.6 USB peripheral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1350
37.6.1 SRP-capable peripheral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1351
37.6.2 Peripheral states . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1351
37.6.3 Peripheral endpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1352
37.7 USB host . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1354
37.7.1 SRP-capable host . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1355
37.7.2 USB host states . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1355
37.7.3 Host channels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1357
37.7.4 Host scheduler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1358
37.8 SOF trigger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1359
37.8.1 Host SOFs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1359
37.8.2 Peripheral SOFs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1359
37.9 OTG low-power modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1360
37.10 Dynamic update of the OTG_HFIR register . . . . . . . . . . . . . . . . . . . . . 1361
37.11 USB data FIFOs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1361
37.11.1 Peripheral FIFO architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1362
37.11.2 Host FIFO architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1363
37.11.3 FIFO RAM allocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1364
37.12 OTG_FS system performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1366
37.13 OTG_FS/OTG_HS interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1366
37.14 OTG_FS/OTG_HS control and status registers . . . . . . . . . . . . . . . . . . 1368
37.14.1 CSR memory map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1368
37.15 OTG_FS/OTG_HS registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1374
37.15.1 OTG control and status register (OTG_GOTGCTL) . . . . . . . . . . . . . 1374
37.15.2 OTG interrupt register (OTG_GOTGINT) . . . . . . . . . . . . . . . . . . . . . 1377
RM0385 Rev 8 37/1724
RM0385 Contents
43
37.15.3 OTG AHB configuration register (OTG_GAHBCFG) . . . . . . . . . . . . . 1379
37.15.4 OTG USB configuration register (OTG_GUSBCFG) . . . . . . . . . . . . . 1381
37.15.5 OTG reset register (OTG_GRSTCTL) . . . . . . . . . . . . . . . . . . . . . . . . 1384
37.15.6 OTG core interrupt register (OTG_GINTSTS) . . . . . . . . . . . . . . . . . . 1387
37.15.7 OTG interrupt mask register (OTG_GINTMSK) . . . . . . . . . . . . . . . . . 1392
37.15.8 OTG receive status debug read/OTG status read and
pop registers (OTG_GRXSTSR/OTG_GRXSTSP) . . . . . . . . . . . . . . 1395
37.15.9 OTG receive FIFO size register (OTG_GRXFSIZ) . . . . . . . . . . . . . . 1398
37.15.10 OTG host non-periodic transmit FIFO size register
(OTG_HNPTXFSIZ)/Endpoint 0 Transmit FIFO size
(OTG_DIEPTXF0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1398
37.15.11 OTG non-periodic transmit FIFO/queue status register
(OTG_HNPTXSTS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1399
37.15.12 OTG general core configuration register (OTG_GCCFG) . . . . . . . . . 1400
37.15.13 OTG core ID register (OTG_CID) . . . . . . . . . . . . . . . . . . . . . . . . . . . 1401
37.15.14 OTG core LPM configuration register (OTG_GLPMCFG) . . . . . . . . . 1401
37.15.15 OTG host periodic transmit FIFO size register
(OTG_HPTXFSIZ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1406
37.15.16 OTG device IN endpoint transmit FIFO size register
(OTG_DIEPTXFx) (x = 1..5[FS] /8[HS], where x is the
FIFO number) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1406
37.15.17 Host-mode registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1407
37.15.18 OTG host configuration register (OTG_HCFG) . . . . . . . . . . . . . . . . . 1407
37.15.19 OTG host frame interval register (OTG_HFIR) . . . . . . . . . . . . . . . . . 1408
37.15.20 OTG host frame number/frame time remaining register
(OTG_HFNUM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1409
37.15.21 OTG_Host periodic transmit FIFO/queue status register
(OTG_HPTXSTS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1409
37.15.22 OTG host all channels interrupt register (OTG_HAINT) . . . . . . . . . . 1410
37.15.23 OTG host all channels interrupt mask register
(OTG_HAINTMSK) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1411
37.15.24 OTG host port control and status register (OTG_HPRT) . . . . . . . . . . 1412
37.15.25 OTG host channel x characteristics register (OTG_HCCHARx)
(x = 0..15[HS] / 11[FS], where x = Channel number) . . . . . . . . . . . . . 1414
37.15.26 OTG host channel x split control register (OTG_HCSPLTx)
(x = 0..15, where x = Channel number) . . . . . . . . . . . . . . . . . . . . . . . 1415
37.15.27 OTG host channel x interrupt register (OTG_HCINTx)
(x = 0..15[HS] / 11[FS], where x = Channel number) . . . . . . . . . . . . . 1416
37.15.28 OTG host channel x interrupt mask register (OTG_HCINTMSKx)
(x = 0..15[HS] / 11[FS], where x = Channel number) . . . . . . . . . . . . . 1418
Contents RM0385
38/1724 RM0385 Rev 8
37.15.29 OTG host channel x transfer size register (OTG_HCTSIZx)
(x = 0..15[HS] / 11[FS], where x = Channel number) . . . . . . . . . . . . . 1419
37.15.30 OTG host channel x DMA address register (OTG_HCDMAx)
(x = 0..15, where x = Channel number) . . . . . . . . . . . . . . . . . . . . . . . 1420
37.15.31 Device-mode registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1420
37.15.32 OTG device configuration register (OTG_DCFG) . . . . . . . . . . . . . . . 1421
37.15.33 OTG device control register (OTG_DCTL) . . . . . . . . . . . . . . . . . . . . 1423
37.15.34 OTG device status register (OTG_DSTS) . . . . . . . . . . . . . . . . . . . . . 1425
37.15.35 OTG device IN endpoint common interrupt mask register
(OTG_DIEPMSK) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1426
37.15.36 OTG device OUT endpoint common interrupt mask register
(OTG_DOEPMSK) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1427
37.15.37 OTG device all endpoints interrupt register (OTG_DAINT) . . . . . . . . 1429
37.15.38 OTG all endpoints interrupt mask register
(OTG_DAINTMSK) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1429
37.15.39 OTG device VBUS discharge time register
(OTG_DVBUSDIS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1430
37.15.40 OTG device VBUS pulsing time register
(OTG_DVBUSPULSE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1430
37.15.41 OTG device threshold control register (OTG_DTHRCTL) . . . . . . . . . 1431
37.15.42 OTG device IN endpoint FIFO empty interrupt mask register
(OTG_DIEPEMPMSK) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1432
37.15.43 OTG device each endpoint interrupt register (OTG_DEACHINT) . . . 1433
37.15.44 OTG device each endpoint interrupt mask register
(OTG_DEACHINTMSK) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1433
37.15.45 OTG device each IN endpoint-1 interrupt mask register
(OTG_HS_DIEPEACHMSK1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1434
37.15.46 OTG device each OUT endpoint-1 interrupt mask register
(OTG_HS_DOEPEACHMSK1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1435
37.15.47 OTG device control IN endpoint 0 control register
(OTG_DIEPCTL0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1436
37.15.48 OTG device IN endpoint x control register (OTG_DIEPCTLx)
(x = 1..5[FS] / 0..8[HS], where x = endpoint number) . . . . . . . . . . . . 1438
37.15.49 OTG device IN endpoint x interrupt register (OTG_DIEPINTx)
(x = 0..5[FS] /8[HS], where x = Endpoint number) . . . . . . . . . . . . . . . 1440
37.15.50 OTG device IN endpoint 0 transfer size register
(OTG_DIEPTSIZ0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1442
37.15.51 OTG device IN endpoint x DMA address register (OTG_DIEPDMAx)
(x = 0..8, where x = endpoint number) . . . . . . . . . . . . . . . . . . . . . . . . 1443
37.15.52 OTG device IN endpoint transmit FIFO status register
(OTG_DTXFSTSx) (x = 0..5[FS] /8[HS], where
x = endpoint number) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1443
RM0385 Rev 8 39/1724
RM0385 Contents
43
37.15.53 OTG device IN endpoint x transfer size register (OTG_DIEPTSIZx)
(x = 1..5[FS] /8[HS], where x = endpoint number) . . . . . . . . . . . . . . . 1444
37.15.54 OTG device control OUT endpoint 0 control register
(OTG_DOEPCTL0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1445
37.15.55 OTG device OUT endpoint x interrupt register (OTG_DOEPINTx)
(x = 0..5[FS] /8[HS], where x = Endpoint number) . . . . . . . . . . . . . . . 1446
37.15.56 OTG device OUT endpoint 0 transfer size register
(OTG_DOEPTSIZ0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1448
37.15.57 OTG device OUT endpoint x DMA address register (OTG_DOEPDMAx)
(x = 0..8, where x = endpoint number) . . . . . . . . . . . . . . . . . . . . . . . . 1449
37.15.58 OTG device OUT endpoint x control register (OTG_DOEPCTLx)
(x = 1..5[FS] /8[HS], where x = endpoint number) . . . . . . . . . . . . . . . 1450
37.15.59 OTG device OUT endpoint x transfer size register
(OTG_DOEPTSIZx) (x = 1..5[FS] /8[HS],
where x = Endpoint number) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1452
37.15.60 OTG power and clock gating control register (OTG_PCGCCTL) . . . 1453
37.15.61 OTG_FS/OTG_HS register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1454
37.16 OTG_FS/OTG_HS programming model . . . . . . . . . . . . . . . . . . . . . . . 1466
37.16.1 Core initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1466
37.16.2 Host initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1466
37.16.3 Device initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1467
37.16.4 DMA mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1468
37.16.5 Host programming model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1468
37.16.6 Device programming model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1501
37.16.7 Worst case response time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1519
37.16.8 OTG programming model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1521
38 Ethernet (ETH): media access control (MAC) with
DMA controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1528
38.1 Ethernet introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1528
38.2 Ethernet main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1528
38.2.1 MAC core features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1529
38.2.2 DMA features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1530
38.2.3 PTP features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1530
38.3 Ethernet pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1531
38.4 Ethernet functional description: SMI, MII and RMII . . . . . . . . . . . . . . . 1532
38.4.1 Station management interface: SMI . . . . . . . . . . . . . . . . . . . . . . . . . . 1532
38.4.2 Media-independent interface: MII . . . . . . . . . . . . . . . . . . . . . . . . . . . 1536
38.4.3 Reduced media-independent interface: RMII . . . . . . . . . . . . . . . . . . 1538
Contents RM0385
40/1724 RM0385 Rev 8
38.4.4 MII/RMII selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1539
38.5 Ethernet functional description: MAC 802.3 . . . . . . . . . . . . . . . . . . . . . 1540
38.5.1 MAC 802.3 frame format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1540
38.5.2 MAC frame transmission . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1544
38.5.3 MAC frame reception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1551
38.5.4 MAC interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1557
38.5.5 MAC filtering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1557
38.5.6 MAC loopback mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1560
38.5.7 MAC management counters: MMC . . . . . . . . . . . . . . . . . . . . . . . . . . 1560
38.5.8 Power management: PMT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1561
38.5.9 Precision time protocol (IEEE1588 PTP) . . . . . . . . . . . . . . . . . . . . . . 1564
38.6 Ethernet functional description: DMA controller operation . . . . . . . . . . 1570
38.6.1 Initialization of a transfer using DMA . . . . . . . . . . . . . . . . . . . . . . . . . 1571
38.6.2 Host bus burst access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1571
38.6.3 Host data buffer alignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1572
38.6.4 Buffer size calculations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1572
38.6.5 DMA arbiter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1573
38.6.6 Error response to DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1573
38.6.7 Tx DMA configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1573
38.6.8 Rx DMA configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1585
38.6.9 DMA interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1596
38.7 Ethernet interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1597
38.8 Ethernet register descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1598
38.8.1 MAC register description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1598
38.8.2 MMC register description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1618
38.8.3 IEEE 1588 time stamp registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1623
38.8.4 DMA register description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1631
38.8.5 Ethernet register maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1646
39 HDMI-CEC controller (HDMI-CEC) . . . . . . . . . . . . . . . . . . . . . . . . . . . 1650
39.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1650
39.2 HDMI-CEC controller main features . . . . . . . . . . . . . . . . . . . . . . . . . . . 1650
39.3 HDMI-CEC functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1651
39.3.1 HDMI-CEC pin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1651
39.3.2 HDMI-CEC block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1651
39.3.3 Message description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1651
RM0385 Rev 8 41/1724
RM0385 Contents
43
39.3.4 Bit timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1652
39.4 Arbitration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1653
39.4.1 SFT option bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1654
39.5 Error handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1655
39.5.1 Bit error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1655
39.5.2 Message error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1655
39.5.3 Bit Rising Error (BRE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1655
39.5.4 Short Bit Period Error (SBPE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1656
39.5.5 Long Bit Period Error (LBPE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1656
39.5.6 Transmission Error Detection (TXERR) . . . . . . . . . . . . . . . . . . . . . . . 1658
39.6 HDMI-CEC interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1659
39.7 HDMI-CEC registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1660
39.7.1 CEC control register (CEC_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1660
39.7.2 CEC configuration register (CEC_CFGR) . . . . . . . . . . . . . . . . . . . . . 1661
39.7.3 CEC Tx data register (CEC_TXDR) . . . . . . . . . . . . . . . . . . . . . . . . . 1664
39.7.4 CEC Rx data register (CEC_RXDR) . . . . . . . . . . . . . . . . . . . . . . . . . 1664
39.7.5 CEC Interrupt and Status Register (CEC_ISR) . . . . . . . . . . . . . . . . . 1664
39.7.6 CEC interrupt enable register (CEC_IER) . . . . . . . . . . . . . . . . . . . . . 1666
39.7.7 HDMI-CEC register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1668
40 Debug support (DBG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1669
40.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1669
40.2 Reference Arm® documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1670
40.3 SWJ debug port (serial wire and JTAG) . . . . . . . . . . . . . . . . . . . . . . . . 1670
40.3.1 Mechanism to select the JTAG-DP or the SW-DP . . . . . . . . . . . . . . . 1671
40.4 Pinout and debug port pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1671
40.4.1 SWJ debug port pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1672
40.4.2 Flexible SWJ-DP pin assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . 1672
40.4.3 Internal pull-up and pull-down on JTAG pins . . . . . . . . . . . . . . . . . . . 1673
40.4.4 Using serial wire and releasing the unused debug pins as GPIOs . . 1674
40.5 STM32F75xxx and STM32F74xxx JTAG Debug Port connection . . . . 1674
40.6 ID codes and locking mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1676
40.6.1 MCU device ID code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1676
40.6.2 Boundary scan Debug Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1676
40.6.3 Cortex®-M7 with FPU Debug Port . . . . . . . . . . . . . . . . . . . . . . . . . . . 1676
40.6.4 Cortex®-M7 with FPU JEDEC-106 ID code . . . . . . . . . . . . . . . . . . . . 1677
Contents RM0385
42/1724 RM0385 Rev 8
40.7 JTAG debug port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1677
40.8 SW debug port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1679
40.8.1 SW protocol introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1679
40.8.2 SW protocol sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1679
40.8.3 SW-DP state machine (reset, idle states, ID code) . . . . . . . . . . . . . . 1680
40.8.4 DP and AP read/write accesses . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1681
40.8.5 SW-DP registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1681
40.8.6 SW-AP registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1682
40.9 AHB-AP (AHB access port) - valid for both JTAG-DP
and SW-DP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1683
40.10 Core debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1684
40.11 Capability of the debugger host to connect under system reset . . . . . 1685
40.12 FPB (Flash patch breakpoint) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1685
40.13 DWT (data watchpoint trigger) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1686
40.14 ITM (instrumentation trace macrocell) . . . . . . . . . . . . . . . . . . . . . . . . . 1686
40.14.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1686
40.14.2 Time stamp packets, synchronization and overflow packets . . . . . . . 1686
40.15 ETM (Embedded trace macrocell) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1688
40.15.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1688
40.15.2 Signal protocol, packet types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1688
40.15.3 Main ETM registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1689
40.15.4 Configuration example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1689
40.16 MCU debug component (DBGMCU) . . . . . . . . . . . . . . . . . . . . . . . . . . 1689
40.16.1 Debug support for low-power modes . . . . . . . . . . . . . . . . . . . . . . . . . 1689
40.16.2 Debug support for timers, watchdog, bxCAN and I2C . . . . . . . . . . . . 1690
40.16.3 Debug MCU configuration register . . . . . . . . . . . . . . . . . . . . . . . . . . 1690
40.16.4 DBGMCU_CR register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1691
40.16.5 Debug MCU APB1 freeze register (DBGMCU_APB1_FZ) . . . . . . . . 1692
40.16.6 Debug MCU APB2 Freeze register (DBGMCU_APB2_FZ) . . . . . . . . 1694
40.17 Pelican TPIU (trace port interface unit) . . . . . . . . . . . . . . . . . . . . . . . . 1695
40.17.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1695
40.17.2 TRACE pin assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1696
40.17.3 TPIU formatter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1698
40.17.4 TPIU frame synchronization packets . . . . . . . . . . . . . . . . . . . . . . . . . 1698
40.17.5 Transmission of the synchronization frame packet . . . . . . . . . . . . . . 1698
40.17.6 Synchronous mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1699
RM0385 Rev 8 43/1724
RM0385 Contents
43
40.17.7 Asynchronous mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1699
40.17.8 TRACECLKIN connection inside the
STM32F75xxx and STM32F74xxx . . . . . . . . . . . . . . . . . . . . . . . . . . 1699
40.17.9 TPIU registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1700
40.17.10 Example of configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1700
40.18 DBG register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1701
41 Device electronic signature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1702
41.1 Unique device ID register (96 bits) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1702
41.2 Flash size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1703
41.3 Package data register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1704
42 Revision history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1705
List of tables RM0385
44/1724 RM0385 Rev 8
List of tables
Table 1. STM32F75xxx and STM32F74xxx register boundary addresses. . . . . . . . . . . . . . . . . . . . 70
Table 2. Boot modes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Table 3. STM32F756xx and STM32F74xxx Flash memory organization. . . . . . . . . . . . . . . . . . . . . 78
Table 4. STM32F750xx Flash memory organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Table 5. Number of wait states according to CPU clock (HCLK) frequency . . . . . . . . . . . . . . . . . . . 79
Table 6. Program/erase parallelism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Table 7. Flash interrupt request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Table 8. Option byte organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Table 9. Access versus read protection level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Table 10. OTP area organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Table 11. Flash register map and reset values. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Table 12. Voltage regulator configuration mode versus device operating mode . . . . . . . . . . . . . . . 105
Table 13. Low-power mode summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Table 14. Features over all modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Table 15. Sleep-now entry and exit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Table 16. Sleep-on-exit entry and exit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Table 17. Stop operating modes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Table 18. Stop mode entry and exit (STM32F75xxx and STM32F74xxx) . . . . . . . . . . . . . . . . . . . . 118
Table 19. Standby mode entry and exit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
Table 20. PWR - register map and reset values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Table 21. RCC register map and reset values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Table 22. Port bit configuration table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Table 23. GPIO register map and reset values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Table 24. SYSCFG register map and reset values. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
Table 25. DMA1 request mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
Table 26. DMA2 request mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
Table 27. Source and destination address . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Table 28. Source and destination address registers in double-buffer mode (DBM = 1) . . . . . . . . . . 232
Table 29. Packing/unpacking and endian behavior (bit PINC = MINC = 1) . . . . . . . . . . . . . . . . . . . 233
Table 30. Restriction on NDT versus PSIZE and MSIZE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Table 31. FIFO threshold configurations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Table 32. Possible DMA configurations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
Table 33. DMA interrupt requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
Table 34. DMA register map and reset values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
Table 35. Supported color mode in input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
Table 36. Data order in memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
Table 37. Alpha mode configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
Table 38. Supported CLUT color mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
Table 39. CLUT data order in system memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
Table 40. Supported color mode in output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
Table 41. Data order in memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
Table 42. DMA2D interrupt requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
Table 43. DMA2D register map and reset values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
Table 44. STM32F75xxx and STM32F74xxx vector table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
Table 45. External interrupt/event controller register map and reset values. . . . . . . . . . . . . . . . . . . 300
Table 46. CRC internal input/output signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
Table 47. CRC register map and reset values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
Table 48. NOR/PSRAM bank selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312