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

STM32C0: микроконтроллеры на Cortex-M0+, распиновки по корпусам

STM32C0 — самое простое семейство STM32: ядро Cortex-M0+ с частотой до 48 МГц, тактирование от встроенного генератора на 48 МГц, корпуса от восьмивыводного SO8N до LQFP64. Здесь — сравнение линеек и страницы с распиновкой и номерами альтернативных функций каждого микроконтроллера в каждом корпусе.

STM32C0 — семейство 32-битных микроконтроллеров STMicroelectronics на ядре Arm Cortex-M0+, которое ST предлагает вместо 8-битных микроконтроллеров: частота до 48 МГц от встроенного генератора, корпуса от восьмивыводного SO8N у STM32C011J до LQFP64. В разделе 84 страницы для 93 исполнений в 14 корпусах, 6 линеек: у каждого сочетания микроконтроллера и корпуса — своя страница со схемой выводов и номерами альтернативных функций.

Линейки STM32C0

Линейки отличаются набором периферии; в пределах линейки — объёмом памяти и корпусом. Значения в таблице собраны из записей базы ST; у STM32C051, C071, C091 и C092 база не указывает частоту — для всех STM32C0 она одна, до 48 МГц (RM0490, разд. 6.2.6).

ЛинейкаЯдро, частотаФлеш-памятьОЗУКорпусаЧем выделяется
STM32C011Cortex-M0+, до 48 МГц16 КБ – 32 КБ6 КБSO8N, TSSOP20, UFQFPN20, WLCSP12I²S
STM32C031Cortex-M0+, до 48 МГц16 КБ – 32 КБ12 КБLQFP32, LQFP48, TSSOP20, UFQFPN28, UFQFPN32, UFQFPN48I²S
STM32C051Cortex-M0+32 КБ – 64 КБ12 КБLQFP32, LQFP48, TSSOP20, UFQFPN28, UFQFPN32, UFQFPN48, WLCSP15I²S
STM32C071Cortex-M0+64 КБ – 128 КБ24 КБLQFP32, LQFP48, LQFP64, TSSOP20, UFBGA64, UFQFPN28, UFQFPN32, UFQFPN48, WLCSP19USB, I²S
STM32C091Cortex-M0+128 КБ – 256 КБ36 КБLQFP32, LQFP48, LQFP64, TSSOP20, UFBGA64, UFQFPN28, UFQFPN32, UFQFPN48, WLCSP24I²S
STM32C092Cortex-M0+128 КБ – 256 КБ30 КБLQFP32, LQFP48, LQFP64, TSSOP20, UFBGA64, UFQFPN28, UFQFPN32, UFQFPN48, WLCSP24FDCAN, I²S

Все линейки описывает один reference manual — RM0490. Периферия добавляется ступенями (таблица 1 RM0490 и данные ST):

  • STM32C011 и C031 — базовый набор: USART1 и USART2, SPI1 с I²S, I2C1, таймеры TIM1, TIM3, TIM14, TIM16, TIM17, АЦП;
  • STM32C051 и старше — ещё SPI2, I2C2 и 32-битный таймер TIM2;
  • STM32C071 — USB Full Speed без кварца: генератор HSIUSB48 и блок CRS, а также вывод VDDIO2 в части корпусов;
  • STM32C091 и C092 — USART3, USART4 и TIM15, у C092 ещё контроллер FDCAN.

Тактирование

У STM32C0 нет PLL. Системную частоту SYSCLK дают генераторы LSI и LSE, кварцевый HSE, у STM32C071 — HSIUSB48, а чаще всего HSISYS — частота встроенного RC-генератора HSI48 на 48 МГц, поделённая на число от 1 до 128. Максимальная частота SYSCLK — 48 МГц; после сброса ядро тактируется от HSISYS (RM0490, разд. 6.2.2 и 6.2.6). Делители таймеров и скорость UART от этих частот считают калькулятор таймера и калькулятор UART.

Кварц HSE по умолчанию подключается к выводам PF0-OSC_IN и PF1-OSC_OUT, но если сбросить бит HSE_NOT_REMAPPED в байте опций, он переходит на PC14-OSCX_IN и PC15-OSCX_OUT — тогда HSE и LSE делят одни выводы и не могут работать одновременно. В корпусах меньше чем на 48 выводов этот перенос включён всегда (RM0490, описание FLASH_OPTR).

Выводы STM32C0: альтернативные функции, общие выводы и ремап

