Перейти к содержанию

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 LineCortex-M0, до 48 МГц16 КБ – 256 КБ4 КБ – 32 КБLQFP32, LQFP48, LQFP64, TSSOP20—
STM32F031Cortex-M0, до 48 МГц16 КБ – 32 КБ4 КБLQFP32, LQFP48, TSSOP20, UFQFPN28, UFQFPN32, WLCSP25I²S
STM32F038Cortex-M0, до 48 МГц32 КБ4 КБLQFP48, TSSOP20, UFQFPN28, UFQFPN32, WLCSP25I²S
STM32F042Cortex-M0, до 48 МГц16 КБ – 32 КБ6 КБLQFP32, LQFP48, TSSOP20, UFQFPN28, UFQFPN32, UFQFPN48, WLCSP36USB, CAN, I²S, HDMI-CEC, TSC
STM32F048Cortex-M0, до 48 МГц32 КБ6 КБUFQFPN28, UFQFPN48, WLCSP36USB, I²S, HDMI-CEC, TSC
STM32F051Cortex-M0, до 48 МГц16 КБ – 64 КБ8 КБLQFP32, LQFP48, LQFP64, UFBGA64, UFQFPN32, UFQFPN48, WLCSP36DAC, COMP, I²S, HDMI-CEC, TSC
STM32F058Cortex-M0, до 48 МГц64 КБ8 КБLQFP64, UFBGA64, UFQFPN48, WLCSP36DAC, COMP, I²S, HDMI-CEC, TSC
STM32F070 Value LineCortex-M0, до 48 МГц32 КБ – 128 КБ6 КБ – 16 КБLQFP48, LQFP64, TSSOP20USB
STM32F071Cortex-M0, до 48 МГц64 КБ – 128 КБ16 КБLQFP48, LQFP64, LQFP100, UFBGA100, UFQFPN48, WLCSP49DAC, COMP, I²S, HDMI-CEC, TSC
STM32F072Cortex-M0, до 48 МГц64 КБ – 128 КБ16 КБLQFP48, LQFP64, LQFP100, UFBGA64, UFBGA100, UFQFPN48, WLCSP49USB, CAN, DAC, COMP, I²S, HDMI-CEC, TSC
STM32F078Cortex-M0, до 48 МГц128 КБ16 КБLQFP48, LQFP64, LQFP100, UFBGA64, UFBGA100, UFQFPN48, WLCSP49USB, DAC, COMP, I²S, HDMI-CEC, TSC
STM32F091Cortex-M0, до 48 МГц128 КБ – 256 КБ32 КБLQFP48, LQFP64, LQFP100, UFBGA64, UFBGA100, UFQFPN48, WLCSP64CAN, DAC, COMP, I²S, HDMI-CEC, TSC
STM32F098Cortex-M0, до 48 МГц256 КБ32 КБLQFP48, LQFP64, LQFP100, UFBGA64, UFBGA100, UFQFPN48, WLCSP64CAN, 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 МГц

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32F030C6LQFP4832 КБ4 КБ39
STM32F030C8LQFP4864 КБ8 КБ39
STM32F030CCLQFP48256 КБ32 КБ37
STM32F030F4TSSOP2016 КБ4 КБ15
STM32F030K6LQFP3232 КБ4 КБ25
STM32F030R8LQFP6464 КБ8 КБ55
STM32F030RCLQFP64256 КБ32 КБ51

STM32F031 — Cortex-M0, до 48 МГц

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32F031C4, STM32F031C6LQFP4816 КБ / 32 КБ4 КБ39
STM32F031E6WLCSP2532 КБ4 КБ20
STM32F031F4, STM32F031F6TSSOP2016 КБ / 32 КБ4 КБ15
STM32F031G4, STM32F031G6UFQFPN2816 КБ / 32 КБ4 КБ23
STM32F031K4, STM32F031K6UFQFPN3216 КБ / 32 КБ4 КБ27
STM32F031K6LQFP3232 КБ4 КБ25

STM32F038 — Cortex-M0, до 48 МГц

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32F038C6LQFP4832 КБ4 КБ38
STM32F038E6WLCSP2532 КБ4 КБ20
STM32F038F6TSSOP2032 КБ4 КБ14
STM32F038G6UFQFPN2832 КБ4 КБ22
STM32F038K6UFQFPN3232 КБ4 КБ26

STM32F042 — Cortex-M0, до 48 МГц

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32F042C4, STM32F042C6LQFP4816 КБ / 32 КБ6 КБ38
STM32F042C4, STM32F042C6UFQFPN4816 КБ / 32 КБ6 КБ38
STM32F042F4TSSOP2016 КБ6 КБ18
STM32F042F6TSSOP2032 КБ6 КБ18
STM32F042G4, STM32F042G6UFQFPN2816 КБ / 32 КБ6 КБ25
STM32F042K4, STM32F042K6LQFP3216 КБ / 32 КБ6 КБ26
STM32F042K4, STM32F042K6UFQFPN3216 КБ / 32 КБ6 КБ28
STM32F042T6WLCSP3632 КБ6 КБ30

