STM32F0: микроконтроллеры на Cortex-M0, распиновки по корпусам
STM32F0 — младшее семейство STM32 на ядре Cortex-M0 с частотой до 48 МГц. Здесь собраны его линейки со сравнением памяти, корпусов и периферии и страницы с распиновкой и номерами альтернативных функций каждого микроконтроллера в каждом корпусе.
STM32F0 — семейство 32-битных микроконтроллеров STMicroelectronics на ядре Arm Cortex-M0: самые простые и дешёвые STM32 с частотой до 48 МГц, от 20-выводного STM32F030F4P6 до 100-выводных STM32F071, F072 и F091. В разделе 89 страниц для 111 исполнений в 14 корпусах, 13 линеек: у каждого сочетания микроконтроллера и корпуса — своя страница со схемой выводов и номерами альтернативных функций.
Линейки STM32F0
Линейки отличаются набором периферии и напряжением питания; в пределах линейки — объёмом памяти и корпусом. Значения в таблице собраны из записей базы ST: частота — максимальная для линейки, память — от наименьшего до наибольшего исполнения.
| Линейка | Ядро, частота | Флеш-память | ОЗУ | Корпуса | Чем выделяется |
|---|---|---|---|---|---|
| STM32F030 Value Line | Cortex-M0, до 48 МГц | 16 КБ – 256 КБ | 4 КБ – 32 КБ | LQFP32, LQFP48, LQFP64, TSSOP20 | — |
| STM32F031 | Cortex-M0, до 48 МГц | 16 КБ – 32 КБ | 4 КБ | LQFP32, LQFP48, TSSOP20, UFQFPN28, UFQFPN32, WLCSP25 | I²S |
| STM32F038 | Cortex-M0, до 48 МГц | 32 КБ | 4 КБ | LQFP48, TSSOP20, UFQFPN28, UFQFPN32, WLCSP25 | I²S |
| STM32F042 | Cortex-M0, до 48 МГц | 16 КБ – 32 КБ | 6 КБ | LQFP32, LQFP48, TSSOP20, UFQFPN28, UFQFPN32, UFQFPN48, WLCSP36 | USB, CAN, I²S, HDMI-CEC, TSC |
| STM32F048 | Cortex-M0, до 48 МГц | 32 КБ | 6 КБ | UFQFPN28, UFQFPN48, WLCSP36 | USB, I²S, HDMI-CEC, TSC |
| STM32F051 | Cortex-M0, до 48 МГц | 16 КБ – 64 КБ | 8 КБ | LQFP32, LQFP48, LQFP64, UFBGA64, UFQFPN32, UFQFPN48, WLCSP36 | DAC, COMP, I²S, HDMI-CEC, TSC |
| STM32F058 | Cortex-M0, до 48 МГц | 64 КБ | 8 КБ | LQFP64, UFBGA64, UFQFPN48, WLCSP36 | DAC, COMP, I²S, HDMI-CEC, TSC |
| STM32F070 Value Line | Cortex-M0, до 48 МГц | 32 КБ – 128 КБ | 6 КБ – 16 КБ | LQFP48, LQFP64, TSSOP20 | USB |
| STM32F071 | Cortex-M0, до 48 МГц | 64 КБ – 128 КБ | 16 КБ | LQFP48, LQFP64, LQFP100, UFBGA100, UFQFPN48, WLCSP49 | DAC, COMP, I²S, HDMI-CEC, TSC |
| STM32F072 | Cortex-M0, до 48 МГц | 64 КБ – 128 КБ | 16 КБ | LQFP48, LQFP64, LQFP100, UFBGA64, UFBGA100, UFQFPN48, WLCSP49 | USB, CAN, DAC, COMP, I²S, HDMI-CEC, TSC |
| STM32F078 | Cortex-M0, до 48 МГц | 128 КБ | 16 КБ | LQFP48, LQFP64, LQFP100, UFBGA64, UFBGA100, UFQFPN48, WLCSP49 | USB, DAC, COMP, I²S, HDMI-CEC, TSC |
| STM32F091 | Cortex-M0, до 48 МГц | 128 КБ – 256 КБ | 32 КБ | LQFP48, LQFP64, LQFP100, UFBGA64, UFBGA100, UFQFPN48, WLCSP64 | CAN, DAC, COMP, I²S, HDMI-CEC, TSC |
| STM32F098 | Cortex-M0, до 48 МГц | 256 КБ | 32 КБ | LQFP48, LQFP64, LQFP100, UFBGA64, UFBGA100, UFQFPN48, WLCSP64 | CAN, DAC, COMP, I²S, HDMI-CEC, TSC |
Семейство описывают два reference manual. RM0091 — подсемейства STM32F0x1 (F031, F051, F071, F091), STM32F0x2 с USB (F042, F072) и STM32F0x8 (F038, F048, F058, F078, F098). RM0360 — линейку Value Line: STM32F030 и STM32F070.
По питанию подсемейства разные (RM0091, разд. 5.1). STM32F0x1 и F0x2 получают 1,8 В для ядра от встроенного стабилизатора и работают от VDD и VDDA 2,0–3,6 В. У STM32F0x8 стабилизатора нет: на VDD нужно подать 1,8 В ± 8 %, а VDDA может быть от 1,65 до 3,6 В. У STM32F04x, F07x и F09x часть линий ввода-вывода питается от отдельного вывода VDDIO2; в корпусах, где он есть, он виден на схеме и в таблице выводов.
Тактирование и USB
Системную частоту STM32F0 дают внутренний RC-генератор HSI на 8 МГц, кварцевый генератор HSE или PLL. До 24 МГц флеш-память читается без тактов ожидания, от 24 до 48 МГц нужен один такт (RM0091 и RM0360, регистр FLASH_ACR).
У STM32F04x, F07x и F09x есть ещё генератор HSI48 на 48 МГц и блок CRS, который подстраивает его по пакетам начала кадра USB, — так USB работает без кварца (RM0091, разд. 6.2 и 7). У STM32F070 из линейки Value Line USB есть, а HSI48 нет. Настройки PLL, делителей и флеш-памяти для всех линеек STM32F0 подбирает калькулятор тактирования STM32, а регистр I2C_TIMINGR — калькулятор I2C_TIMINGR.
Выводы STM32F0: альтернативные функции и ремап
В отличие от STM32F1, у STM32F0 на каждой линии порта стоит мультиплексор альтернативных функций, как у STM32F4. Линию переводят в режим AF регистром GPIOx_MODER, а номер функции записывают в GPIOx_AFRL (линии 0–7) или GPIOx_AFRH (линии 8–15). В данных ST у семейства F0 используются номера AF0–AF7; в таблицах атласа номер стоит у каждого сигнала.
В 20- и 28-выводных корпусах STM32F04x и STM32F070x6 одна пара выводов работает либо как PA9/PA10, либо как PA11/PA12 — линии USB. Выбор делает бит PA11_PA12_RMP регистра SYSCFG_CFGR1 (RM0091 и RM0360, описание SYSCFG_CFGR1); в атласе у такого вывода два имени — и на схеме корпуса, и в таблице выводов.
Режим загрузки задают вывод BOOT0 и бит nBOOT1 в байте опций. У STM32F04x и F09x есть ещё биты BOOT_SEL и nBOOT0: когда BOOT_SEL сброшен, вместо уровня на выводе BOOT0 используется значение бита nBOOT0 (RM0091, разд. 2.5, табл. 3), и вывод BOOT0 можно не подтягивать.
Сравнение способов выбора функций выводов у разных семейств — на странице раздела STM32.
Все STM32F0 по корпусам
STM32F030 Value Line — Cortex-M0, до 48 МГц
| Микроконтроллер | Корпус | Флеш-память | ОЗУ | Линий ввода-вывода |
|---|---|---|---|---|
| STM32F030C6 | LQFP48 | 32 КБ | 4 КБ | 39 |
| STM32F030C8 | LQFP48 | 64 КБ | 8 КБ | 39 |
| STM32F030CC | LQFP48 | 256 КБ | 32 КБ | 37 |
| STM32F030F4 | TSSOP20 | 16 КБ | 4 КБ | 15 |
| STM32F030K6 | LQFP32 | 32 КБ | 4 КБ | 25 |
| STM32F030R8 | LQFP64 | 64 КБ | 8 КБ | 55 |
| STM32F030RC | LQFP64 | 256 КБ | 32 КБ | 51 |
STM32F031 — Cortex-M0, до 48 МГц
| Микроконтроллер | Корпус | Флеш-память | ОЗУ | Линий ввода-вывода |
|---|---|---|---|---|
| STM32F031C4, STM32F031C6 | LQFP48 | 16 КБ / 32 КБ | 4 КБ | 39 |
| STM32F031E6 | WLCSP25 | 32 КБ | 4 КБ | 20 |
| STM32F031F4, STM32F031F6 | TSSOP20 | 16 КБ / 32 КБ | 4 КБ | 15 |
| STM32F031G4, STM32F031G6 | UFQFPN28 | 16 КБ / 32 КБ | 4 КБ | 23 |
| STM32F031K4, STM32F031K6 | UFQFPN32 | 16 КБ / 32 КБ | 4 КБ | 27 |
| STM32F031K6 | LQFP32 | 32 КБ | 4 КБ | 25 |
STM32F038 — Cortex-M0, до 48 МГц
| Микроконтроллер | Корпус | Флеш-память | ОЗУ | Линий ввода-вывода |
|---|---|---|---|---|
| STM32F038C6 | LQFP48 | 32 КБ | 4 КБ | 38 |
| STM32F038E6 | WLCSP25 | 32 КБ | 4 КБ | 20 |
| STM32F038F6 | TSSOP20 | 32 КБ | 4 КБ | 14 |
| STM32F038G6 | UFQFPN28 | 32 КБ | 4 КБ | 22 |
| STM32F038K6 | UFQFPN32 | 32 КБ | 4 КБ | 26 |
STM32F042 — Cortex-M0, до 48 МГц
| Микроконтроллер | Корпус | Флеш-память | ОЗУ | Линий ввода-вывода |
|---|---|---|---|---|
| STM32F042C4, STM32F042C6 | LQFP48 | 16 КБ / 32 КБ | 6 КБ | 38 |
| STM32F042C4, STM32F042C6 | UFQFPN48 | 16 КБ / 32 КБ | 6 КБ | 38 |
| STM32F042F4 | TSSOP20 | 16 КБ | 6 КБ | 18 |
| STM32F042F6 | TSSOP20 | 32 КБ | 6 КБ | 18 |
| STM32F042G4, STM32F042G6 | UFQFPN28 | 16 КБ / 32 КБ | 6 КБ | 25 |
| STM32F042K4, STM32F042K6 | LQFP32 | 16 КБ / 32 КБ | 6 КБ | 26 |
| STM32F042K4, STM32F042K6 | UFQFPN32 | 16 КБ / 32 КБ | 6 КБ | 28 |
| STM32F042T6 | WLCSP36 | 32 КБ | 6 КБ | 30 |
STM32F048 — Cortex-M0, до 48 МГц
| Микроконтроллер | Корпус | Флеш-память | ОЗУ | Линий ввода-вывода |
|---|---|---|---|---|
| STM32F048C6 | UFQFPN48 | 32 КБ | 6 КБ | 37 |
| STM32F048G6 | UFQFPN28 | 32 КБ | 6 КБ | 24 |
| STM32F048T6 | WLCSP36 | 32 КБ | 6 КБ | 29 |
STM32F051 — Cortex-M0, до 48 МГц
| Микроконтроллер | Корпус | Флеш-память | ОЗУ | Линий ввода-вывода |
|---|---|---|---|---|
| STM32F051C4 | LQFP48 | 16 КБ | 8 КБ | 39 |
| STM32F051C4 | UFQFPN48 | 16 КБ | 8 КБ | 39 |
| STM32F051C6 | LQFP48 | 32 КБ | 8 КБ | 39 |
| STM32F051C6 | UFQFPN48 | 32 КБ | 8 КБ | 39 |
| STM32F051C8 | LQFP48 | 64 КБ | 8 КБ | 39 |
| STM32F051C8 | UFQFPN48 | 64 КБ | 8 КБ | 39 |
| STM32F051K4 | LQFP32 | 16 КБ | 8 КБ | 25 |
| STM32F051K4 | UFQFPN32 | 16 КБ | 8 КБ | 27 |
| STM32F051K6 | LQFP32 | 32 КБ | 8 КБ | 25 |
| STM32F051K6 | UFQFPN32 | 32 КБ | 8 КБ | 27 |
| STM32F051K8 | LQFP32 | 64 КБ | 8 КБ | 25 |
| STM32F051K8 | UFQFPN32 | 64 КБ | 8 КБ | 27 |
| STM32F051R4 | LQFP64 | 16 КБ | 8 КБ | 55 |
| STM32F051R6 | LQFP64 | 32 КБ | 8 КБ | 55 |
| STM32F051R8 | UFBGA64 | 64 КБ | 8 КБ | 55 |
| STM32F051R8 | LQFP64 | 64 КБ | 8 КБ | 55 |
| STM32F051T8 | WLCSP36 | 64 КБ | 8 КБ | 29 |
STM32F058 — Cortex-M0, до 48 МГц
| Микроконтроллер | Корпус | Флеш-память | ОЗУ | Линий ввода-вывода |
|---|---|---|---|---|
| STM32F058C8 | UFQFPN48 | 64 КБ | 8 КБ | 38 |
| STM32F058R8 | UFBGA64 | 64 КБ | 8 КБ | 54 |
| STM32F058R8 | LQFP64 | 64 КБ | 8 КБ | 54 |
| STM32F058T8 | WLCSP36 | 64 КБ | 8 КБ | 28 |
STM32F070 Value Line — Cortex-M0, до 48 МГц
| Микроконтроллер | Корпус | Флеш-память | ОЗУ | Линий ввода-вывода |
|---|---|---|---|---|
| STM32F070C6 | LQFP48 | 32 КБ | 6 КБ | 37 |
| STM32F070CB | LQFP48 | 128 КБ | 16 КБ | 37 |
| STM32F070F6 | TSSOP20 | 32 КБ | 6 КБ | 17 |
| STM32F070RB | LQFP64 | 128 КБ | 16 КБ | 51 |
STM32F071 — Cortex-M0, до 48 МГц
| Микроконтроллер | Корпус | Флеш-память | ОЗУ | Линий ввода-вывода |
|---|---|---|---|---|
| STM32F071C8, STM32F071CB | LQFP48 | 64 КБ / 128 КБ | 16 КБ | 37 |
| STM32F071C8, STM32F071CB | UFQFPN48 | 64 КБ / 128 КБ | 16 КБ | 37 |
| STM32F071CB | WLCSP49 | 128 КБ | 16 КБ | 37 |
| STM32F071RB | LQFP64 | 128 КБ | 16 КБ | 51 |
| STM32F071V8, STM32F071VB | UFBGA100 | 64 КБ / 128 КБ | 16 КБ | 87 |
| STM32F071V8, STM32F071VB | LQFP100 | 64 КБ / 128 КБ | 16 КБ | 87 |
STM32F072 — Cortex-M0, до 48 МГц
| Микроконтроллер | Корпус | Флеш-память | ОЗУ | Линий ввода-вывода |
|---|---|---|---|---|
| STM32F072C8, STM32F072CB | LQFP48 | 64 КБ / 128 КБ | 16 КБ | 37 |
| STM32F072C8, STM32F072CB | UFQFPN48 | 64 КБ / 128 КБ | 16 КБ | 37 |
| STM32F072CB | WLCSP49 | 128 КБ | 16 КБ | 37 |
| STM32F072R8, STM32F072RB | LQFP64 | 64 КБ / 128 КБ | 16 КБ | 51 |
| STM32F072RBHx | UFBGA64 | 128 КБ | 16 КБ | 51 |
| STM32F072RBIx | UFBGA64 | 128 КБ | 16 КБ | 51 |
| STM32F072V8, STM32F072VB | UFBGA100 | 64 КБ / 128 КБ | 16 КБ | 87 |
| STM32F072V8, STM32F072VB | LQFP100 | 64 КБ / 128 КБ | 16 КБ | 87 |
STM32F078 — Cortex-M0, до 48 МГц
| Микроконтроллер | Корпус | Флеш-память | ОЗУ | Линий ввода-вывода |
|---|---|---|---|---|
| STM32F078CB | LQFP48 | 128 КБ | 16 КБ | 36 |
| STM32F078CB | UFQFPN48 | 128 КБ | 16 КБ | 36 |
| STM32F078CB | WLCSP49 | 128 КБ | 16 КБ | 36 |
| STM32F078RB | UFBGA64 | 128 КБ | 16 КБ | 50 |
| STM32F078RB | LQFP64 | 128 КБ | 16 КБ | 50 |
| STM32F078VB | UFBGA100 | 128 КБ | 16 КБ | 86 |
| STM32F078VB | LQFP100 | 128 КБ | 16 КБ | 86 |
STM32F091 — Cortex-M0, до 48 МГц
| Микроконтроллер | Корпус | Флеш-память | ОЗУ | Линий ввода-вывода |
|---|---|---|---|---|
| STM32F091CB, STM32F091CC | LQFP48 | 128 КБ / 256 КБ | 32 КБ | 38 |
| STM32F091CB, STM32F091CC | UFQFPN48 | 128 КБ / 256 КБ | 32 КБ | 38 |
| STM32F091RB, STM32F091RC | LQFP64 | 128 КБ / 256 КБ | 32 КБ | 52 |
| STM32F091RC | UFBGA64 | 256 КБ | 32 КБ | 52 |
| STM32F091RC | WLCSP64 | 256 КБ | 32 КБ | 52 |
| STM32F091VB, STM32F091VC | LQFP100 | 128 КБ / 256 КБ | 32 КБ | 88 |
| STM32F091VC | UFBGA100 | 256 КБ | 32 КБ | 88 |
STM32F098 — Cortex-M0, до 48 МГц
| Микроконтроллер | Корпус | Флеш-память | ОЗУ | Линий ввода-вывода |
|---|---|---|---|---|
| STM32F098CC | LQFP48 | 256 КБ | 32 КБ | 37 |
| STM32F098CC | UFQFPN48 | 256 КБ | 32 КБ | 37 |
| STM32F098RC | UFBGA64 | 256 КБ | 32 КБ | 51 |
| STM32F098RC | LQFP64 | 256 КБ | 32 КБ | 51 |
| STM32F098RC | WLCSP64 | 256 КБ | 32 КБ | 51 |
| STM32F098VC | UFBGA100 | 256 КБ | 32 КБ | 87 |
| STM32F098VC | LQFP100 | 256 КБ | 32 КБ | 87 |
Перед разводкой платы сверяйте выводы с даташитом своего исполнения: в нём указаны допустимые напряжения на выводах (толерантные к 5 В помечены FT), токи и номиналы внешних компонентов.
Частые вопросы
Чем STM32F030 отличается от STM32F031?
STM32F030 и STM32F070 — линейка Value Line, их описывает отдельный reference manual RM0360. По данным ST у STM32F030 нет I²S, который есть у STM32F031. У STM32F070 есть USB, но генератора HSI48 из RM0091 у него нет: системную частоту дают только HSI 8 МГц, HSE и PLL.
Что означает цифра 8 в STM32F038, F048, F058, F078 и F098?
Это подсемейство STM32F0x8 без встроенного стабилизатора ядра. По RM0091 ему нужно питание VDD 1,8 В ± 8 % и аналоговое VDDA от 1,65 до 3,6 В, тогда как STM32F0x1 и F0x2 сами получают 1,8 В для ядра и работают от 2,0–3,6 В.
Как STM32F042 и STM32F072 работают с USB без кварца?
У STM32F04x, F07x и F09x есть RC-генератор HSI48 на 48 МГц и блок CRS. По RM0091 CRS подстраивает частоту HSI48 по пакетам начала кадра (SOF), которые хост USB посылает каждую миллисекунду, поэтому USB получает точные 48 МГц без внешнего кварца. Без подстройки HSI48 откалиброван на заводе с точностью около 3 % при 25 °C.
Как у STM32F0 назначить вывод периферии?
Линию порта переводят в режим альтернативной функции регистром GPIOx_MODER, а номер функции записывают в GPIOx_AFRL (линии 0–7) или GPIOx_AFRH (линии 8–15). В данных ST у семейства F0 используются номера от AF0 до AF7; номер каждого сигнала указан в таблице «Периферия и её выводы» на странице микроконтроллера.
Что такое ремап PA11 и PA12 у STM32F042?
В 20- и 28-выводных корпусах STM32F04x и STM32F070x6 на одни и те же выводы выходят либо PA9 и PA10, либо PA11 и PA12 (линии USB). Пару выбирает бит PA11_PA12_RMP регистра SYSCFG_CFGR1: 0 — PA9/PA10, 1 — PA11/PA12 (RM0091 и RM0360). В атласе у такого вывода два имени — и на схеме корпуса, и в таблице выводов.
Смотрите также
- STM32Распиновки по корпусам, альтернативные функции, похожие по выводам МК
- STM32G0Cortex-M0+, до 64 МГц: G030–G0B0 Value line, G031–G0C1 — линейки и распиновки
- STM32F1Cortex-M3: F100, F101, F102, F103, F105/107 — линейки и распиновки
- Тактирование STM32PLL под нужную частоту, шины, флеш-память, регистры RCC и код
- I2C_TIMINGR STM32PRESC, SCLL, SCLH, SDADEL и SCLDEL по частоте I2CCLK и фронтам
- Таймер AVR и STM32Предделитель, OCRnA, PSC и ARR под частоту
- JTAG и SWDARM JTAG 20, Cortex Debug 10, STDC14, ST-LINK