На каждой линии порта — мультиплексор альтернативных функций: режим задаёт GPIOx_MODER, номер функции — GPIOx_AFRL или GPIOx_AFRH. В отличие от STM32F0 и G0, у STM32C0 в данных ST заняты все шестнадцать номеров, AF0–AF15.

  • Несколько линий на выводе. В маленьких корпусах к одному выводу подключено по нескольку линий портов — у STM32C011J в корпусе SO8N таких выводов большинство. Активную линию выбирает регистр SYSCFG_CFGR3 (RM0490, разд. 9.1.3); таблица выводов атласа показывает все линии каждого вывода.
  • Ремап PA11 и PA12. Бит PA11_RMP регистра SYSCFG_CFGR1 заставляет вывод PA11 работать как PA9, бит PA12_RMP — вывод PA12 как PA10; исходные PA9 и PA10, если они есть в корпусе, переводятся в аналоговый режим.
  • Вывод PF2-NRST полем NRST_MODE в байте опций переводится в обычную линию PF2.
  • Загрузка. Режим загрузки задают вывод BOOT0 (совмещён с PA14) и биты nBOOT1, nBOOT_SEL и nBOOT0 в байте опций (RM0490, разд. 3.1).

STM32C071 выпускается в двух версиях разводки — GP и N: у версии N есть вывод VDDIO2, у версии GP на его месте линия порта (DS14693). У каждой версии в атласе своя страница со ссылкой на вторую и списком различающихся выводов.

Все STM32C0 по корпусам

STM32C011 — Cortex-M0+, до 48 МГц

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32C011D6WLCSP1232 КБ6 КБ20
STM32C011F4, STM32C011F6TSSOP2016 КБ / 32 КБ6 КБ20
STM32C011F4, STM32C011F6UFQFPN2016 КБ / 32 КБ6 КБ20
STM32C011J4, STM32C011J6SO8N16 КБ / 32 КБ6 КБ15

STM32C031 — Cortex-M0+, до 48 МГц

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32C031C4, STM32C031C6LQFP4816 КБ / 32 КБ12 КБ45
STM32C031C4, STM32C031C6UFQFPN4816 КБ / 32 КБ12 КБ45
STM32C031F4, STM32C031F6TSSOP2016 КБ / 32 КБ12 КБ20
STM32C031G4, STM32C031G6UFQFPN2816 КБ / 32 КБ12 КБ28
STM32C031K4, STM32C031K6LQFP3216 КБ / 32 КБ12 КБ30
STM32C031K4, STM32C031K6UFQFPN3216 КБ / 32 КБ12 КБ30

STM32C051 — Cortex-M0+

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32C051C6LQFP4832 КБ12 КБ45
STM32C051C6UFQFPN4832 КБ12 КБ45
STM32C051C8LQFP4864 КБ12 КБ45
STM32C051C8UFQFPN4864 КБ12 КБ45
STM32C051D8WLCSP1564 КБ12 КБ25
STM32C051F6TSSOP2032 КБ12 КБ25
STM32C051F8TSSOP2064 КБ12 КБ25
STM32C051G6UFQFPN2832 КБ12 КБ28
STM32C051G8UFQFPN2864 КБ12 КБ28
STM32C051K6LQFP3232 КБ12 КБ30
STM32C051K6UFQFPN3232 КБ12 КБ30
STM32C051K8LQFP3264 КБ12 КБ30

STM32C071 — Cortex-M0+

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32C071C8LQFP48 (версия GP)64 КБ24 КБ45
STM32C071C8LQFP48 (версия N)64 КБ24 КБ43
STM32C071C8UFQFPN48 (версия GP)64 КБ24 КБ45
STM32C071C8UFQFPN48 (версия N)64 КБ24 КБ43
STM32C071CBLQFP48 (версия GP)128 КБ24 КБ45
STM32C071CBLQFP48 (версия N)128 КБ24 КБ43
STM32C071CBUFQFPN48 (версия GP)128 КБ24 КБ45
STM32C071CBUFQFPN48 (версия N)128 КБ24 КБ43
STM32C071F8TSSOP20 (версия GP)64 КБ24 КБ25
STM32C071F8TSSOP20 (версия N)64 КБ24 КБ24
STM32C071FBTSSOP20 (версия GP)128 КБ24 КБ25
STM32C071FBTSSOP20 (версия N)128 КБ24 КБ24
STM32C071FBWLCSP19 (версия GP)128 КБ24 КБ25
STM32C071G8UFQFPN28 (версия GP)64 КБ24 КБ28
STM32C071G8UFQFPN28 (версия N)64 КБ24 КБ27
STM32C071GBUFQFPN28 (версия GP)128 КБ24 КБ28
STM32C071GBUFQFPN28 (версия N)128 КБ24 КБ27
STM32C071K8LQFP32 (версия GP)64 КБ24 КБ30
STM32C071K8LQFP32 (версия N)64 КБ24 КБ29
STM32C071K8UFQFPN32 (версия GP)64 КБ24 КБ30
STM32C071K8UFQFPN32 (версия N)64 КБ24 КБ29
STM32C071KBLQFP32 (версия GP)128 КБ24 КБ30
STM32C071KBLQFP32 (версия N)128 КБ24 КБ29
STM32C071KBUFQFPN32 (версия GP)128 КБ24 КБ30
STM32C071KBUFQFPN32 (версия N)128 КБ24 КБ29
STM32C071R8LQFP64 (версия GP)64 КБ24 КБ61
STM32C071R8LQFP64 (версия N)64 КБ24 КБ59
STM32C071RBUFBGA64 (версия N)128 КБ24 КБ59
STM32C071RBLQFP64 (версия GP)128 КБ24 КБ61
STM32C071RBLQFP64 (версия N)128 КБ24 КБ59