STM32F048 — Cortex-M0, до 48 МГц

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32F048C6UFQFPN4832 КБ6 КБ37
STM32F048G6UFQFPN2832 КБ6 КБ24
STM32F048T6WLCSP3632 КБ6 КБ29

STM32F051 — Cortex-M0, до 48 МГц

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32F051C4LQFP4816 КБ8 КБ39
STM32F051C4UFQFPN4816 КБ8 КБ39
STM32F051C6LQFP4832 КБ8 КБ39
STM32F051C6UFQFPN4832 КБ8 КБ39
STM32F051C8LQFP4864 КБ8 КБ39
STM32F051C8UFQFPN4864 КБ8 КБ39
STM32F051K4LQFP3216 КБ8 КБ25
STM32F051K4UFQFPN3216 КБ8 КБ27
STM32F051K6LQFP3232 КБ8 КБ25
STM32F051K6UFQFPN3232 КБ8 КБ27
STM32F051K8LQFP3264 КБ8 КБ25
STM32F051K8UFQFPN3264 КБ8 КБ27
STM32F051R4LQFP6416 КБ8 КБ55
STM32F051R6LQFP6432 КБ8 КБ55
STM32F051R8UFBGA6464 КБ8 КБ55
STM32F051R8LQFP6464 КБ8 КБ55
STM32F051T8WLCSP3664 КБ8 КБ29

STM32F058 — Cortex-M0, до 48 МГц

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32F058C8UFQFPN4864 КБ8 КБ38
STM32F058R8UFBGA6464 КБ8 КБ54
STM32F058R8LQFP6464 КБ8 КБ54
STM32F058T8WLCSP3664 КБ8 КБ28

STM32F070 Value Line — Cortex-M0, до 48 МГц

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32F070C6LQFP4832 КБ6 КБ37
STM32F070CBLQFP48128 КБ16 КБ37
STM32F070F6TSSOP2032 КБ6 КБ17
STM32F070RBLQFP64128 КБ16 КБ51

STM32F071 — Cortex-M0, до 48 МГц

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32F071C8, STM32F071CBLQFP4864 КБ / 128 КБ16 КБ37
STM32F071C8, STM32F071CBUFQFPN4864 КБ / 128 КБ16 КБ37
STM32F071CBWLCSP49128 КБ16 КБ37
STM32F071RBLQFP64128 КБ16 КБ51
STM32F071V8, STM32F071VBUFBGA10064 КБ / 128 КБ16 КБ87
STM32F071V8, STM32F071VBLQFP10064 КБ / 128 КБ16 КБ87

STM32F072 — Cortex-M0, до 48 МГц

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32F072C8, STM32F072CBLQFP4864 КБ / 128 КБ16 КБ37
STM32F072C8, STM32F072CBUFQFPN4864 КБ / 128 КБ16 КБ37
STM32F072CBWLCSP49128 КБ16 КБ37
STM32F072R8, STM32F072RBLQFP6464 КБ / 128 КБ16 КБ51
STM32F072RBHxUFBGA64128 КБ16 КБ51
STM32F072RBIxUFBGA64128 КБ16 КБ51
STM32F072V8, STM32F072VBUFBGA10064 КБ / 128 КБ16 КБ87
STM32F072V8, STM32F072VBLQFP10064 КБ / 128 КБ16 КБ87

STM32F078 — Cortex-M0, до 48 МГц

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32F078CBLQFP48128 КБ16 КБ36
STM32F078CBUFQFPN48128 КБ16 КБ36
STM32F078CBWLCSP49128 КБ16 КБ36
STM32F078RBUFBGA64128 КБ16 КБ50
STM32F078RBLQFP64128 КБ16 КБ50
STM32F078VBUFBGA100128 КБ16 КБ86
STM32F078VBLQFP100128 КБ16 КБ86

STM32F091 — Cortex-M0, до 48 МГц

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32F091CB, STM32F091CCLQFP48128 КБ / 256 КБ32 КБ38
STM32F091CB, STM32F091CCUFQFPN48128 КБ / 256 КБ32 КБ38
STM32F091RB, STM32F091RCLQFP64128 КБ / 256 КБ32 КБ52
STM32F091RCUFBGA64256 КБ32 КБ52
STM32F091RCWLCSP64256 КБ32 КБ52
STM32F091VB, STM32F091VCLQFP100128 КБ / 256 КБ32 КБ88
STM32F091VCUFBGA100256 КБ32 КБ88

STM32F098 — Cortex-M0, до 48 МГц

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32F098CCLQFP48256 КБ32 КБ37
STM32F098CCUFQFPN48256 КБ32 КБ37
STM32F098RCUFBGA64256 КБ32 КБ51
STM32F098RCLQFP64256 КБ32 КБ51
STM32F098RCWLCSP64256 КБ32 КБ51
STM32F098VCUFBGA100256 КБ32 КБ87
STM32F098VCLQFP100256 КБ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). В атласе у такого вывода два имени — и на схеме корпуса, и в таблице выводов.