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

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: частота — максимальная для линейки, память — от наименьшего до наибольшего исполнения.

ЛинейкаЯдро, частотаФлеш-памятьОЗУКорпусаЧем выделяется
STM32F301Cortex-M4, до 72 МГц32 КБ – 64 КБ16 КБLQFP32, LQFP48, LQFP64, UFQFPN32, WLCSP49DAC, COMP, I²S, TSC
STM32F302Cortex-M4, до 72 МГц32 КБ – 512 КБ16 КБ – 64 КБLQFP48, LQFP64, LQFP100, LQFP144, UFBGA100, UFQFPN32, WLCSP49, WLCSP100USB, CAN, FMC, DAC, COMP, I²S, TSC
STM32F303Cortex-M4, до 72 МГц32 КБ – 512 КБ12 КБ – 64 КБLQFP32, LQFP48, LQFP64, LQFP100, LQFP144, UFBGA100, UFQFPN32, WLCSP49, WLCSP100USB, CAN, FMC, DAC, COMP, I²S, TSC
STM32F318Cortex-M4, до 72 МГц64 КБ16 КБLQFP48, UFQFPN32, WLCSP49DAC, COMP, I²S, TSC
STM32F328Cortex-M4, до 72 МГц64 КБ12 КБLQFP48CAN, DAC, COMP, TSC
STM32F334Cortex-M4, до 72 МГц16 КБ – 64 КБ12 КБLQFP32, LQFP48, LQFP64, UFQFPN32, WLCSP49CAN, DAC, COMP, TSC
STM32F358Cortex-M4, до 72 МГц256 КБ40 КБLQFP48, LQFP64, LQFP100CAN, DAC, COMP, I²S, TSC
STM32F373Cortex-M4, до 72 МГц64 КБ – 256 КБ16 КБ – 32 КБLQFP48, LQFP64, LQFP100, UFBGA100USB, CAN, DAC, COMP, I²S, HDMI-CEC, TSC
STM32F378Cortex-M4, до 72 МГц256 КБ32 КБLQFP48, LQFP64, LQFP100, UFBGA100, WLCSP66CAN, DAC, COMP, I²S, HDMI-CEC, TSC
STM32F398Cortex-M4, до 72 МГц512 КБ64 КБLQFP100CAN, 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, STM32F301C8LQFP4832 КБ / 64 КБ16 КБ37
STM32F301C8WLCSP4964 КБ16 КБ37
STM32F301K6, STM32F301K8LQFP3232 КБ / 64 КБ16 КБ25
STM32F301K6, STM32F301K8UFQFPN3232 КБ / 64 КБ16 КБ24
STM32F301R6, STM32F301R8LQFP6432 КБ / 64 КБ16 КБ51

STM32F302 — Cortex-M4, до 72 МГц

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32F302C6, STM32F302C8LQFP4832 КБ / 64 КБ16 КБ37
STM32F302C8WLCSP4964 КБ16 КБ37
STM32F302CB, STM32F302CCLQFP48128 КБ / 256 КБ32 КБ / 40 КБ37
STM32F302K6, STM32F302K8UFQFPN3232 КБ / 64 КБ16 КБ24
STM32F302R6, STM32F302R8LQFP6432 КБ / 64 КБ16 КБ51
STM32F302RB, STM32F302RCLQFP64128 КБ / 256 КБ32 КБ / 40 КБ52
STM32F302RD, STM32F302RELQFP64384 КБ / 512 КБ64 КБ51
STM32F302VB, STM32F302VCLQFP100128 КБ / 256 КБ32 КБ / 40 КБ87
STM32F302VCWLCSP100256 КБ40 КБ78
STM32F302VD, STM32F302VEUFBGA100384 КБ / 512 КБ64 КБ86
STM32F302VD, STM32F302VELQFP100384 КБ / 512 КБ64 КБ86
STM32F302ZD, STM32F302ZELQFP144384 КБ / 512 КБ64 КБ115