STM32C091 — Cortex-M0+

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32C091CBLQFP48128 КБ36 КБ45
STM32C091CBUFQFPN48128 КБ36 КБ45
STM32C091CCLQFP48256 КБ36 КБ45
STM32C091CCUFQFPN48256 КБ36 КБ45
STM32C091ECWLCSP24256 КБ36 КБ28
STM32C091FBTSSOP20128 КБ36 КБ28
STM32C091FCTSSOP20256 КБ36 КБ28
STM32C091GBUFQFPN28128 КБ36 КБ28
STM32C091GCUFQFPN28256 КБ36 КБ28
STM32C091KBLQFP32128 КБ36 КБ30
STM32C091KBUFQFPN32128 КБ36 КБ30
STM32C091KCLQFP32256 КБ36 КБ30
STM32C091KCUFQFPN32256 КБ36 КБ30
STM32C091RBLQFP64128 КБ36 КБ61
STM32C091RCUFBGA64256 КБ36 КБ61
STM32C091RCLQFP64256 КБ36 КБ61

STM32C092 — Cortex-M0+

МикроконтроллерКорпусФлеш-памятьОЗУЛиний ввода-вывода
STM32C092CBLQFP48128 КБ30 КБ45
STM32C092CBUFQFPN48128 КБ30 КБ45
STM32C092CCLQFP48256 КБ30 КБ45
STM32C092CCUFQFPN48256 КБ30 КБ45
STM32C092ECWLCSP24256 КБ30 КБ28
STM32C092FBTSSOP20128 КБ30 КБ28
STM32C092FCTSSOP20256 КБ30 КБ28
STM32C092GBUFQFPN28128 КБ30 КБ28
STM32C092GCUFQFPN28256 КБ30 КБ28
STM32C092KBLQFP32128 КБ30 КБ30
STM32C092KBUFQFPN32128 КБ30 КБ30
STM32C092KCLQFP32256 КБ30 КБ30
STM32C092KCUFQFPN32256 КБ30 КБ30
STM32C092RBLQFP64128 КБ30 КБ61
STM32C092RCUFBGA64256 КБ30 КБ61
STM32C092RCLQFP64256 КБ30 КБ61

Перед разводкой платы сверяйте выводы с даташитом своего исполнения: в нём указаны допустимые напряжения на выводах, токи и номиналы внешних компонентов.

Частые вопросы

Чем отличаются STM32C011, C031, C051, C071, C091 и C092?

По таблице 1 RM0490 у старших линеек добавляется периферия: SPI2, I2C2 и 32-битный TIM2 — начиная с STM32C051; USB с генератором HSIUSB48 и блоком подстройки CRS — только у STM32C071; USART3, USART4 и TIM15 — у C091 и C092; контроллер FDCAN — только у STM32C092. Кроме того, растут объём памяти и число выводов в корпусах.

Почему у STM32C0 нет PLL?

Системную частоту у STM32C0 выбирают из LSI, LSE, HSE, HSIUSB48 (у C071) и HSISYS — частоты встроенного генератора HSI48 на 48 МГц, поделённой на 1…128 (RM0490, разд. 6.2.6). Максимум для ядра — 48 МГц, и его даёт сам HSI48, поэтому умножитель частоты не нужен. После сброса ядро работает от HSISYS.

Можно ли использовать вывод NRST у STM32C0 как порт?

Да: вывод называется PF2-NRST, и полем NRST_MODE в байте опций его переводят в режим GPIO. Новый режим включается после следующей загрузки байтов опций, а сброс тогда приходит только от внутренних источников (RM0490).

Как работают выводы, к которым подключено несколько линий порта?

В маленьких корпусах STM32C0 к одному выводу подключено по нескольку линий, например PB7 и PB8. Регистр SYSCFG_CFGR3 выбирает, какая из них работает: у C011, C031 и C071 остальные линии этого вывода принудительно становятся цифровыми входами, у C051, C091 и C092 у них отключается выходной буфер. Выбор действует, пока в байте опций установлен бит SECURE_MUXING_EN — по умолчанию он установлен (RM0490, разд. 9.1.3).

Что такое версии GP и N у STM32C071?

Это два варианта разводки STM32C071 в одном корпусе. По даташиту DS14693 у версии N есть вывод VDDIO2 — отдельное питание части линий ввода-вывода, — а у версии GP на его месте линия порта: например, в корпусе LQFP32 вывод 20 — это PC6 у версии GP и VDDIO2 у версии N. В базе ST обозначения версии N кончаются буквой N: STM32C071K8TxN.