
Микроконтроллеры STM32F102 и STM32F103 относятся к семейству STM32F1, основанному на архитектуре ARM Cortex-M3, но обладают разной специализацией и функциональными возможностями. STM32F102 ориентирован на использование в качестве USB-периферии с минимальным набором функций, тогда как STM32F103 предлагает расширенный набор периферийных интерфейсов и более высокую производительность.
STM32F102 выпускается только в вариантах с тактовой частотой до 48 МГц, в то время как STM32F103 достигает до 72 МГц. Это напрямую влияет на пропускную способность и отклик системы в задачах с интенсивными вычислениями. Кроме того, у STM32F103 более гибкая система управления питанием и поддержки режимов энергосбережения.
Один из ключевых отличий – поддержка интерфейсов. В STM32F102 реализован только один интерфейс USB Full-Speed, без CAN и без поддержки Ethernet. В STM32F103 доступны CAN, SPI, I2C, USART в большем количестве, а также опционально присутствует Ethernet (в некоторых подсемействах, например, STM32F107).
По объёму флэш-памяти и ОЗУ STM32F103 также выигрывает: в максимальной конфигурации он предлагает до 1 МБ флэш-памяти и до 96 КБ SRAM, в то время как STM32F102 ограничен 64 КБ флэша и 10 КБ SRAM. Это делает STM32F103 предпочтительным выбором для задач с большим объёмом кода и требовательным к оперативной памяти.
Если задача ограничивается простыми функциями с USB-подключением и минимальными требованиями к ресурсам, STM32F102 – экономичное решение. Однако при необходимости в множестве периферийных устройств, высокой скорости работы и масштабируемости, рекомендуется использовать STM32F103.
Отличия микроконтроллеров STM32F102 и STM32F103

Микроконтроллеры STM32F102 и STM32F103 относятся к семейству STM32F1, но ориентированы на разные применения. Ниже представлены ключевые различия, которые важно учитывать при выборе.
- Производительность ядра: STM32F103 использует ядро ARM Cortex-M3 с частотой до 72 МГц, тогда как STM32F102 ограничен 48 МГц. Это напрямую влияет на обработку данных и отклик в реальном времени.
- Интерфейсы: В STM32F103 доступно больше периферийных интерфейсов: до 3 USART, до 2 I2C, до 3 SPI. STM32F102 поддерживает максимум 1 USART, 1 I2C и 1 SPI, что ограничивает возможности подключения внешних устройств.
- USB: STM32F102 ориентирован на USB-периферию и содержит специализированный USB 2.0 Full Speed интерфейс с поддержкой CDC и HID. STM32F103 также поддерживает USB, но менее оптимизирован под массовые USB-приложения.
- ADC и таймеры: У STM32F103 до 3 АЦП по 12 бит, каждый с 16 каналами. STM32F102 имеет лишь 1 АЦП с 10 каналами. Также у STM32F103 больше таймеров общего назначения и один продвинутый таймер для ШИМ.
- Энергоэффективность: STM32F102 оптимизирован для низкого энергопотребления в режиме USB-периферии. В STM32F103 акцент на производительности, что увеличивает потребление тока при высоких частотах.
- Программная совместимость: Оба микроконтроллера совместимы по архитектуре и могут использовать одну и ту же среду разработки (например, STM32CubeIDE), но при переносе проектов с F103 на F102 потребуется адаптация из-за различий в периферии.
Рекомендации:
- Выбирайте STM32F103 для задач с высокой нагрузкой, множеством периферийных устройств и требованием к точному таймингу.
- Используйте STM32F102 для компактных USB-устройств с ограниченными вычислительными задачами и минимальной периферией.
Сравнение частот работы и производительности ядер
STM32F102 и STM32F103 используют ядро ARM Cortex-M3, однако различаются по тактовой частоте и общей производительности.
- STM32F102: максимальная тактовая частота – 48 МГц.
- STM32F103: работает на частоте до 72 МГц.
Разница в частоте напрямую влияет на скорость выполнения операций и отклик системы. В реальных задачах STM32F103 обеспечивает прирост производительности до 50% по сравнению с STM32F102.
Дополнительные различия:
- STM32F103 имеет более эффективную работу с периферией благодаря более высокому пропускному каналу системной шины (AHB).
- У STM32F103 лучше оптимизирована работа с Flash-памятью: два блока prefetch и возможность включения инструкционного кэширования улучшают обработку кода на высокой частоте.
Рекомендации по выбору:
- Для задач с ограниченным энергопотреблением и невысокой вычислительной нагрузкой достаточно STM32F102.
- Если требуется высокая производительность, быстрая обработка данных или работа с высокочастотной периферией – предпочтителен STM32F103.
Учитывая вышеуказанное, STM32F103 предоставляет более широкие возможности для построения производительных встроенных систем, тогда как STM32F102 выгоден в энергоэффективных решениях с базовой логикой.
Различия в объёме оперативной и флеш-памяти
STM32F102 предлагает 4 КБ или 6 КБ оперативной памяти (SRAM) и от 16 КБ до 32 КБ флеш-памяти. Это ограничивает его применение задачами с минимальными требованиями к памяти, например, в простых периферийных устройствах или USB-флешках.
STM32F103 доступен в более широком диапазоне конфигураций: от 6 КБ до 96 КБ SRAM и от 16 КБ до 1 МБ флеш-памяти в зависимости от версии (F103x6 до F103xG). Такая гибкость делает его подходящим для более ресурсоёмких приложений: систем реального времени, CAN-шин, обработчиков протоколов и графических интерфейсов.
Если проект предполагает частые обновления прошивки или работу с большими массивами данных, предпочтение следует отдать STM32F103, особенно в конфигурациях с флеш-памятью 128 КБ и выше. STM32F102 рационален в задачах, где критичны компактность и низкое энергопотребление, а объёмы данных ограничены.
Наличие и состав периферийных интерфейсов
STM32F102 оснащён ограниченным набором периферии: один USART, один SPI, один I2C, до 10 каналов АЦП (10-разрядный), USB 2.0 Full-Speed (устройства), таймеры базового и общего назначения. Отсутствует CAN, нет DAC и не поддерживаются интерфейсы внешней памяти.
STM32F103 предоставляет значительно более широкий набор: до 3 USART, 2 SPI, 2 I2C, USB 2.0 Full-Speed (устройства), до 16 каналов АЦП (12-разрядный), один или два ЦАП (в зависимости от подсерии), CAN 2.0B, SDIO, FSMC (в моделях с суффиксом R/T/Z). Также доступны более мощные таймеры, включая продвинутые ШИМ.
Поддержка USB и особенности реализации