STM32F303 — Cortex-M4, до 72 МГц

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32F303C6, STM32F303C8LQFP4832 КБ / 64 КБ12 КБ37
STM32F303C8WLCSP4964 КБ12 КБ38
STM32F303CB, STM32F303CCLQFP48128 КБ / 256 КБ32 КБ / 40 КБ37
STM32F303K6, STM32F303K8LQFP3232 КБ / 64 КБ12 КБ25
STM32F303K6, STM32F303K8UFQFPN3232 КБ / 64 КБ12 КБ24
STM32F303R6, STM32F303R8LQFP6432 КБ / 64 КБ12 КБ51
STM32F303RB, STM32F303RCLQFP64128 КБ / 256 КБ32 КБ / 40 КБ52
STM32F303RD, STM32F303RELQFP64384 КБ / 512 КБ64 КБ51
STM32F303VB, STM32F303VCLQFP100128 КБ / 256 КБ32 КБ / 40 КБ87
STM32F303VCWLCSP100256 КБ40 КБ78
STM32F303VD, STM32F303VEUFBGA100384 КБ / 512 КБ64 КБ86
STM32F303VD, STM32F303VELQFP100384 КБ / 512 КБ64 КБ86
STM32F303VEWLCSP100512 КБ64 КБ78
STM32F303ZD, STM32F303ZELQFP144384 КБ / 512 КБ64 КБ115

STM32F318 — Cortex-M4, до 72 МГц

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32F318C8LQFP4864 КБ16 КБ36
STM32F318C8WLCSP4964 КБ16 КБ36
STM32F318K8UFQFPN3264 КБ16 КБ23

STM32F328 — Cortex-M4, до 72 МГц

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32F328C8LQFP4864 КБ12 КБ36

STM32F334 — Cortex-M4, до 72 МГц

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32F334C4, STM32F334C6, STM32F334C8LQFP4816 КБ / 32 КБ / 64 КБ12 КБ37
STM32F334C8WLCSP4964 КБ12 КБ38
STM32F334K4, STM32F334K6, STM32F334K8LQFP3216 КБ / 32 КБ / 64 КБ12 КБ25
STM32F334K4, STM32F334K6, STM32F334K8UFQFPN3216 КБ / 32 КБ / 64 КБ12 КБ24
STM32F334R6, STM32F334R8LQFP6432 КБ / 64 КБ12 КБ51

STM32F358 — Cortex-M4, до 72 МГц

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32F358CCLQFP48256 КБ40 КБ36
STM32F358RCLQFP64256 КБ40 КБ51
STM32F358VCLQFP100256 КБ40 КБ86

STM32F373 — Cortex-M4, до 72 МГц

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32F373C8, STM32F373CB, STM32F373CCLQFP4864 КБ / 128 КБ / 256 КБ16 КБ / 24 КБ / 32 КБ37
STM32F373R8, STM32F373RB, STM32F373RCLQFP6464 КБ / 128 КБ / 256 КБ16 КБ / 24 КБ / 32 КБ52
STM32F373V8, STM32F373VB, STM32F373VCUFBGA10064 КБ / 128 КБ / 256 КБ16 КБ / 24 КБ / 32 КБ84
STM32F373V8, STM32F373VB, STM32F373VCLQFP10064 КБ / 128 КБ / 256 КБ16 КБ / 24 КБ / 32 КБ84

STM32F378 — Cortex-M4, до 72 МГц

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32F378CCLQFP48256 КБ32 КБ36
STM32F378RCLQFP64256 КБ32 КБ51
STM32F378RCWLCSP66256 КБ32 КБ51
STM32F378VCUFBGA100256 КБ32 КБ83
STM32F378VCLQFP100256 КБ32 КБ83

STM32F398 — Cortex-M4, до 72 МГц

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32F398VELQFP100512 КБ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.