STM32F3: микроконтроллеры на Cortex-M4 с аналоговой периферией
STM32F3 — семейство STM32 на ядре Cortex-M4 с FPU и частотой до 72 МГц с развитой аналоговой частью: несколько АЦП, компараторы и операционные усилители, у STM32F334 — таймер высокого разрешения HRTIM, у STM32F373 — 16-битные сигма-дельта АЦП. Здесь — сравнение линеек и страницы с распиновкой и номерами альтернативных функций каждого микроконтроллера в каждом корпусе.
STM32F3 — семейство 32-битных микроконтроллеров STMicroelectronics на ядре Arm Cortex-M4 с блоком вычислений с плавающей точкой (RM0316, PM0214) и частотой до 72 МГц. От STM32F1 и F4 его отличает аналоговая часть: несколько АЦП, ЦАП, быстрые компараторы и операционные усилители прямо на кристалле. В разделе 53 страницы для 93 исполнений в 10 корпусах, 10 линеек: у каждого сочетания микроконтроллера и корпуса — своя страница со схемой выводов и номерами альтернативных функций.
Линейки STM32F3
Линейки отличаются набором периферии; в пределах линейки — объёмом памяти и корпусом. Значения в таблице собраны из записей базы ST: частота — максимальная для линейки, память — от наименьшего до наибольшего исполнения.
| Линейка | Ядро, частота | Флеш-память | ОЗУ | Корпуса | Чем выделяется |
|---|---|---|---|---|---|
| STM32F301 | Cortex-M4, до 72 МГц | 32 КБ – 64 КБ | 16 КБ | LQFP32, LQFP48, LQFP64, UFQFPN32, WLCSP49 | DAC, COMP, I²S, TSC |
| STM32F302 | Cortex-M4, до 72 МГц | 32 КБ – 512 КБ | 16 КБ – 64 КБ | LQFP48, LQFP64, LQFP100, LQFP144, UFBGA100, UFQFPN32, WLCSP49, WLCSP100 | USB, CAN, FMC, DAC, COMP, I²S, TSC |
| STM32F303 | Cortex-M4, до 72 МГц | 32 КБ – 512 КБ | 12 КБ – 64 КБ | LQFP32, LQFP48, LQFP64, LQFP100, LQFP144, UFBGA100, UFQFPN32, WLCSP49, WLCSP100 | USB, CAN, FMC, DAC, COMP, I²S, TSC |
| STM32F318 | Cortex-M4, до 72 МГц | 64 КБ | 16 КБ | LQFP48, UFQFPN32, WLCSP49 | DAC, COMP, I²S, TSC |
| STM32F328 | Cortex-M4, до 72 МГц | 64 КБ | 12 КБ | LQFP48 | CAN, DAC, COMP, TSC |
| STM32F334 | Cortex-M4, до 72 МГц | 16 КБ – 64 КБ | 12 КБ | LQFP32, LQFP48, LQFP64, UFQFPN32, WLCSP49 | CAN, DAC, COMP, TSC |
| STM32F358 | Cortex-M4, до 72 МГц | 256 КБ | 40 КБ | LQFP48, LQFP64, LQFP100 | CAN, DAC, COMP, I²S, TSC |
| STM32F373 | Cortex-M4, до 72 МГц | 64 КБ – 256 КБ | 16 КБ – 32 КБ | LQFP48, LQFP64, LQFP100, UFBGA100 | USB, CAN, DAC, COMP, I²S, HDMI-CEC, TSC |
| STM32F378 | Cortex-M4, до 72 МГц | 256 КБ | 32 КБ | LQFP48, LQFP64, LQFP100, UFBGA100, WLCSP66 | CAN, DAC, COMP, I²S, HDMI-CEC, TSC |
| STM32F398 | Cortex-M4, до 72 МГц | 512 КБ | 64 КБ | LQFP100 | CAN, FMC, DAC, COMP, I²S, TSC |
У линеек свои reference manual: RM0316 описывает STM32F303, F328, F358 и F398, RM0365 — STM32F302, RM0366 — STM32F301 и F318, RM0364 — STM32F334, RM0313 — STM32F373 и F378. По их таблицам 1:
- STM32F303xB/C — четыре АЦП (ADC1–ADC4), семь компараторов, четыре операционных усилителя, таймеры TIM1 и TIM8, USB-устройство Full Speed; у xD/E к этому добавляются TIM20, I2C3 и SPI4.
- STM32F303x6/8 — два АЦП, компараторы COMP2, COMP4 и COMP6, один ОУ, только TIM1 и без USB.
- STM32F302 — два АЦП (у x6/8 один), до четырёх компараторов, до двух ОУ, один TIM1; USB есть у всей линейки.
- STM32F334 — таймер высокого разрешения HRTIM для импульсных источников питания (RM0364, разд. 21).
- STM32F373 — три 16-битных сигма-дельта АЦП SDADC с дифференциальными входами и выбираемым усилением (RM0313, разд. 13).
Версии F3x8 — STM32F318, F328, F358, F378 и F398 — повторяют F301, F303 и F373, но без внутреннего стабилизатора: напряжение 1,8 В ± 8 % подаётся прямо на цифровую часть (RM0366, RM0316, RM0313, разделы PWR). У F328, F358 и F398 нет схем POR, PDR и PVD — сброс при включении приходит на вывод NPOR — и режима Standby (RM0316).
Тактирование и питание
Системную частоту STM32F3 дают внутренний генератор HSI на 8 МГц, кварцевый HSE или PLL; выход PLL настраивается в пределах 16–72 МГц. Шина APB2 работает на полной частоте 72 МГц, APB1 — не выше 36 МГц. Флеш-память читается без тактов ожидания до 24 МГц, с одним — до 48 МГц и с двумя — до 72 МГц (RM0316, разделы RCC и FLASH).
STM32F303 питается от 2,0–3,6 В, аналоговое питание VDDA при работе ОУ и ЦАП — от 2,4 до 3,6 В. У STM32F303 есть CCM SRAM — ОЗУ, связанное с ядром: 8 КБ у F303xB/C и F358, 4 КБ у F303x6/8 и F328, 16 КБ у F303xD/E (RM0316, раздел SYSCFG). PLL, делители шин, такты ожидания и код инициализации для STM32F3 подбирает калькулятор тактирования STM32, делители таймеров и скорость UART от полученных частот — калькулятор таймера и калькулятор UART.
Выводы STM32F3: альтернативные функции и загрузка
Как у STM32F4, на каждой линии порта стоит мультиплексор альтернативных функций: режим задаёт GPIOx_MODER, номер функции AF0–AF15 — регистры GPIOx_AFRL (линии 0–7) и GPIOx_AFRH (линии 8–15); после сброса выбрана AF0 (RM0316, раздел GPIO). В данных ST у STM32F3 встречаются номера до AF14. Аналоговые входы АЦП, ОУ и компараторов номера AF не имеют: они подключаются настройкой самой периферии.
Режим загрузки задают вывод BOOT0 и бит nBOOT1 в байте опций: при BOOT0 = 0 запускается флеш-память, при BOOT0 = 1 — системная память с загрузчиком (nBOOT1 = 1) или ОЗУ (nBOOT1 = 0) (RM0316, табл. 6). Загрузчик STM32F303 работает через USART1, USART2 или USB DFU (у исполнений с USB), у версий без стабилизатора — через USART или I²C.
Все STM32F3 по корпусам
STM32F301 — Cortex-M4, до 72 МГц
| Микроконтроллер | Корпус | Флеш-память | ОЗУ | Линий ввода-вывода |
|---|---|---|---|---|
| STM32F301C6, STM32F301C8 | LQFP48 | 32 КБ / 64 КБ | 16 КБ | 37 |
| STM32F301C8 | WLCSP49 | 64 КБ | 16 КБ | 37 |
| STM32F301K6, STM32F301K8 | LQFP32 | 32 КБ / 64 КБ | 16 КБ | 25 |
| STM32F301K6, STM32F301K8 | UFQFPN32 | 32 КБ / 64 КБ | 16 КБ | 24 |
| STM32F301R6, STM32F301R8 | LQFP64 | 32 КБ / 64 КБ | 16 КБ | 51 |
STM32F302 — Cortex-M4, до 72 МГц
| Микроконтроллер | Корпус | Флеш-память | ОЗУ | Линий ввода-вывода |
|---|---|---|---|---|
| STM32F302C6, STM32F302C8 | LQFP48 | 32 КБ / 64 КБ | 16 КБ | 37 |
| STM32F302C8 | WLCSP49 | 64 КБ | 16 КБ | 37 |
| STM32F302CB, STM32F302CC | LQFP48 | 128 КБ / 256 КБ | 32 КБ / 40 КБ | 37 |
| STM32F302K6, STM32F302K8 | UFQFPN32 | 32 КБ / 64 КБ | 16 КБ | 24 |
| STM32F302R6, STM32F302R8 | LQFP64 | 32 КБ / 64 КБ | 16 КБ | 51 |
| STM32F302RB, STM32F302RC | LQFP64 | 128 КБ / 256 КБ | 32 КБ / 40 КБ | 52 |
| STM32F302RD, STM32F302RE | LQFP64 | 384 КБ / 512 КБ | 64 КБ | 51 |
| STM32F302VB, STM32F302VC | LQFP100 | 128 КБ / 256 КБ | 32 КБ / 40 КБ | 87 |
| STM32F302VC | WLCSP100 | 256 КБ | 40 КБ | 78 |
| STM32F302VD, STM32F302VE | UFBGA100 | 384 КБ / 512 КБ | 64 КБ | 86 |
| STM32F302VD, STM32F302VE | LQFP100 | 384 КБ / 512 КБ | 64 КБ | 86 |
| STM32F302ZD, STM32F302ZE | LQFP144 | 384 КБ / 512 КБ | 64 КБ | 115 |
STM32F303 — Cortex-M4, до 72 МГц
| Микроконтроллер | Корпус | Флеш-память | ОЗУ | Линий ввода-вывода |
|---|---|---|---|---|
| STM32F303C6, STM32F303C8 | LQFP48 | 32 КБ / 64 КБ | 12 КБ | 37 |
| STM32F303C8 | WLCSP49 | 64 КБ | 12 КБ | 38 |
| STM32F303CB, STM32F303CC | LQFP48 | 128 КБ / 256 КБ | 32 КБ / 40 КБ | 37 |
| STM32F303K6, STM32F303K8 | LQFP32 | 32 КБ / 64 КБ | 12 КБ | 25 |
| STM32F303K6, STM32F303K8 | UFQFPN32 | 32 КБ / 64 КБ | 12 КБ | 24 |
| STM32F303R6, STM32F303R8 | LQFP64 | 32 КБ / 64 КБ | 12 КБ | 51 |
| STM32F303RB, STM32F303RC | LQFP64 | 128 КБ / 256 КБ | 32 КБ / 40 КБ | 52 |
| STM32F303RD, STM32F303RE | LQFP64 | 384 КБ / 512 КБ | 64 КБ | 51 |
| STM32F303VB, STM32F303VC | LQFP100 | 128 КБ / 256 КБ | 32 КБ / 40 КБ | 87 |
| STM32F303VC | WLCSP100 | 256 КБ | 40 КБ | 78 |
| STM32F303VD, STM32F303VE | UFBGA100 | 384 КБ / 512 КБ | 64 КБ | 86 |
| STM32F303VD, STM32F303VE | LQFP100 | 384 КБ / 512 КБ | 64 КБ | 86 |
| STM32F303VE | WLCSP100 | 512 КБ | 64 КБ | 78 |
| STM32F303ZD, STM32F303ZE | LQFP144 | 384 КБ / 512 КБ | 64 КБ | 115 |
STM32F318 — Cortex-M4, до 72 МГц
| Микроконтроллер | Корпус | Флеш-память | ОЗУ | Линий ввода-вывода |
|---|---|---|---|---|
| STM32F318C8 | LQFP48 | 64 КБ | 16 КБ | 36 |
| STM32F318C8 | WLCSP49 | 64 КБ | 16 КБ | 36 |
| STM32F318K8 | UFQFPN32 | 64 КБ | 16 КБ | 23 |
STM32F328 — Cortex-M4, до 72 МГц
| Микроконтроллер | Корпус | Флеш-память | ОЗУ | Линий ввода-вывода |
|---|---|---|---|---|
| STM32F328C8 | LQFP48 | 64 КБ | 12 КБ | 36 |
STM32F334 — Cortex-M4, до 72 МГц
| Микроконтроллер | Корпус | Флеш-память | ОЗУ | Линий ввода-вывода |
|---|---|---|---|---|
| STM32F334C4, STM32F334C6, STM32F334C8 | LQFP48 | 16 КБ / 32 КБ / 64 КБ | 12 КБ | 37 |
| STM32F334C8 | WLCSP49 | 64 КБ | 12 КБ | 38 |
| STM32F334K4, STM32F334K6, STM32F334K8 | LQFP32 | 16 КБ / 32 КБ / 64 КБ | 12 КБ | 25 |
| STM32F334K4, STM32F334K6, STM32F334K8 | UFQFPN32 | 16 КБ / 32 КБ / 64 КБ | 12 КБ | 24 |
| STM32F334R6, STM32F334R8 | LQFP64 | 32 КБ / 64 КБ | 12 КБ | 51 |
STM32F358 — Cortex-M4, до 72 МГц
| Микроконтроллер | Корпус | Флеш-память | ОЗУ | Линий ввода-вывода |
|---|---|---|---|---|
| STM32F358CC | LQFP48 | 256 КБ | 40 КБ | 36 |
| STM32F358RC | LQFP64 | 256 КБ | 40 КБ | 51 |
| STM32F358VC | LQFP100 | 256 КБ | 40 КБ | 86 |
STM32F373 — Cortex-M4, до 72 МГц
| Микроконтроллер | Корпус | Флеш-память | ОЗУ | Линий ввода-вывода |
|---|---|---|---|---|
| STM32F373C8, STM32F373CB, STM32F373CC | LQFP48 | 64 КБ / 128 КБ / 256 КБ | 16 КБ / 24 КБ / 32 КБ | 37 |
| STM32F373R8, STM32F373RB, STM32F373RC | LQFP64 | 64 КБ / 128 КБ / 256 КБ | 16 КБ / 24 КБ / 32 КБ | 52 |
| STM32F373V8, STM32F373VB, STM32F373VC | UFBGA100 | 64 КБ / 128 КБ / 256 КБ | 16 КБ / 24 КБ / 32 КБ | 84 |
| STM32F373V8, STM32F373VB, STM32F373VC | LQFP100 | 64 КБ / 128 КБ / 256 КБ | 16 КБ / 24 КБ / 32 КБ | 84 |
STM32F378 — Cortex-M4, до 72 МГц
| Микроконтроллер | Корпус | Флеш-память | ОЗУ | Линий ввода-вывода |
|---|---|---|---|---|
| STM32F378CC | LQFP48 | 256 КБ | 32 КБ | 36 |
| STM32F378RC | LQFP64 | 256 КБ | 32 КБ | 51 |
| STM32F378RC | WLCSP66 | 256 КБ | 32 КБ | 51 |
| STM32F378VC | UFBGA100 | 256 КБ | 32 КБ | 83 |
| STM32F378VC | LQFP100 | 256 КБ | 32 КБ | 83 |
STM32F398 — Cortex-M4, до 72 МГц
| Микроконтроллер | Корпус | Флеш-память | ОЗУ | Линий ввода-вывода |
|---|---|---|---|---|
| STM32F398VE | LQFP100 | 512 КБ | 64 КБ | 85 |
Перед разводкой платы сверяйте выводы с даташитом своего исполнения: в нём указаны допустимые напряжения на выводах (толерантные к 5 В помечены FT), токи и номиналы внешних компонентов.
Частые вопросы
Чем STM32F303 отличается от STM32F302?
Аналоговой частью и таймерами. По таблицам 1 RM0316 и RM0365 у STM32F303xB/C четыре АЦП (ADC1–ADC4), семь компараторов, четыре операционных усилителя и два таймера расширенного управления TIM1 и TIM8; у STM32F302xB/C — два АЦП, четыре компаратора (COMP1, COMP2, COMP4, COMP6), два ОУ и один TIM1. USB-устройство Full Speed есть у обеих линеек.
Что такое STM32F318, F328, F358, F378 и F398?
Версии STM32F301, F303 и F373 без внутреннего стабилизатора: они питаются от 1,8 В ± 8 % (RM0366, RM0316, RM0313). У STM32F328, F358 и F398 по RM0316 нет схем сброса по питанию POR, PDR и детектора PVD — сброс при включении подают на вывод NPOR, — недоступен режим Standby, а встроенный загрузчик работает через USART или I²C вместо USART и USB.
Зачем у STM32F334 таймер HRTIM?
HRTIM — таймер высокого разрешения: он формирует до 10 цифровых сигналов с очень точными временными интервалами и предназначен прежде всего для управления импульсными источниками питания и освещением (RM0364, раздел 21). Таймер связан со встроенными АЦП и ЦАП, умеет измерять интервалы и отрабатывать аварийные входы для безопасного отключения.
Чем STM32F373 отличается от остальных STM32F3?
У STM32F373 и F378 есть три сигма-дельта АЦП SDADC с разрешением 16 бит и девятью дифференциальными каналами с выбираемым усилением: до 50 тыс. отсчётов в секунду при одном канале и до 16,6 тыс. при опросе нескольких (RM0313, раздел 13).
Как запустить встроенный загрузчик STM32F3?
Вывод BOOT0 при сбросе подтягивают к единице, а бит nBOOT1 в байте опций оставляют равным 1 — тогда стартует системная память с загрузчиком. При BOOT0 = 0 запускается флеш-память, при BOOT0 = 1 и nBOOT1 = 0 — ОЗУ (RM0316, табл. 6). Загрузчик STM32F303 работает через USART1, USART2 или — у исполнений с USB — USB DFU.
Смотрите также
- STM32Распиновки по корпусам, альтернативные функции, похожие по выводам МК
- Тактирование STM32PLL под нужную частоту, шины, флеш-память, регистры RCC и код
- STM32F1Cortex-M3: F100, F101, F102, F103, F105/107 — линейки и распиновки
- STM32F4Cortex-M4 с FPU: от F401 и F411 до F429 и F469 — линейки и распиновки
- STM32G4Cortex-M4 с FPU, до 170 МГц: G431/G441, G471–G484, G491/G4A1 — линейки и распиновки
- Таймер AVR и STM32Предделитель, OCRnA, PSC и ARR под частоту
- Скорость UARTUBRR, BRR, TH1 и ошибка скорости
- CANCAN_H и CAN_L, терминаторы, кадр, арбитраж, ошибки, тайминг, MCP2515