Микроконтроллер STM32F102 изначально ориентирован на применение с USB, в отличие от STM32F103, где USB реализован как дополнительная функция. Это различие выражается как в аппаратной архитектуре, так и в поддержке на уровне библиотеки CMSIS и HAL.
STM32F102 включает специализированный USB FS модуль с улучшенной поддержкой режима устройства (Device), включая встроенный pull-up на линии D+, что упрощает аппаратную реализацию. В STM32F103 для активации USB требуется внешний резистор и программное управление его подключением к питанию.
На уровне регистров STM32F102 использует тот же набор регистров USB, что и STM32F103, однако в STM32F102 они активированы по умолчанию, в то время как в STM32F103 необходимо вручную включать тактирование и модуль.
Сравнительная таблица особенностей реализации USB в STM32F102 и STM32F103:
| Параметр | STM32F102 | STM32F103 |
|---|---|---|
| Тип USB | USB 2.0 Full Speed (Device only) | USB 2.0 Full Speed (Device only) |
| Наличие встроенного pull-up | Да | Нет |
| Необходимость внешнего резистора | Нет | Да |
| Автоматическая инициализация USB | Да | Нет |
| Совместимость с USB CDC | Полная | Полная, но требует доработок |
При разработке устройств с USB-интерфейсом предпочтение следует отдавать STM32F102, если требуется упрощённая схема подключения и минимальное вмешательство в аппаратную часть. STM32F103 требует дополнительной настройки питания USB и управления линией pull-up, что увеличивает сложность реализации.
Отличия в количестве и типах таймеров

STM32F102 имеет два 16-битных таймера общего назначения (TIM2 и TIM3) и один системный таймер SysTick. Аппаратной поддержки для таймеров PWM с расширенными функциями нет.
STM32F103 предоставляет четыре 16-битных таймера общего назначения (TIM2–TIM5), а также два 16-битных таймера базового уровня (TIM6 и TIM7) и два 16/32-битных расширенных таймера (TIM1 и TIM8) с поддержкой PWM, dead-time и синхронизации. Наличие таймеров базового уровня полезно для задач с точной временной привязкой без привязки к входам/выходам.
Для реализации сложного ШИМ, измерения времени между событиями или работы с энкодерами STM32F103 обеспечивает больше гибкости за счёт наличия TIM1 и дополнительных каналов таймеров. STM32F102 подходит только для базовых временных интервалов и простого ШИМ.
Выбор зависит от задач: для систем с несколькими независимыми каналами управления, генерации импульсов и обработки сигналов предпочтителен STM32F103.
| Функция | STM32F102 | STM32F103 | Совместимость |
|---|---|---|---|
| PA9 (USART1_TX) | Да | Да | Полная |
| PA11/PA12 (USB D-/D+) | Да | Да (альтернативное использование) | Ограниченная |
| PB6 (I2C1_SCL) | Да | Да | Полная |
| PA15 (JTDI) | Ограничено | Полная поддержка | Частичная |
Для проектов с минимальной загрузкой периферии замена возможна без изменений в схеме и прошивке. В более сложных случаях рекомендуется провести ревизию логики и обновление конфигурации CubeMX.
Различия в потреблении тока при разных режимах

