基本信息
源码名称:STM32F3参考手册(英文)
源码大小:12.49M
文件格式:.pdf
开发语言:C/C++
更新时间:2019-06-04
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
Contents 1 Overview of the manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 2 Documentation conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 2.1 List of abbreviations for registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 2.2 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 2.3 Peripheral availability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3 System and memory overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.1 System architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.1.1 S0: I-bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 3.1.2 S1: D-bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 3.1.3 S2: S-bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 3.1.4 S3, S4: DMA-bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 3.1.5 BusMatrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 3.2 Memory organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 3.2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 3.2.2 Memory map and register boundary addresses . . . . . . . . . . . . . . . . . . 51 3.3 Embedded SRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 3.3.1 Parity check . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 3.3.2 CCM SRAM write protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 3.4 Flash memory overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 3.5 Boot configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 3.5.1 Embedded boot loader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 4 Embedded Flash memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 4.1 Flash main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 4.2 Flash memory functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 4.2.1 Flash memory organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 4.2.2 Read operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 4.2.3 Flash program and erase operations . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 4.3 Memory protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 4.3.1 Read protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 4.3.2 Write protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 DocID022558 Rev 8 3/1141 RM0316 Contents 28 4.3.3 Option byte block write protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 4.4 Flash interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 4.5 Flash register description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 4.5.1 Flash access control register (FLASH_ACR) . . . . . . . . . . . . . . . . . . . . 78 4.5.2 Flash key register (FLASH_KEYR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 4.5.3 Flash option key register (FLASH_OPTKEYR) . . . . . . . . . . . . . . . . . . . 79 4.5.4 Flash status register (FLASH_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 4.5.5 Flash control register (FLASH_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.5.6 Flash address register (FLASH_AR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 4.5.7 Option byte register (FLASH_OBR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 4.5.8 Write protection register (FLASH_WRPR) . . . . . . . . . . . . . . . . . . . . . . . 83 4.6 Flash register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 5 Option byte description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 6 Cyclic redundancy check calculation unit (CRC) . . . . . . . . . . . . . . . . . 88 6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 6.2 CRC Contents RM0316 4/1141 DocID022558 Rev 8 7.2.1 Power on reset (POR)/power down reset (PDR) . . . . . . . . . . . . . . . . . . 97 7.2.2 Programmable voltage detector (PVD) . . . . . . . . . . . . . . . . . . . . . . . . . 99 7.2.3 External NPOR signal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 7.3 Low-power modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 7.3.1 Slowing down system clocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 7.3.2 Peripheral clock gating . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 7.3.3 Sleep mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 7.3.4 Stop mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 7.3.5 Standby mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 7.3.6 Auto-wakeup from low-power mode . . . . . . . . . . . . . . . . . . . . . . . . . . 106 7.4 Power control registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 7.4.1 Power control register (PWR_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 7.4.2 Power control/status register (PWR_CSR) . . . . . . . . . . . . . . . . . . . . . 108 7.4.3 PWR register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 8 Peripheral interconnect matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 8.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .111 8.2 Connection summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .111 8.3 Interconnection details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .115 8.3.1 DMA interconnections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 8.3.2 From ADC to ADC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 8.3.3 From ADC to TIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 8.3.4 From TIM and EXTI to ADC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 8.3.5 From OPAMP to ADC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 8.3.6 From TS to ADC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 8.3.7 From VBAT to ADC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 8.3.8 From VREFINT to ADC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 8.3.9 From COMP to TIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 8.3.10 From TIM to COMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 8.3.11 From DAC to COMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 8.3.12 From VREFINT to COMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 8.3.13 From DAC to OPAMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 8.3.14 From TIM to OPAMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 8.3.15 From TIM to TIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 8.3.16 From break input sources to TIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 8.3.17 From HSE, HSI, LSE, LSI, MCO, RTC to TIM . . . . . . . . . . . . . . . . . . . 121 8.3.18 From TIM and EXTI to DAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 DocID022558 Rev 8 5/1141 RM0316 Contents 28 8.3.19 From TIM to IRTIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 9 Reset and clock control (RCC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 9.1 Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 9.1.1 Power reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 9.1.2 System reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 9.1.3 RTC domain reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 9.2 Clocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 9.2.1 HSE clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 9.2.2 HSI clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 9.2.3 PLL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 9.2.4 LSE clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 9.2.5 LSI clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 9.2.6 System clock (SYSCLK) selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 9.2.7 Clock security system (CSS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 9.2.8 ADC clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 9.2.9 RTC clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 9.2.10 Timers (TIMx) clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 9.2.11 Watchdog clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 9.2.12 I2S clock (only in STM32F303xB/C/D/E, STM32F358xC and STM32F398xE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 9.2.13 Clock-out capability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 9.2.14 Internal/external clock measurement with TIM16 . . . . . . . . . . . . . . . . 135 9.3 Low-power modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 9.4 RCC registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 9.4.1 Clock control register (RCC_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 9.4.2 Clock configuration register (RCC_CFGR) . . . . . . . . . . . . . . . . . . . . . 138 9.4.3 Clock interrupt register (RCC_CIR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 9.4.4 APB2 peripheral reset register (RCC_APB2RSTR) . . . . . . . . . . . . . . 144 9.4.5 APB1 peripheral reset register (RCC_APB1RSTR) . . . . . . . . . . . . . . 146 9.4.6 AHB peripheral clock enable register (RCC_AHBENR) . . . . . . . . . . . 148 9.4.7 APB2 peripheral clock enable register (RCC_APB2ENR) . . . . . . . . . . 150 9.4.8 APB1 peripheral clock enable register (RCC_APB1ENR) . . . . . . . . . . 152 9.4.9 RTC domain control register (RCC_BDCR) . . . . . . . . . . . . . . . . . . . . . 155 9.4.10 Control/status register (RCC_CSR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 9.4.11 AHB peripheral reset register (RCC_AHBRSTR) . . . . . . . . . . . . . . . . 158 9.4.12 Clock configuration register 2 (RCC_CFGR2) . . . . . . . . . . . . . . . . . . . 159 Contents RM0316 6/1141 DocID022558 Rev 8 9.4.13 Clock configuration register 3 (RCC_CFGR3) . . . . . . . . . . . . . . . . . . . 162 9.4.14 RCC register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 10 Flexible static memory controller (FSMC) . . . . . . . . . . . . . . . . . . . . . 168 10.1 FMC main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 10.2 Block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 10.3 AHB interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 10.3.1 Supported memories and transactions . . . . . . . . . . . . . . . . . . . . . . . . 170 10.4 External device address mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 10.4.1 NOR/PSRAM address mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 10.4.2 NAND Flash memory/PC Card address mapping . . . . . . . . . . . . . . . . 173 10.5 NOR Flash/PSRAM controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 10.5.1 External memory interface signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 10.5.2 Supported memories and transactions . . . . . . . . . . . . . . . . . . . . . . . . 177 10.5.3 General timing rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 10.5. DocID022558 Rev 8 7/1141 RM0316 Contents 28 11.3.3 I/O port control registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 11.3.4 I/O port data registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 11.3.5 I/O data bitwise handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 11.3.6 GPIO locking mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 11.3.7 I/O alternate function input/output . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 11.3.8 External interrupt/wakeup lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 11.3.9 Input configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 11.3.10 Output configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 11.3.11 Alternate function configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 11.3.12 Analog configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 11.3.13 Using the HSE or LSE oscillator pins as GPIOs . . . . . . . . . . . . . . . . . 236 11.3.14 Using the GPIO pins in the RTC supply domain . . . . . . . . . . . . . . . . . 236 11.4 GPIO registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 11.4.1 GPIO port mode register (GPIOx_MODER) (x =A..H) . . . . . . . . . . . . . 237 11.4.2 GPIO port output type register (GPIOx_OTYPER) (x = A..H) . . . . . . . 237 11.4.3 GPIO port output speed register (GPIOx_OSPEEDR) (x = A..H) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 11.4.4 GPIO port pull-up/pull-down register (GPIOx_PUPDR) (x = A..H) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 11.4.5 GPIO port input data register (GPIOx_IDR) (x = A..H) . . . . . . . . . . . . 239 11.4.6 GPIO port output data register (GPIOx_ODR) (x = A..H) . . . . . . . . . . 239 11.4.7 GPIO port bit set/reset register (GPIOx_BSRR) (x = A..H) . . . . . . . . . 240 11.4.8 GPIO port configuration lock register (GPIOx_LCKR) . . . . . . . . . . . . . 240 11.4.9 GPIO alternate function low register (GPIOx_AFRL) (x = A..H) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 11.4.10 GPIO alternate function high register (GPIOx_AFRH) (x = A..H) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 11.4.11 GPIO port bit reset register (GPIOx_BRR) (x =A..H) . . . . . . . . . . . . . . 242 11.4.12 GPIO register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 12 System configuration controller (SYSCFG) . . . . . . . . . . . . . . . . . . . . 245 12.1 SYSCFG registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 12.1.1 SYSCFG configuration register 1 (SYSCFG_CFGR1) . . . . . . . . . . . . 245 12.1.2 SYSCFG CCM SRAM protection register (SYSCFG_RCR) . . . . . . . . 248 12.1.3 SYSCFG external interrupt configuration register 1 (SYSCFG_EXTICR1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 12.1.4 SYSCFG external interrupt configuration register 2 (SYSCFG_EXTICR2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 Contents RM0316 8/1141 DocID022558 Rev 8 12.1.5 SYSCFG external interrupt configuration register 3 (SYSCFG_EXTICR3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 12.1.6 SYSCFG external interrupt configuration register 4 (SYSCFG_EXTICR4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 12.1.7 SYSCFG configuration register 2 (SYSCFG_CFGR2) . . . . . . . . . . . . 255 12.1.8 SYSCFG configuration register 3 (SYSCFG_CFGR3) . . . . . . . . . . . . 257 12.1.9 SYSCFG configuration register 4 (SYSCFG_CFGR4) . . . . . . . . . . . . 258 12.1.10 SYSCFG register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 13 Direct memory access controller (DMA) . . . . . . . . . . . . . . . . . . . . . . . 263 13.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 13.2 DMA main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 13.3 DMA implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 13.4 DMA functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 13.4.1 DMA transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 13.4.2 Arbiter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 13.4.3 DMA channels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 13.4.4 Programmable data width, data alignment and endians . . . . . . . . . . . 267 13.4.5 Error management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 13.4.6 DMA interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 13.4.7 DMA request mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 13.5 DMA registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 13.5.1 DMA interrupt status register (DMA_ISR) . . . . . . . . . . . . . . . . . . . . . . 276 13.5.2 DMA interrupt flag clear register (DMA_IFCR) . . . . . . . . . . . . . . . . . . 277 13.5.3 DMA channel x configuration register (DMA_CCRx) (x = 1..7 , where x = channel number) . . . . . . . . . . . . . . . . . . . . . . . . 278 13.5.4 DMA channel x number of data register (DMA_CNDTRx) (x = 1..7, where x = channel number) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 13.5.5 DMA channel x peripheral address register (DMA_CPARx) (x = 1..7, where x = channel number) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 13.5.6 DMA channel x memory address register (DMA_CMARx) (x = 1..7, where x = channel number) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 13.5.7 DMA register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 14 Interrupts and events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 14.1 Nested vectored interrupt controller (NVIC) . . . . . . . . . . . . . . . . . . . . . . 285 14.1.1 NVIC main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 14.1.2 SysTick calibration value register . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 DocID022558 Rev 8 9/1141 RM0316 Contents 28 14.1.3 Interrupt and exception vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 14.2 Extended interrupts and events controller (EXTI) . . . . . . . . . . . . . . . . . 292 14.2.1 Main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 14.2.2 Block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 14.2.3 Wakeup event management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 14.2.4 Asynchronous Internal Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 14.2.5 Functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 14.2.6 External and internal interrupt/event line mapping . . . . . . . . . . . . . . . 295 14.3 EXTI registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 14.3.1 Interrupt mask register (EXTI_IMR1) . . . . . . . . . . . . . . . . . . . . . . . . . . 297 14.3.2 Event mask register (EXTI_EMR1) . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 14.3.3 Rising trigger selection register (EXTI_RTSR1) . . . . . . . . . . . . . . . . . 298 14.3.4 Falling trigger selection register (EXTI_FTSR1) . . . . . . . . . . . . . . . . . 298 14.3.5 Software interrupt event register (EXTI_SWIER1) . . . . . . . . . . . . . . . 299 14.3.6 Pending register (EXTI_PR1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 14.3.7 Interrupt mask register (EXTI_IMR2) . . . . . . . . . . . . . . . . . . . . . . . . . . 300 14.3.8 Event mask register (EXTI_EMR2) . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 14.3.9 Rising trigger selection register (EXTI_RTSR2) . . . . . . . . . . . . . . . . . 301 14.3.10 Falling trigger selection register (EXTI_FTSR2) . . . . . . . . . . . . . . . . . 301 14.3.11 Software interrupt event register (EXTI_SWIER2) . . . . . . . . . . . . . . . 301 14.3.12 Pending register (EXTI_PR2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 14.3.13 EXTI register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 15 Analog-to-digital converters (ADC) . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 15.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 15.2 ADC main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 15.3 ADC functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 15.3.1 ADC block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 15.3.2 Pins and internal signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310 15.3.3 Clocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 15.3.4 ADC1/2 and ADC3/4 connectivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313 15.3.5 Slave AHB interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316 15.3.6 ADC voltage regulator (ADVREGEN) . . . . . . . . . . . . . . . . . . . . . . . . . 316 15.3.7 Single-ended and differential input channels . . . . . . . . . . . . . . . . . . . . 316 15.3.8 Calibration (ADCAL, ADCALDIF, ADCx_CALFACT) . . . . . . . . . . . . . . 317 15.3.9 ADC on-off control (ADEN, ADDIS, ADRDY) . . . . . . . . . . . . . . . . . . . 320 15.3.10 Constraints when writing the ADC control bits . . . . . . . . . . . . . . . . . . . 321 Contents RM0316 10/1141 DocID022558 Rev 8 15.3.11 Channel selection (SQRx, JSQRx) . . . . . . . . . . . . . . . . . . . . . . . . . . . 321 15.3.12 Channel-wise programmable sampling time (SMPR1, SMPR2) . . . . . 322 15.3.13 Single conversion mode (CONT=0) . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 15.3.14 Continuous conversion mode (CONT=1) . . . . . . . . . . . . . . . . . . . . . . . 323 15.3.15 Starting conversions (ADSTART, JADSTART) . . . . . . . . . . . . . . . . . . . 324 15.3.16 Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325 15.3.17 Stopping an ongoing conversion (ADSTP, JADSTP) . . . . . . . . . . . . . . 325 15.3.18 Conversion on external trigger and trigger polarity (EXTSEL, EXTEN, JEXTSEL, JEXTEN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327 15.3.19 Injected channel management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 15.3.20 Discontinuous mode (DISCEN, DISCNUM, JDISCEN) . . . . . . . . . . . . 332 15.3.21 Queue of context for injected conversions . . . . . . . . . . . . . . . . . . . . . . 334 15.3.22 Programmable resolution (RES) - fast conversion mode . . . . . . . . . . 341 15.3.23 End of conversion, end of sampling phase (EOC, JEOC, EOSMP) . . 341 15.3.24 End of conversion sequence (EOS, JEOS) . . . . . . . . . . . . . . . . . . . . . 342 15.3.25 Timing diagrams example (single/continuous modes, hardware/software triggers) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 15.3.26 Data management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344 15.3.27 Dynamic low-power features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349 15.3.28 Analog window watchdog (AWD1EN, JAWD1EN, AWD1SGL, AWD1CH, AWD2CH, AWD3CH, AWD_HTx, AWD_LTx, AWDx) . . . . 354 15.3.29 Dual ADC modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 15.3.30 Temperature sensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371 15.3.31 VBAT supply monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373 15.3.32 Monitoring the internal voltage reference . . . . . . . . . . . . . . . . . . . . . . 374 15.4 ADC interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 15.5 ADC registers (for each ADC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 15.5.1 ADC interrupt and status register (ADCx_ISR, x=1..4) . . . . . . . . . . . . 377 15.5.2 ADC interrupt enable register (ADCx_IER, x=1..4) . . . . . . . . . . . . . . . 379 15.5.3 ADC control register (ADCx_CR, x=1..4) . . . . . . . . . . . . . . . . . . . . . . . 381 15.5.4 ADC configuration register (ADCx_CFGR, x=1..4) . . . . . . . . . . . . . . . 384 15.5.5 ADC sample time register 1 (ADCx_SMPR1, x=1..4) . . . . . . . . . . . . . 388 15.5.6 ADC sample time register 2 (ADCx_SMPR2, x=1..4) . . . . . . . . . . . . . 390 15.5.7 ADC watchdog threshold register 1 (ADCx_TR1, x=1..4) . . . . . . . . . . 390 15.5.8 ADC watchdog threshold register 2 (ADCx_TR2, x = 1..4) . . . . . . . . . 391 15.5.9 ADC watchdog threshold register 3 (ADCx_TR3, x=1..4) . . . . . . . . . . 392 15.5.10 ADC regular sequence register 1 (ADCx_SQR1, x=1..4) . . . . . . . . . . 393 15.5.11 ADC regular sequence register 2 (ADCx_SQR2, x=1..4) . . . . . . . . . . 394 DocID022558 Rev 8 11/1141 RM0316 Contents 28 15.5.12 ADC regular sequence register 3 (ADCx_SQR3, x=1..4) . . . . . . . . . . 396 15.5.13 ADC regular sequence register 4 (ADCx_SQR4, x=1..4) . . . . . . . . . . 397 15.5.14 ADC regular Data Register (ADCx_DR, x=1..4) . . . . . . . . . . . . . . . . . 398 15.5.15 ADC injected sequence register (ADCx_JSQR, x=1..4) . . . . . . . . . . . 399 15.5.16 ADC offset register (ADCx_OFRy, x=1..4) (y=1..4) . . . . . . . . . . . . . . . 401 15.5.17 ADC injected data register (ADCx_JDRy, x=1..4, y= 1..4) . . . . . . . . . . 402 15.5.18 ADC Analog Watchdog 2 Configuration Register (ADCx_AWD2CR, x=1..4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402 15.5.19 ADC Analog Watchdog 3 Configuration Register (ADCx_AWD3CR, x=1..4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403 15.5.20 ADC Differential Mode Selection Register (ADCx_DIFSEL, x=1..4) . . 403 15.5.21 ADC Calibration Factors (ADCx_CALFACT, x=1..4) . . . . . . . . . . . . . . 404 15.6 ADC common registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405 15.6.1 ADC Common status register (ADCx_CSR, x=12 or 34) . . . . . . . . . . . 405 15.6.2 ADC common control register (ADCx_CCR, x=12 or 34) . . . . . . . . . . 407 15.6.3 ADC common regular data register for dual mode . . . . . . . . . . . . . . . . . . (ADCx_CDR, x=12 or 34) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410 15.6.4 ADC register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410 16 Digital-to-analog converter (DAC1 and DAC2) . . . . . . . . . . . . . . . . . . 414 16.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414 16.2 DAC1/2 main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414 16.3 DAC output buffer enable/DAC output switch . . . . . . . . . . . . . . . . . . . . 416 16.4 DAC channel enable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417 16.5 Single mode functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417 16.5.1 DAC data format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417 16.5.2 DAC channel conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418 16.5.3 DAC output voltage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419 16.5.4 DAC trigger selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419 16.6 Dual-mode functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420 16.6.1 DAC data format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420 16.6.2 DAC channel conversion in dual mode . . . . . . . . . . . . . . . . . . . . . . . . 421 16.6.3 Description of dual conversion modes . . . . . . . . . . . . . . . . . . . . . . . . . 421 16.6.4 DAC output voltage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424 16.6.5 DAC trigger selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425 16.7 Noise generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425 16.8 Triangle-wave generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426 Contents RM0316 12/1141 DocID022558 Rev 8 16.9 DMA request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427 16.10 DAC registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428 16.10.1 DAC control register (DAC_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428 16.10.2 DAC software trigger register (DAC_SWTRIGR) . . . . . . . . . . . . . . . . . 432 16.10.3 DAC channel1 12-bit right-aligned data holding register (DAC_DHR12R1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432 16.10.4 DAC channel1 12-bit left-aligned data holding register (DAC_DHR12L1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433 16.10.5 DAC channel1 8-bit right-aligned data holding register (DAC_DHR8R1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433 16.10.6 DAC channel2 12-bit right-aligned data holding register (DAC_DHR12R2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433 16.10.7 DAC channel2 12-bit left-aligned data holding register (DAC_DHR12L2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434 16.10.8 DAC channel2 8-bit right-aligned data holding register (DAC_DHR8R2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434 16.10.9 Dual DAC 12-bit right-aligned data holding register (DAC_DHR12RD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435 16.10.10 Dual DAC 12-bit left-aligned data holding register (DAC_DHR12LD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435 16.10.11 Dual DAC 8-bit right-aligned data holding register (DAC_DHR8RD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435 16.10.12 DAC channel1 data output register (DAC_DOR1) . . . . . . . . . . . . . . . . 436 16.10.13 DAC channel2 data output register (DAC_DOR2) . . . . . . . . . . . . . . . . 436 16.10.14 DAC status register (DAC_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436 16.10.15 DAC register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438 17 Comparator (COMP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 17.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 17.2 COMP main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 17.3 COMP functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441 17.3.1 COMP block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441 17.3.2 COMP pins and internal signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443 17.3.3 COMP reset and clocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444 17.3.4 Comparator LOCK mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444 17.3.5 Hysteresis (on STM32F303xB/C and STM32F358xC only) . . . . . . . . 445 17.3.6 Comparator output blanking function . . . . . . . . . . . . . . . . . . . . . . . . . . 445 17.3.7 Power mode (STM32F303xB/C and STM32F358xC only) . . . . . . . . . 446 17.4 COMP interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446 DocID022558 Rev 8 13/1141 RM0316 Contents 28 17.5 COMP registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447 17.5.1 COMP1 control and status register (COMP1_CSR) . . . . . . . . . . . . . . 447 17.5.2 COMP2 control and status register (COMP2_CSR) . . . . . . . . . . . . . . 449 17.5.3 COMP3 control and status register (COMP3_CSR) . . . . . . . . . . . . . . 451 17.5.4 COMP4 control and status register (COMP4_CSR) . . . . . . . . . . . . . . 454 17.5.5 COMP5 control and status register (COMP5_CSR) . . . . . . . . . . . . . . 456 17.5.6 COMP6 control and status register (COMP6_CSR) . . . . . . . . . . . . . . 459 17.5.7 COMP7 control and status register (COMP7_CSR) . . . . . . . . . . . . . . 461 17.5.8 COMP register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464 18 Operational amplifier (OPAMP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466 18.1 OPAMP introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466 18.2 OPAMP main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466 18.3 OPAMP functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466 18.3.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466 18.3.2 Clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467 18.3.3 Operational amplifiers and comparators interconnections . . . . . . . . . . 468 18.3.4 Using the OPAMP outputs as ADC inputs . . . . . . . . . . . . . . . . . . . . . . 470 18.3.5 Calibration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470 18.3.6 Timer controlled Multiplexer mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471 18.3.7 OPAMP modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472 18.4 OPAMP registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476 18.4.1 OPAMP1 control register (OPAMP1_CSR) . . . . . . . . . . . . . . . . . . . . . 476 18.4.2 OPAMP2 control register (OPAMP2_CSR) . . . . . . . . . . . . . . . . . . . . . 478 18.4.3 OPAMP3 control register (OPAMP3_CSR) . . . . . . . . . . . . . . . . . . . . . 480 18.4.4 OPAMP4 control register (OPAMP4_CSR) . . . . . . . . . . . . . . . . . . . . . 483 18.4.5 OPAMP register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486 19 Touch sensing controller (TSC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487 19.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487 19.2 TSC main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487 19.3 TSC functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488 19.3.1 TSC block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488 19.3.2 Surface charge transfer acquisition overview . . . . . . . . . . . . . . . . . . . 488 19.3.3 Reset and clocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490 19.3.4 Charge transfer acquisition sequence . . . . . . . . . . . . . . . . . . . . . . . . . 491 Contents RM0316 14/1141 DocID022558 Rev 8 19.3.5 Spread spectrum feature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492 19.3.6 Max count error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492 19.3.7 Sampling capacitor I/O and channel I/O mode selection . . . . . . . . . . . 493 19.3.8 Acquisition mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494 19.3.9 I/O hysteresis and analog switch control . . . . . . . . . . . . . . . . . . . . . . . 494 19.4 TSC low-power modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495 19.5 TSC interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495 19.6 TSC registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496 19.6.1 TSC control register (TSC_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496 19.6.2 TSC interrupt enable register (TSC_IER) . . . . . . . . . . . . . . . . . . . . . . 498 19.6.3 TSC interrupt clear register (TSC_ICR) . . . . . . . . . . . . . . . . . . . . . . . . 499 19.6.4 TSC interrupt status register (TSC_ISR) . . . . . . . . . . . . . . . . . . . . . . . 500 19.6.5 TSC I/O hysteresis control register (TSC_IOHCR) . . . . . . . . . . . . . . . 500 19.6.6 TSC I/O analog switch control register (TSC_IOASCR) . . . . . . . . . . . 501 19.6.7 TSC I/O sampling control register (TSC_IOSCR) . . . . . . . . . . . . . . . . 501 19.6.8 TSC I/O channel control register (TSC_IOCCR) . . . . . . . . . . . . . . . . . 502 19.6.9 TSC I/O group control status register (TSC_IOGCSR) . . . . . . . . . . . . 502 19.6.10 TSC I/O group x counter register (TSC_IOGxCR) (x = 1..8) . . . . . . . . 503 19.6.11 TSC register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504 20 Advanced-control timers (TIM1/TIM8/TIM20) . . . . . . . . . . . . . . . . . . . 506 20.1 TIM1/TIM8/TIM20 introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506 20.2 TIM1/TIM8/TIM20 main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506 20.3 TIM1/TIM8/TIM20 functional description . . . . . . . . . . . . . . . . . . . . . . . . 508 20.3.1 Time-base unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508 20.3.2 Counter modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510 20.3.3 Repetition counter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521 20.3.4 External trigger input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523 20.3.5 Clock selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524 20.3.6 Capture/compare channels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528 20.3.7 Input capture mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531 20.3.8 PWM input mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532 20.3.9 Forced output mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533 20.3.10 Output compare mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534 20.3.11 PWM mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535 20.3.12 Asymmetric PWM mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538 DocID022558 Rev 8 15/1141 RM0316 Contents 28 20.3.13 Combined PWM mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539 20.3.14 Combined 3-phase PWM mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540 20.3.15 Complementary outputs and dead-time insertion . . . . . . . . . . . . . . . . 541 20.3.16 Using the break function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543 20.3.17 Clearing the OCxREF signal on an external event . . . . . . . . . . . . . . . 548 20.3.18 6-step PWM generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550 20.3.19 One-pulse mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551 20.3.20 Retriggerable one pulse mode (OPM) . . . . . . . . . . . . . . . . . . . . . . . . . 552 20.3.21 Encoder interface mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553 20.3.22 UIF bit remapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555 20.3.23 Timer input XOR function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556 20.3.24 Interfacing with Hall sensors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556 20.3.25 Timer synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559 20.3.26 ADC synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563 20.3.27 DMA burst mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563 20.3.28 Debug mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564 20.4 TIM1/TIM8/TIM20 registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565 20.4.1 TIM1/TIM8/TIM20 control register 1 (TIMx_CR1) . . . . . . . . . . . . . . . . 565 20.4.2 TIM1/TIM8/TIM20 control register 2 (TIMx_CR2) . . . . . . . . . . . . . . . . 566 20.4.3 TIM1/TIM8/TIM20 slave mode control register (TIMx_SMCR) . . . . . . 569 20.4.4 TIM1/TIM8/TIM20 DMA/interrupt enable register (TIMx_DIER) . . . . . 571 20.4.5 TIM1/TIM8/TIM20 status register (TIMx_SR) . . . . . . . . . . . . . . . . . . . 573 20.4.6 TIM1/TIM8/TIM20 event generation register (TIMx_EGR) . . . . . . . . . 575 20.4.7 TIM1/TIM8/TIM20 capture/compare mode register 1 (TIMx_CCMR1) 576 20.4.8 TIM1/TIM8/TIM20 capture/compare mode register 2 (TIMx_CCMR2) 580 20.4.9 TIM1/TIM8/TIM20 capture/compare enable register (TIMx_CCER) . . 582 20.4.10 TIM1/TIM8/TIM20 counter (TIMx_CNT) . . . . . . . . . . . . . . . . . . . . . . . 586 20.4.11 TIM1/TIM8/TIM20 prescaler (TIMx_PSC) . . . . . . . . . . . . . . . . . . . . . . 586 20.4.12 TIM1/TIM8/TIM20 auto-reload register (TIMx_ARR) . . . . . . . . . . . . . . 586 20.4.13 TIM1/TIM8/TIM20 repetition counter register (TIMx_RCR) . . . . . . . . . 587 20.4.14 TIM1/TIM8/TIM20 capture/compare register 1 (TIMx_CCR1) . . . . . . . 587 20.4.15 TIM1/TIM8/TIM20 capture/compare register 2 (TIMx_CCR2) . . . . . . . 588 20.4.16 TIM1/TIM8/TIM20 capture/compare register 3 (TIMx_CCR3) . . . . . . . 588 20.4.17 TIM1/TIM8/TIM20 capture/compare register 4 (TIMx_CCR4) . . . . . . . 589 20.4.18 TIM1/TIM8/TIM20 break and dead-time register (TIMx_BDTR) . . . . . 589 20.4.19 TIM1/TIM8/TIM20 DMA control register (TIMx_DCR) . . . . . . . . . . . . . 592 20.4.20 TIM1/TIM8/TIM20 DMA address for full transfer (TIMx_DMAR) . . . . . 593 Contents RM0316 16/1141 DocID022558 Rev 8 20.4.21 TIM1/TIM8/TIM20 option registers (TIMx_OR) . . . . . . . . . . . . . . . . . . 594 20.4.22 TIM1/TIM8/TIM20 capture/compare mode register 3 (TIMx_CCMR3) 595 20.4.23 TIM1/TIM8/TIM20 capture/compare register 5 (TIMx_CCR5) . . . . . . . 596 20.4.24 TIM1/TIM8/TIM20 capture/compare register 6 (TIMx_CCR6) . . . . . . . 597 20.4.25 TIM1/TIM8/TIM20 register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598 21 General-purpose timers (TIM2/TIM3/TIM4) . . . . . . . . . . . . . . . . . . . . . 601 21.1 TIM2/TIM3/TIM4 introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601 21.2 TIM2/TIM3/TIM4 main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601 21.3 TIM2/TIM3/TIM4 functional description . . . . . . . . . . . . . . . . . . . . . . . . . 603 21.3.1 Time-base unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603 21.3.2 Counter modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605 21.3.3 Clock selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615 21.3.4 Capture/compare channels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619 21.3.5 Input capture mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621 21.3.6 PWM input mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622 21.3.7 Forced output mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623 21.3.8 Output compare mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624 21.3.9 PWM mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625 21.3.10 Asymmetric PWM mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628 21.3.11 Combined PWM mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629 21.3.12 Clearing the OCxREF signal on an external event . . . . . . . . . . . . . . . 630 21.3.13 One-pulse mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632 21.3.14 Retriggerable one pulse mode (OPM) . . . . . . . . . . . . . . . . . . . . . . . . . 633 21.3.15 Encoder interface mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634 21.3.16 UIF bit remapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636 21.3.17 Timer input XOR function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636 21.3.18 Timers and external trigger synchronization . . . . . . . . . . . . . . . . . . . . 637 21.3.19 Timer synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640 21.3.20 DMA burst mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645 21.3.21 Debug mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646 21.4 TIM2/TIM3/TIM4 registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647 21.4.1 TIMx control register 1 (TIMx_CR1) . . . . . . . . . . . . . . . . . . . . . . . . . . 647 21.4.2 TIMx control register 2 (TIMx_CR2) . . . . . . . . . . . . . . . . . . . . . . . . . . 648 21.4.3 TIMx slave mode control register (TIMx_SMCR) . . . . . . . . . . . . . . . . . 650 21.4.4 TIMx DMA/Interrupt enable register (TIMx_DIER) . . . . . . . . . . . . . . . . 653 21.4.5 TIMx status register (TIMx_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654 DocID022558 Rev 8 17/1141 RM0316 Contents 28 21.4.6 TIMx event generation register (TIMx_EGR) . . . . . . . . . . . . . . . . . . . . 655 21.4.7 TIMx capture/compare mode register 1 (TIMx_CCMR1) . . . . . . . . . . . 656 21.4.8 TIMx capture/compare mode register 2 (TIMx_CCMR2) . . . . . . . . . . . 660 21.4.9 TIMx capture/compare enable register (TIMx_CCER) . . . . . . . . . . . . . 662 21.4.10 TIMx counter (TIMx_CNT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663 21.4.11 TIMx prescaler (TIMx_PSC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664 21.4.12 TIMx auto-reload register (TIMx_ARR) . . . . . . . . . . . . . . . . . . . . . . . . 664 21.4.13 TIMx capture/compare register 1 (TIMx_CCR1) . . . . . . . . . . . . . . . . . 665 21.4.14 TIMx capture/compare register 2 (TIMx_CCR2) . . . . . . . . . . . . . . . . . 665 21.4.15 TIMx capture/compare register 3 (TIMx_CCR3) . . . . . . . . . . . . . . . . . 666 21.4.16 TIMx capture/compare register 4 (TIMx_CCR4) . . . . . . . . . . . . . . . . . 666 21.4.17 TIMx DMA control register (TIMx_DCR) . . . . . . . . . . . . . . . . . . . . . . . 667 21.4.18 TIMx DMA address for full transfer (TIMx_DMAR) . . . . . . . . . . . . . . . 667 21.4.19 TIMx register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668 22 Basic timers (TIM6/TIM7) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670 22.1 TIM6/TIM7 introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670 22.2 TIM6/TIM7 main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670 22.3 TIM6/TIM7 functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671 22.3.1 Time-base unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671 22.3.2 Counting mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673 22.3.3 UIF bit remapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676 22.3.4 Clock source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676 22.3.5 Debug mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677 22.4 TIM6/TIM7 registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677 22.4.1 TIM6/TIM7 control register 1 (TIMx_CR1) . . . . . . . . . . . . . . . . . . . . . . 677 22.4.2 TIM6/TIM7 control register 2 (TIMx_CR2) . . . . . . . . . . . . . . . . . . . . . . 679 22.4.3 TIM6/TIM7 DMA/Interrupt enable register (TIMx_DIER) . . . . . . . . . . . 679 22.4.4 TIM6/TIM7 status register (TIMx_SR) . . . . . . . . . . . . . . . . . . . . . . . . . 680 22.4.5 TIM6/TIM7 event generation register (TIMx_EGR) . . . . . . . . . . . . . . . 680 22.4.6 TIM6/TIM7 counter (TIMx_CNT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680 22.4.7 TIM6/TIM7 prescaler (TIMx_PSC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681 22.4.8 TIM6/TIM7 auto-reload register (TIMx_ARR) . . . . . . . . . . . . . . . . . . . 681 22.4.9 TIM6/TIM7 register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682 23 General-purpose timers (TIM15/TIM16/TIM17) . . . . . . . . . . . . . . . . . . 683 23.1 TIM15/TIM16/TIM17 introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683 Contents RM0316 18/1141 DocID022558 Rev 8 23.2 TIM15 main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683 23.3 TIM16/TIM17 main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684 23.4 TIM15/TIM16/TIM17 functional description . . . . . . . . . . . . . . . . . . . . . . 687 23.4.1 Time-base unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687 23.4.2 Counter modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689 23.4.3 Repetition counter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693 23.4.4 Clock selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694 23.4.5 Capture/compare channels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696 23.4.6 Input capture mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699 23.4.7 PWM input mode (only for TIM15) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700 23.4.8 Forced output mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701 23.4.9 Output compare mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701 23.4.10 PWM mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702 23.4.11 Combined PWM mode (TIM15 only) . . . . . . . . . . . . . . . . . . . . . . . . . . 703 23.4.12 Complementary outputs and dead-time insertion . . . . . . . . . . . . . . . . 705 23.4.13 Using the break function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 707 23.4.14 One-pulse mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 710 23.4.15 UIF bit remapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711 23.4.16 Timer input XOR function (TIM15 only) . . . . . . . . . . . . . . . . . . . . . . . . 712 23.4.17 External trigger synchronization (TIM15 only) . . . . . . . . . . . . . . . . . . . 713 23.4.18 Slave mode: Combined reset trigger mode (TIM15 only) . . . . . . . . . 715 23.4.19 DMA burst mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715 23.4.20 Timer synchronization (TIM15) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717 23.4.21 Debug mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717 23.5 TIM15 registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718 23.5.1 TIM15 control register 1 (TIM15_CR1) . . . . . . . . . . . . . . . . . . . . . . . . 718 23.5.2 TIM15 control register 2 (TIM15_CR2) . . . . . . . . . . . . . . . . . . . . . . . . 719 23.5.3 TIM15 slave mode control register (TIM15_SMCR) . . . . . . . . . . . . . . 721 23.5.4 TIM15 DMA/interrupt enable register (TIM15_DIER) . . . . . . . . . . . . . 722 23.5.5 TIM15 status register (TIM15_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 723 23.5.6 TIM15 event generation register (TIM15_EGR) . . . . . . . . . . . . . . . . . 725 23.5.7 TIM15 capture/compare mode register 1 (TIM15_CCMR1) . . . . . . . . 726 23.5.8 TIM15 capture/compare enable register (TIM15_CCER) . . . . . . . . . . 729 23.5.9 TIM15 counter (TIM15_CNT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 732 23.5.10 TIM15 prescaler (TIM15_PSC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 732 23.5.11 TIM15 auto-reload register (TIM15_ARR) . . . . . . . . . . . . . . . . . . . . . . 732 23.5.12 TIM15 repetition counter register (TIM15_RCR) . . . . . . . . . . . . . . . . . 733 DocID022558 Rev 8 19/1141 RM0316 Contents 28 23.5.13 TIM15 capture/compare register 1 (TIM15_CCR1) . . . . . . . . . . . . . . . 733 23.5.14 TIM15 capture/compare register 2 (TIM15_CCR2) . . . . . . . . . . . . . . . 734 23.5.15 TIM15 break and dead-time register (TIM15_BDTR) . . . . . . . . . . . . . 734 23.5.16 TIM15 DMA control register (TIM15_DCR) . . . . . . . . . . . . . . . . . . . . . 736 23.5.17 TIM15 DMA address for full transfer (TIM15_DMAR) . . . . . . . . . . . . . 736 23.5.18 TIM15 register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737 23.6 TIM16/TIM17 registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739 23.6.1 TIM16/TIM17 control register 1 (TIMx_CR1) . . . . . . . . . . . . . . . . . . . . 739 23.6.2 TIM16/TIM17 control register 2 (TIMx_CR2) . . . . . . . . . . . . . . . . . . . . 740 23.6.3 TIM16/TIM17 DMA/interrupt enable register (TIMx_DIER) . . . . . . . . . 741 23.6.4 TIM16/TIM17 status register (TIMx_SR) . . . . . . . . . . . . . . . . . . . . . . . 742 23.6.5 TIM16/TIM17 event generation register (TIMx_EGR) . . . . . . . . . . . . . 743 23.6.6 TIM16/TIM17 capture/compare mode register 1 (TIMx_CCMR1) . . . . 744 23.6.7 TIM16/TIM17 capture/compare enable register (TIMx_CCER) . . . . . . 746 23.6.8 TIM16/TIM17 counter (TIMx_CNT) . . . . . . . . . . . . . . . . . . . . . . . . . . . 748 23.6.9 TIM16/TIM17 prescaler (TIMx_PSC) . . . . . . . . . . . . . . . . . . . . . . . . . . 749 23.6.10 TIM16/TIM17 auto-reload register (TIMx_ARR) . . . . . . . . . . . . . . . . . 749 23.6.11 TIM16/TIM17 repetition counter register (TIMx_RCR) . . . . . . . . . . . . 750 23.6.12 TIM16/TIM17 capture/compare register 1 (TIMx_CCR1) . . . . . . . . . . 750 23.6.13 TIM16/TIM17 break and dead-time register (TIMx_BDTR) . . . . . . . . . 751 23.6.14 TIM16/TIM17 DMA control register (TIMx_DCR) . . . . . . . . . . . . . . . . 753 23.6.15 TIM16/TIM17 DMA address for full transfer (TIMx_DMAR) . . . . . . . . . 753 23.6.16 TIM16 option register (TIM16_OR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 754 23.6.17 TIM16/TIM17 register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755 24 Infrared interface (IRTIM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757 25 Independent watchdog (IWDG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758 25.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758 25.2 IWDG main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758 25.3 IWDG functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758 25.3.1 IWDG block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758 25.3.2 Window option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759 25.3.3 Hardware watchdog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 760 25.3.4 Behavior in Stop and Standby modes . . . . . . . . . . . . . . . . . . . . . . . . . 760 25.3.5 Register access protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 760 25.3.6 Debug mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 760 Contents RM0316 20/1141 DocID022558 Rev 8 25.4 IWDG registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761 25.4.1 Key register (IWDG_KR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761 25.4.2 Prescaler register (IWDG_PR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 762 25.4.3 Reload register (IWDG_RLR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763 25.4.4 Status register (IWDG_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764 25.4.5 Window register (IWDG_WINR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765 25.4.6 IWDG register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 766 26 System window watchdog (WWDG) . . . . . . . . . . . . . . . . . . . . . . . . . . 767 26.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767 26.2 WWDG main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767 26.3 WWDG functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767 26.3.1 Enabling the watchdog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 768 26.3.2 Controlling the downcounter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 768 26.3.3 Advanced watchdog interrupt feature . . . . . . . . . . . . . . . . . . . . . . . . . 768 26.3.4 How to program the watchdog timeout . . . . . . . . . . . . . . . . . . . . . . . . 769 26.3.5 Debug mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 770 26.4 WWDG registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 770 26.4.1 Control register (WWDG_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 770 26.4.2 Configuration register (WWDG_CFR) . . . . . . . . . . . . . . . . . . . . . . . . . 771 26.4.3 Status register (WWDG_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 771 26.4.4 WWDG register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 772 27 Real-time clock (RTC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 773 27.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 773 27.2 RTC main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774 27.3 RTC functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 775 27.3.1 RTC block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 775 27.3.2 GPIOs controlled by the RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776 27.3.3 Clock and prescalers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778 27.3.4 Real-time clock and calendar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778 27.3.5 Programmable alarms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 779 27.3.6 Periodic auto-wakeup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 779 27.3.7 RTC initialization and configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . 780 27.3.8 Reading the calendar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 781 27.3.9 Resetting the RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782 DocID022558 Rev 8 21/1141 RM0316 Contents 28 27.3.10 RTC synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 783 27.3.11 RTC reference clock detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 783 27.3.12 RTC smooth digital calibration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 784 27.3.13 Time-stamp function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 786 27.3.14 Tamper detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787 27.3.15 Calibration clock output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 788 27.3.16 Alarm output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 789 27.4 RTC low-power modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 789 27.5 RTC interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 789 27.6 RTC registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790 27.6.1 RTC time register (RTC_TR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790 27.6.2 RTC date register (RTC_DR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 791 27.6.3 RTC control register (RTC_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 793 27.6.4 RTC initialization and status register (RTC_ISR) . . . . . . . . . . . . . . . . . 796 27.6.5 RTC prescaler register (RTC_PRER) . . . . . . . . . . . . . . . . . . . . . . . . . 799 27.6.6 RTC wakeup timer register (RTC_WUTR) . . . . . . . . . . . . . . . . . . . . . . 800 27.6.7 RTC alarm A register (RTC_ALRMAR) . . . . . . . . . . . . . . . . . . . . . . . . 801 27.6.8 RTC alarm B register (RTC_ALRMBR) . . . . . . . . . . . . . . . . . . . . . . . . 802 27.6.9 RTC write protection register (RTC_WPR) . . . . . . . . . . . . . . . . . . . . . 803 27.6.10 RTC sub second register (RTC_SSR) . . . . . . . . . . . . . . . . . . . . . . . . . 803 27.6.11 RTC shift control register (RTC_SHIFTR) . . . . . . . . . . . . . . . . . . . . . . 804 27.6.12 RTC timestamp time register (RTC_TSTR) . . . . . . . . . . . . . . . . . . . . . 805 27.6.13 RTC timestamp date register (RTC_TSDR) . . . . . . . . . . . . . . . . . . . . 806 27.6.14 RTC time-stamp sub second register (RTC_TSSSR) . . . . . . . . . . . . . 807 27.6.15 RTC calibration register (RTC_CALR) . . . . . . . . . . . . . . . . . . . . . . . . . 808 27.6.16 RTC tamper and alternate function configuration register (RTC_TAFCR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809 27.6.17 RTC alarm A sub second register (RTC_ALRMASSR) . . . . . . . . . . . . 812 27.6.18 RTC alarm B sub second register (RTC_ALRMBSSR) . . . . . . . . . . . . 813 27.6.19 RTC backup registers (RTC_BKPxR) . . . . . . . . . . . . . . . . . . . . . . . . . 814 27.6.20 RTC register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814 28 Inter-integrated circuit (I2C) interface . . . . . . . . . . . . . . . . . . . . . . . . . 816 28.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816 28.2 I2C main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816 28.3 I2C implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817 28.4 I2C functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817 Contents RM0316 22/1141 DocID022558 Rev 8 28.4.1 I2C block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818 28.4.2 I2C clock requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 819 28.4.3 Mode selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 819 28.4.4 I2C initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821 28.4.5 Software reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 825 28.4.6 Data transfer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826 28.4.7 I2C slave mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 828 28.4.8 I2C master mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837 28.4.9 I2C_TIMINGR register configuration examples . . . . . . . . . . . . . . . . . . 849 28.4.10 SMBus specific features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 850 28.4.11 SMBus initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 853 28.4.12 SMBus: I2C_TIMEOUTR register configuration examples . . . . . . . . . 855 28.4.13 SMBus slave mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 856 28.4.14 Wakeup from Stop mode on address match . . . . . . . . . . . . . . . . . . . . 863 28.4.15 Error conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863 28.4.16 DMA requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865 28.4.17 Debug mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 866 28.5 I2C low-power modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 866 28.6 I2C interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 866 28.7 I2C registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 868 28.7.1 Control register 1 (I2C_CR1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 868 28.7.2 Control register 2 (I2C_CR2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 871 28.7.3 Own address 1 register (I2C_OAR1) . . . . . . . . . . . . . . . . . . . . . . . . . . 874 28.7.4 Own address 2 register (I2C_OAR2) . . . . . . . . . . . . . . . . . . . . . . . . . . 875 28.7.5 Timing register (I2C_TIMINGR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876 28.7.6 Timeout register (I2C_TIMEOUTR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 877 28.7.7 Interrupt and status register (I2C_ISR) . . . . . . . . . . . . . . . . . . . . . . . . 878 28.7.8 Interrupt clear register (I2C_ICR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 880 28.7.9 PEC register (I2C_PECR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 881 28.7.10 Receive data register (I2C_RXDR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 882 28.7.11 Transmit data register (I2C_TXDR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 882 28.7.12 I2C register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 883 29 Universal synchronous asynchronous receiver transmitter (USART) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885 29.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885 29.2 USART main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885 DocID022558 Rev 8 23/1141 RM0316 Contents 28 29.3 USART extended features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 886 29.4 USART implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 887 29.5 USART functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 888 29.5.1 USART character description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 890 29.5.2 USART transmitter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 892 29.5.3 USART receiver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 894 29.5.4 USART baud rate generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 901 29.5.5 Tolerance of the USART receiver to clock deviation . . . . . . . . . . . . . . 903 29.5.6 USART auto baud rate detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904 29.5.7 Multiprocessor communication using USART . . . . . . . . . . . . . . . . . . . 905 29.5.8 Modbus communication using USART . . . . . . . . . . . . . . . . . . . . . . . . 907 29.5.9 USART parity control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 908 29.5.10 USART LIN (local interconnection network) mode . . . . . . . . . . . . . . . 909 29.5.11 USART synchronous mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 911 29.5.12 USART Single-wire Half-duplex communication . . . . . . . . . . . . . . . . . 914 29.5.13 USART Smartcard mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 914 29.5.14 USART IrDA SIR ENDEC block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 919 29.5.15 USART continuous communication in DMA mode . . . . . . . . . . . . . . . 921 29.5.16 RS232 hardware flow control and RS485 driver enable using USART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 923 29.5.17 Wakeup from Stop mode using USART . . . . . . . . . . . . . . . . . . . . . . . . 925 29.6 USART low-power modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 927 29.7 USART interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 927 29.8 USART registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 929 29.8.1 Control register 1 (USART_CR1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 929 29.8.2 Control register 2 (USART_CR2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 932 29.8.3 Control register 3 (USART_CR3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 936 29.8.4 Baud rate register (USART_BRR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 940 29.8.5 Guard time and prescaler register (USART_GTPR) . . . . . . . . . . . . . . 940 29.8.6 Receiver timeout register (USART_RTOR) . . . . . . . . . . . . . . . . . . . . . 941 29.8.7 Request register (USART_RQR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 942 29.8.8 Interrupt and status register (USART_ISR) . . . . . . . . . . . . . . . . . . . . . 943 29.8.9 Interrupt flag clear register (USART_ICR) . . . . . . . . . . . . . . . . . . . . . . 948 29.8.10 Receive data register (USART_RDR) . . . . . . . . . . . . . . . . . . . . . . . . . 949 29.8.11 Transmit data register (USART_TDR) . . . . . . . . . . . . . . . . . . . . . . . . . 949 29.8.12 USART register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 950 Contents RM0316 24/1141 DocID022558 Rev 8 30 Serial peripheral interface / inter-IC sound (SPI/I2S) . . . . . . . . . . . . . 952 30.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 952 30.2 SPI main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 952 30.3 I2S main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 953 30.4 SPI/I2S implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 953 30.5 SPI functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 954 30.5.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 954 30.5.2 Communications between one master and one slave . . . . . . . . . . . . . 955 30.5.3 Standard multi-slave communication . . . . . . . . . . . . . . . . . . . . . . . . . . 957 30.5.4 Multi-master communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 958 30.5.5 Slave select (NSS) pin management . . . . . . . . . . . . . . . . . . . . . . . . . . 959 30.5.6 Communication formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 960 30.5.7 Configuration of SPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 962 30.5.8 Procedure for enabling SPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 963 30.5.9 Data transmission and reception procedures . . . . . . . . . . . . . . . . . . . 963 30.5.10 SPI status flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 973 30.5.11 SPI error flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 974 30.5.12 NSS pulse mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 975 30.5.13 TI mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 975 30.5.14 CRC calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 976 30.6 SPI interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 978 30.7 I2S functional description (STM32F303xB/C/D/E, STM32F358xC and STM32F398xE only) . . . . . . . . . . . . . . . . . . . . . . . 979 30.7.1 I2S general description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 979 30.7.2 I2S full duplex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 980 30.7.3 Supported audio protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 981 30.7.4 Start-up description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 988 30.7.5 Clock generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 990 30.7.6 I2S master mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 991 30.7.7 I2S slave mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 993 30.7.8 I2S status flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 995 30.7.9 I2S error flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 996 30.7.10 DMA features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997 30.8 I2S interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997 30.9 SPI and I2S registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 998 30.9.1 SPI control register 1 (SPIx_CR1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 998 DocID022558 Rev 8 25/1141 RM0316 Contents 28 30.9.2 SPI control register 2 (SPIx_CR2) . . . . . . . . . . . . . . . . . . . . . . . . . . . 1000 30.9.3 SPI status register (SPIx_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1003 30.9.4 SPI data register (SPIx_DR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004 30.9.5 SPI CRC polynomial register (SPIx_CRCPR) . . . . . . . . . . . . . . . . . . 1004 30.9.6 SPI Rx CRC register (SPIx_RXCRCR) . . . . . . . . . . . . . . . . . . . . . . . 1006 30.9.7 SPI Tx CRC register (SPIx_TXCRCR) . . . . . . . . . . . . . . . . . . . . . . . 1006 30.9.8 SPIx_I2S configuration register (SPIx_I2SCFGR) . . . . . . . . . . . . . . . 1007 30.9.9 SPIx_I2S prescaler register (SPIx_I2SPR) . . . . . . . . . . . . . . . . . . . . 1009 30.9.10 SPI/I2S register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1010 31 Controller area network (bxCAN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1011 31.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1011 31.2 bxCAN main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1011 31.3 bxCAN general description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1012 31.3.1 CAN 2.0B active core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1012 31.3.2 Control, status and configuration registers . . . . . . . . . . . . . . . . . . . . 1012 31.3.3 Tx mailboxes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1012 31.3.4 Acceptance filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1013 31.4 bxCAN operating modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1013 31.4.1 Initialization mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1013 31.4.2 Normal mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1013 31.4.3 Sleep mode (low-power) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1014 31.5 Test mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1015 31.5.1 Silent mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1015 31.5.2 Loop back mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1016 31.5.3 Loop back combined with silent mode . . . . . . . . . . . . . . . . . . . . . . . . 1016 31.6 Behavior in debug mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1017 31.7 bxCAN functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1017 31.7.1 Transmission handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1017 31.7.2 Time triggered communication mode . . . . . . . . . . . . . . . . . . . . . . . . . 1018 31.7.3 Reception handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1019 31.7.4 Identifier filtering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1020 31.7.5 Message storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1024 31.7.6 Error management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1026 31.7.7 Bit timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1026 31.8 bxCAN interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1029 Contents RM0316 26/1141 DocID022558 Rev 8 31.9 CAN registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1030 31.9.1 Register access protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1030 31.9.2 CAN control and status registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1030 31.9.3 CAN mailbox registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1040 31.9.4 CAN filter registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1047 31.9.5 bxCAN register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1051 32 Universal serial bus full-speed device interface (USB) . . . . . . . . . . 1055 32.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1055 32.2 USB main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1055 32.3 USB implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1055 32.4 USB functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1056 32.4.1 Description of USB blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1057 32.5 Programming considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1058 32.5.1 Generic USB device programming . . . . . . . . . . . . . . . . . . . . . . . . . . 1059 32.5.2 System and power-on reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1059 32.5.3 Double-buffered endpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1064 32.5.4 Isochronous transfers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1066 32.5.5 Suspend/Resume events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1068 32.6 USB registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1070 32.6.1 Common registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1070 32.6.2 Buffer descriptor table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1082 32.6.3 USB register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1086 33 Debug support (DBG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1088 33.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1088 33.2 Reference ARM® documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1089 33.3 SWJ debug port (serial wire and JTAG) . . . . . . . . . . . . . . . . . . . . . . . . 1089 33.3.1 Mechanism to select the JTAG-DP or the SW-DP . . . . . . . . . . . . . . . 1090 33.4 Pinout and debug port pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1090 33.4.1 SWJ debug port pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1091 33.4.2 Flexible SWJ-DP pin assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . 1091 33.4.3 Internal pull-up and pull-down on JTAG pins . . . . . . . . . . . . . . . . . . . 1092 33.4.4 Using serial wire and releasing the unused debug pins as GPIOs . . 1093 33.5 STM32F3xx JTAG TAP connection . . . . . . . . . . . . . . . . . . . . . . . . . . . 1093 33.6 ID codes and locking mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1094 DocID022558 Rev 8 27/1141 RM0316 Contents 28 33.6.1 MCU device ID code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1095 33.6.2 Boundary scan TAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1095 33.6.3 Cortex-M4®F TAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1095 33.6.4 Cortex-M4®F JEDEC-106 ID code . . . . . . . . . . . . . . . . . . . . . . . . . . 1096 33.7 JTAG debug port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1096 33.8 SW debug port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1098 33.8.1 SW protocol introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1098 33.8.2 SW protocol sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1098 33.8.3 SW-DP state machine (reset, idle states, ID code) . . . . . . . . . . . . . . 1099 33.8.4 DP and AP read/write accesses . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1099 33.8.5 SW-DP registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1100 33.8.6 SW-AP registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1101 33.9 AHB-AP (AHB access port) - valid for both JTAG-DP and SW-DP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1101 33.10 Core debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1102 33.11 Capability of the debugger host to connect under system reset . . . . . .1102 33.12 FPB (Flash patch breakpoint) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1103 33.13 DWT (data watchpoint trigger) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1104 33.14 ITM (instrumentation trace macrocell) . . . . . . . . . . . . . . . . . . . . . . . . . .1104 33.14.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1104 33.14.2 Time stamp packets, synchronization and overflow packets . . . . . . . 1104 33.15 ETM (Embedded trace macrocell) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1106 33.15.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1106 33.15.2 Signal protocol, packet types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1106 33.15.3 Main ETM registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1107 33.15.4 Configuration example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1107 33.16 MCU debug component (DBGMCU) . . . . . . . . . . . . . . . . . . . . . . . . . . .1107 33.16.1 Debug support for low-power modes . . . . . . . . . . . . . . . . . . . . . . . . . 1107 33.16.2 Debug support for timers, watchdog, bxCAN and I2C . . . . . . . . . . . . 1108 33.16.3 Debug MCU configuration register . . . . . . . . . . . . . . . . . . . . . . . . . . 1108 33.16.4 Debug MCU APB1 freeze register (DBGMCU_APB1_FZ) . . . . . . . . 1110 33.16.5 Debug MCU APB2 freeze register (DBGMCU_APB2_FZ) . . . . . . . . 1112 33.17 TPIU (trace port interface unit) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1112 33.17.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1112 33.17.2 TRACE pin assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1113 33.17.3 TPUI formatter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1115 Contents RM0316 28/1141 DocID022558 Rev 8 33.17.4 TPUI frame synchronization packets . . . . . . . . . . . . . . . . . . . . . . . . . 1115 33.17.5 Transmission of the synchronization frame packet . . . . . . . . . . . . . . 1116 33.17.6 Synchronous mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1116 33.17.7 Asynchronous mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1116 33.17.8 TRACECLKIN connection inside the STM32F3xx . . . . . . . . . . . . . . . 1117 33.17.9 TPIU registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1118 33.17.10 Example of configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1119 33.18 DBG register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1120 34 Device electronic signature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1121 34.1 Unique device ID register (96 bits) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1121 34.2 Memory size data register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1122 34.2.1 Flash size data register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1122 35 Revision history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1123