STM32F102 и STM32F103 относятся к одному семейству, но отличаются уровнем потребления тока в аналогичных условиях. Это критично для устройств с батарейным питанием и низким тепловыделением.
- В режиме Run при частоте 24 МГц:
- STM32F102: около 18 мА
- STM32F103: около 27 мА
- В режиме Sleep при включённом HSI (8 МГц):
- STM32F102: около 2,1 мА
- STM32F103: около 2,8 мА
- В режиме Stop с включённым RTC:
- STM32F102: до 25 µА
- STM32F103: около 40 µА
- В режиме Standby с сохранением SRAM:
- STM32F102: примерно 2 µА
- STM32F103: около 4 µА
Повышенное энергопотребление STM32F103 обусловлено наличием более производительных периферийных блоков и расширенного функционала, включая аппаратный USB и CAN. При выборе между этими моделями для задач, требующих минимального потребления, предпочтителен STM32F102, особенно в длительных циклах сна и простоя.
Для снижения энергозатрат на STM32F103 рекомендуется:
- Отключение неиспользуемых периферий через RCC
- Переход в режим Stop вместо Sleep при длительных паузах
- Использование HSI вместо HSE, если высокая точность тактирования не критична
Доступность, стоимость и варианты исполнения

STM32F102 доступен в ограниченном числе вариантов корпусов: LQFP-48 и UFQFPN-32. STM32F103 предлагает более широкий выбор – от TSSOP-20 до LQFP-100, включая BGA-варианты, что упрощает интеграцию в проекты с различными требованиями по габаритам и плотности монтажа.
Стоимость STM32F102 ниже – в среднем 0.90–1.20 USD при оптовых закупках. STM32F103 дороже – 1.50–2.30 USD в зависимости от объёма памяти и типа корпуса. Однако серия F103 имеет более стабильное наличие на складах дистрибьюторов, включая Digikey, Mouser и LCSC, особенно в вариантах с расширенной периферией (например, STM32F103C8T6).
STM32F102 позиционируется как упрощённый вариант с ограниченной функциональностью и предназначен для базовых задач USB-коммуникации. Варианты исполнения чаще представлены в виде микросхем без встроенного загрузчика UART. В STM32F103 практически каждый чип поддерживает множественные загрузчики (UART, USB, CAN), что удобно при массовом производстве и отладке.
При выборе рекомендуется ориентироваться на STM32F103, если важны гибкость в выборе корпуса, наличие встроенного загрузчика и широкий ассортимент у поставщиков. STM32F102 оправдан, если приоритет – минимальная цена и базовая функциональность USB без избыточных ресурсов.
Вопрос-ответ:
Чем отличаются тактовые частоты микроконтроллеров STM32F102 и STM32F103?
Микроконтроллеры STM32F102 работают на максимальной частоте до 48 МГц, в то время как STM32F103 поддерживает частоту до 72 МГц. Это означает, что STM32F103 способен выполнять вычисления быстрее, что особенно заметно при обработке больших объемов данных или в задачах с высокими требованиями к скорости отклика.
Какие отличия есть в возможностях USB-интерфейса у STM32F102 и STM32F103?
STM32F102 имеет встроенную поддержку только устройства USB (USB Device), тогда как STM32F103, в зависимости от модели, может поддерживать как USB Device, так и USB OTG (On-The-Go), позволяющий работать и как устройство, и как хост. Это даёт больше гибкости при проектировании периферийных систем, особенно если требуется подключение других USB-устройств напрямую к микроконтроллеру.
Подходит ли STM32F102 для проектов, где требуется высокая производительность?
STM32F102 можно использовать в проектах средней сложности, где не требуется максимальная производительность. Однако, если приложение включает сложную математику, обработку сигналов, работу с несколькими интерфейсами одновременно или высокую частоту обновления данных, то STM32F103 будет предпочтительнее благодаря более высокой тактовой частоте и большему количеству доступных периферийных модулей.
Можно ли использовать одни и те же прошивки для STM32F102 и STM32F103?
Не всегда. Хотя оба микроконтроллера относятся к одному семейству STM32 и используют ядро Cortex-M3, у них могут различаться периферийные устройства, объемы памяти и частота работы. Прошивка, написанная с учетом специфики STM32F103, может не запуститься на STM32F102 без адаптации. При переносе проекта необходимо учитывать особенности каждого чипа, в том числе настройки тактирования и наличие определённых модулей, таких как DMA, ADC или таймеры.
