STM32 — капитан команды Cortex-M3


PDF версия

Еще совсем недавно наиболее популярными на рынке являлись 8- и 16-разрядные микроконтроллеры (МК), 32-разрядная архитектура была слишком высока по ценовому критерию и считалась нецелесообразной для использования в сегменте 8- и 16-разрядных решений. Семейство STM32 на ядре ARM Cortex-M3 компании STMicroelectronics в корне изменило позицию 32-разрядных решений, переведя их из элитного сегмента в массовый.

Жизнь в сфере 32-разрядных МК в России сейчас «кипит». С одной стороны, производители постоянно анонсируют и продвигают новые решения. С другой, многие разработчики готовы к переходу с 8-, 16-разрядных МК на 32-разрядные: их задачи усложняются, мощность 8-разрядных МК ограничена, а стоимость сопоставима со стоимостью новых 32-разрядных МК. Тем, кто уже работает с 32-разрядными МК, необходимо оптимизировать свои решения с точки зрения стоимости или добавить новый функционал. В данный статье мы попробуем представить сбалансированный взгляд на конкретные преимущества 32-разрядного семейства МК STM32 от европейского лидера в сфере полупроводников — STMicroelectronics.

Крепкий орешек

STM32 — это МК, построенный на ядре ARM Cortex-M3 [1]. Данное ядро имеет много преимуществ, но основное из них — универсальность, и за последние два года Cortex-M3 стал индустриальным стандартом. Об этом говорит количество производителей, присоединившихся к данной архитектуре. Все основные производители МК, которые присутствуют в России (кроме Microchip), имеют или развивают решения на основе этой архитектуры: STMicroelectronics, Texas Instruments, NXP, ATMEL, Analog Devices, Renesas и т.д. Компания ST одной из первых (в 2007 г.) выпустила свои МК STM32 на основе ядра ARM Cortex-M3 и быстро стала лидирующим игроком на этом рынке. На рисунке 1 показано общее количество проданных в мире ядер Cortex-M3 и «львиная доля» ST: около 80% в 2009 г. и около 70% — в 2010 г. Это говорит о высоком качестве и привлекательности решений STMicroelectronics. Заметен и рост продаж самих ядер Cortex-M3 по статистике компании ARM. В 2008 г. их было продано около четырех миллионов, а затем три года подряд ежегодный рост составлял 400—500%.

Рис. 1. Мировые продажи МК на ARM Cortex-M3

Ядро Cortex-M3 является законченным решением и включает матрицу шин, контроллер прерываний, встроенный системный таймер и систему отладки. Различия же между продуктами разных производителей касаются только встроенной периферии. В итоге получается, что если разрабатывать программный код с четким делением между ядром и периферией, то можно обеспечить условия для очень быстрого перехода с продукции одного производителя на продукцию другого. Остается, конечно, проблема редизайна печатной платы, но и в этом вопросе семейство STM32 имеет ряд преимуществ перед конкурентами, о чем будет более подробно рассказано в следующем разделе.

Семейство STM32 — это не только МК на ядре Cortex-M3. Архитектура Сortex-M включает также ядра Сortex-M0 и Cortex-M4.

Ядро Cortex-M0 построено на основе ядра Cortex-M3 с усеченным набором команд и предназначено для более дешевых и менее требовательных с точки зрения производительности решений. Ядро Cortex-M0 позволяет заменить 16- и, в меньшей степени, 8-разрядные МК.

Cortex-M4 — это Cortex-M3, обогащенный новыми командами для обработки данных и предназначенный для применений, требующих более высокой производительности, с более сложной обработкой сигнала (операции с плавающей запятой на аппаратном уровне). Соответственно, ядро Cortex-M4 можно будет использовать в нижнем сегменте DSP-приложений.

Программный код, работающий на ядре Cortex-M0, будет полностью функционален и на ядре Cortex-M3, поскольку для Cortex-M3 действуют все инструкции Cortex-M0. Программный код, работающий на ядре Cortex-M3, также будет функционировать на Cortex-M4, поскольку для Cortex-M4 остаются действующими все инструкции Cortex-M3. Легко заметить, что в данном случае наблюдается преемственность между тремя ядрами Cortex-M, т.е. реализовав изделие на Cortex-M3, можно сделать его более дешевые и простые варианты на Cortex-M0 или более дорогие и сложные изделия на Cortex-M4 с минимальными затратами на переработку программного кода.

Компания STMicroelectronics намечает выпуск STM32 с ядрами Cortex-M0 и Cortex-M4 на 2011 г., не говоря уже о постоянном расширении и улучшении решений на Cortex-M3. Другие производители также активно работают в этом направлении (Texas Instruments, NXP, Freescale и т.д.). В итоге можно сказать, что выбирая STM32, разработчик выбирает самый популярный продукт на Cortex-M3 с перспективой перехода на другие ядра Cortex-M, но при этом не закрывает двери для продукции остальных производителей. Итог — огромный выбор и большая гибкость. Все вышеперечисленное вкупе с pin-to-pin-совместимостью МК семейства STM32 позволяет разработчикам максимально использовать все преимущества ядер Cortex-M3, в том числе и то преимущество STM32, что всегда есть возможность его не использовать!

Менять микроконтроллеры как перчатки

Одна из причин мировой популярности семейства STM32 [2] — максимальный комфорт для разработчика. Если универсальность ядра STM32 позволяет менять производителя c минимальными затратами на программный код, то pin-to-pin-совместимость внутри семейства STM32 позволяет менять объем памяти (флэш-память и ОЗУ) и периферию (Ethernet, USB, CAN, и т.д.), не затрагивая печатную плату. Pin-to-pin-совместимость означает, что для одного типа корпуса все сигналы сохраняются на тех же самых вводах/выводах для разных вариантов МК-семейства.

Рассмотрим конкретный пример. На рисунке 2 можно увидеть распределение изделий семейства STM32 в зависимости от корпусов и размера флэш-памяти. Если мы говорим, например, про серию STM32F-1, то речь идет более чем о 90 микросхемах, разделенных на пять семейств по применению, с полной pin-to-pin-совместимостью. В итоге мы имеем полную pin-to-pin-совместимость между STM32F-1 и STM32L, но в случае с более новой линейкой STM32F-2 есть небольшие отличия, связанные с переходом на новую технологию 90 нм — для более точной информации необходимо обратиться к документации.

Рис. 2. Изделия семейства STM32 в зависимости от флэш-памяти и корпуса

Если во время разработки максимально предусмотреть все будущие варианты своего изделия на основе pin-to-pin-совместимости, то можно с высокой эффективностью запускать в производство множество разнообразных изделий. В итоге, потратив свои усилия на одну разработку, разработчик имеет возможность масштабировать свои изделия в соответствии с требованиями рынка.

Если все же существует необходимость смены корпуса, то требования к повторной трассировке сокращены до минимума, поскольку в семействе STM32 все сигналы сохраняются с одной или с другой стороны корпуса, каким бы ни был его размер, что также значительно упрощает работу. STMicroelectronics обещает, что будущие семейства STM32 на ядрах Cortex-M0 и Cortex-M4 будут также pin-to-pin и программно совместимы с существующими. Вывод: STM32 — платформа, на которую можно перейти уже сегодня, чтобы многие годы решать свои задачи.

Все у меня есть, только мозгов не хватает!

Когда появляется интерес к микроконтроллеру, хочется попробовать его «вживую». Для этого нужны отладочные платы. В случае семейства STM32 количество оценочных наборов и их возможностей впечатляет [3]. Отметим лишь отладочный набор STM32VLDiscovery стоимостью около 300 руб., который также можно использовать как встраиваемый модуль.

Оценочный набор STM32VLDiscovery имеет встроенный программатор-отладчик и позволяет начать работу с МК STM32 без дополнительных затрат. Это самый дешевый и быстрый путь ознакомления с семейством STM32. С другой стороны, имеются более сложные отладки со всем нужным набором функционала от сторонних производителей — Keil, IAR, Raisonance и т.д. Российских разработчиков могут заинтересовать решения компании «Терраэлектроника» [4], более доступные по стоимости, с документацией и технической поддержкой на русском языке, которые одновременно являются встраиваемыми модулями, что идеально для небольших серий изделий.

Иногда для комплексных решений требуется не просто отладка, а отладка в реальном времени. Одно из преимуществ ядра Cortex-M3 — то, что он включает модуль ETM (Embedded Trace Module), который позволяет выполнить такую функцию. Все МК серий STM32L, STM32F-2 и STM32F-1 с объемом памяти больше 512 Кбайт содержат этот модуль.

Широкий выбор отладок и средств разработки — это еще не все. Большую роль в процессе разработки играют библиотеки. Семейство STM32 отличается большим выбором бесплатных библиотек, из которых можно отметить следующие:

– библиотека для всей стандартной периферии (UART, SPI, I2C, CAN, AЦП, ЦАП, таймеры, все источники тактирования, FSMC, IO, DMA, RTC и т.д.);

– библиотека для USB-интерфейса (host full speed, mass storage, HID, DFU, CDC, audio);

– библиотека для Ethernet-интерфейса (MAC-уровень от ST и бесплатный полный TCP/IP-уровень от Interniche);

– библиотеки для управления двигателями (трехфазные бесщеточные моторы);

– библиотеки для цифровой обработки сигнала DSP (PID, IIR, FFT, FIR);

– библиотеки для воспроизведения звука (декодирования и кодирования на основе кодека SPEEX, с хорошим качеством звука);

– библиотеки для графических решений.

Все эти библиотеки сопровождаются документацией по применению. Помимо бесплатных библиотек есть огромный выбор платных предложений от большого количества компаний — Keil, IAR, Micrium, Segger, Greenhills, Quadros, CMX и т.д. Интересно, что одна из подобных компаний — российская. Это Spirit DSP, совместно с которой STMicroelectronics предоставляет MP3-кодеки (кодирование, декодирование), WMA-кодек (декодирование) и библиотеки для звуковых эффектов (микшер, эквалайзер, и т.д). Данные решения требуют лицензирования с дополнительными отчислениями правообладателем кодеков (Thomson, Microsoft). Обычно их стоимость уже заложена в цену МК.

Надо сказать еще пару слов об операционных системах. Ядро Cortex-M3 в сравнении со своим предшественником — ARM7 улучшено с точки зрения операционных систем реального времени. Ядро имеет два режима исполнения кода и два специализированных стека. Оно характеризуется большей гибкостью с точки зрения расстановки приоритетов среди прерываний и имеет дополнительный системный таймер Systick. Все это позволяет лучше строить операционные системы реального времени. Для МК STM32 разработано уже множество операционных систем, часть из них приведена в таблице 1 (полный список можно посмотреть на официальном сайте STMicroelectronics).

Таблица 1. Операционные системы реального времени для МК STM32

Компания

Наименование ОС

Описание

ROM, Кбайт

RAM, Кбайт

FreeRTOS.org

FreeRTOS

Надежная портируемая RTOS с открытыми исходными кодами в двух вариантах — платном и бесплатном, с возможностью технической поддержки. Есть также версия SafeRTOS, сертифицированная по стандарту IEC 61508

4,2

1

Micrium

μC/OS-II

Легко портируемая, масштабируемая RTOS, поддерживающая многозадачность (до 250 задач), сертифицированная для критических условий эксплуатации (медицина, авиационная электроника)

16

2

IAR

PowerPaс

Полноценная RTOS с высокоэффективной файловой системой. Поставляется со многими примерами и, по выбору — с USB-стеком для приборов класса HID, MSD и CDC

2…4

51 байт

Quadros System

RTXC Quadro

Гибкая, масштабируемая RTOS с большим набором стеков и драйверов для периферии (TCP/IP, USB, файловая система, графические GUI-инструменты, CAN и т.д.). Поддерживается средством разработки VisualRTXC — идеальная среда для начинающих работу с 32-разрядными МК

<20

< 4

Keil

ARTX-ARM

Многозадачная вытесняющая RTOS, поддерживающая почтовой ящик и pool памяти, включает файловую систему и передачу данных по протоколу TCP/IP

6

0,5

CMX

CMX-RT

Операционная система реального времени, поддерживающая многозадачность, без отчислений

<10

<1

В итоге можно сказать, что с STM32 имеются все условия для успешной, удобной и быстрой разработки, а для выбирающих бюджетные решения имеются очень доступные, с точки зрения цены отладки, бесплатные среды разработки и бесплатные библиотеки и операционные системы RTOS. Иными словами, для успеха с STM32 требуются только интеллект и творчество разработчика!

Море удовольствия за малые деньги

Продукция STMicroelectronics отличается от продукции других производителей полупроводников прекрасным соотношением цены и функциональности при сохранении самых высоких стандартов качества, и семейство STM32 — тому яркий пример. В этом семействе можно найти как очень дешевые МК линейки Value Line STM32F100 с оптимальным набором периферии, свойственной 8- и 16-разрядным МК, цены на которые не превышают одного доллара, так и новую линейку STM32F-2 с лидирующими показателями по быстродействию и усовершенствованной периферией. Если сравнивать серию STM32F100 с первыми появившимися на рынке решениями на Cortex-M0, то за пару десятков центов разработчик получит в разы больше функционала.

STM32F100, как и все МК семейства STM32, имеет встроенный DMA-контроллер, позволяющий разгрузить ядро от обработки и передачи данных. Его отсутствие в текущих имплементациях Cortex-M0 является существенным недостатком производительности. Нельзя не отметить наличие в семействе STM32 высококлассной аналоговой периферии — 12-разрядных ЦАП и АЦП. Наличие модуля АЦП в семействе STM32 обеспечивает преимущество перед конкурентными решениями благодаря 12-битной разрядности, скорости преобразования и множеству гибких режимов работы. Помимо перечисленного в МК семейства STM32, которые имеют 2 или 3 АЦП, можно увеличить скорость преобразования в несколько раз при помощи совместной работы нескольких АЦП. Например, в линейке STM32F-1 можно достичь скорости 0,5 мкс, а в случае линейки STM32F-2 повысить скорость до 160 нс (!).

Семейство STM32 отличается от своих конкурентов на рынке высоким процентом GPIO от общего количества ножек корпуса: например, в серии STM32F100 корпус LQFP48 имеет 37 GPIO, корпус LQFP64 — 51 GPIO, корпус LQFP100 — 80 GPIO. Эти GPIO имеют высокую степень гибкости, их можно не только сконфигурировать в разные стандартные режимы (двухтактная схема, открытый коллектор, pull-up, pull-down и т.д.), но и переназначить выводы МК для периферии (remapping). Скорость GPIO регулируется в целях снижения электромагнитных помех: в случае STM32F-1 она может быть 2 МГц, 10 МГц и 50 МГц.

В некоторых линейках STM32 имеется полезная периферия FSMC и SDIO (например, в сериях STM32F101, STM32F103). Интерфейс FSMC используется для подключения внешней памяти типа SRAM, NOR Flash, NAND Flash и графического дисплея. Интерфейс SDIO используется для работы с карточками памяти типа SD, mini SD, micro SD, MMC. Единственный тип памяти, не охваченный семейством STM32, это память типа DRAM, но для большинства разработчиков этого не требуется.

Добавим, что в семействе STM32 есть встроенный аппаратный модуль СRC (Cyclic Redundancy Check — циклический избыточный код), затраты которого на расчет составляют всего 4 такта. Все МК STM32, кроме STM32W, имеют множество многофункциональных 16-разрядных таймеров (STM32F-2 имеет 32-разрядные таймеры) и один или больше 12-разрядных ЦАП.

Семейство STM32F-2 содержит интересную новинку — интерфейс для подключения камер DCMI, который может работать на скоростях до 54 Мбайт/с, т.е. поддерживать камеры с матрицей примерно до 1 мегапиксела. Этот интерфейс может также получать данные от камеры в сжатом формате JPEG. Это открывает новые возможности для систем безопасности, где не требуется сложной обработки видеосигнала, а достаточно более примитивного функционала, такого как выполнение фотоснимка во время хищения или работы веб-камеры для передачи данных через встроенный Ethernet.

Интерфейсы FSMC и SDIO помогут динамически сохранить во внешней памяти плотный поток данных с камеры. Линейки STM32L, STM32F-2 и все изделия линейки STM32F-1 c памятью больше чем 512 Кбайт имеют встроенный модуль защиты оперативной памяти MPU, который позволяет дополнительно повысить безопасность системы. В семействе STM32 МК с объемами флэш-памяти более 512 Кбайт имеют полезную особенность — память в них разделена на два банка. Это позволяет размещать в каждом банке две отдельные прошивки МК и при старте МК выбирать ту или иную прошивку, кардинально меняя весь функционал устройства. Это позволяет также динамически, без остановки основной работающей программы в одном банке, загружать в другой банк новый вариант прошивки по одному из коммуникационных интерфейсов и затем быстро переводить МК на новый вариант работы ПО.

Семейство STM32 отличается от конкурирующих решений превосходным поведением в температурном диапазоне –40…85°С. Производительность ядра и периферии сохраняется полностью. В семействе STM32 есть ряд изделий, сертифицированных на расширенный температурный диапазон –40…105°С, и это — еще одно подтверждение стабильности его работы.

Ferrari на 176 ножках

Одна из сильнейших сторон ядра Cortex-M3 — его высокая производительность, которая является результатом всего накопленного опыта компании ARM в области разработки процессорных ядер. Ядро Сortex-M3 построено по гарвардской архитектуре, в нем реализованы 3-ступенчатый конвейер с прогнозированием ветвлений, быстрое детерминированное время входа и выхода из прерываний, математическое умножение за 1 такт и деление за 2 такта, механизм битовой сегментации, улучшенный контроллер вложенных приоритетных прерываний и т.д. Все это позволяет достигать производительности 1,25 DMIPS/MГц (для сравнения: у похожего ядра ARM7 производительность составляет 0,95 DMIPS/МГц).

Первая линейка STM32F-1 предоставила разработчикам много возможностей, но с точки зрения производительности была ограничена (72 МГц), и ее достаточно быстро обогнали семейства Stellaris (80 MГц) и LPC17 (100 МГц). В ответ компания ST разработала новую серию STM32F-2, которая работает на частоте 120 МГц и достигает 150 DMIPS.

Таблица 2. Сравнение производительности 32-разрядных МК на основе CoreMark

Микроконтроллеры

Частота работы, МГц

CoreMark, MГц

CoreMark

STMicroelectronics STM32 90nm

120

1,905

228,60

NXP LPC1768

100

1,753

175,25

Microchip PIC32MX440F512H

80

1,745

139,61

TI Stellaris LM3S9B96 Cortex M3

80

1,595

127,60

NXP LPC1768

72

1,755

126,39

STMicro STM32F103RB

72

1,504

108,26

В таблице 2 представлены результаты измерения производительности по стандарту СoreMark [6]. Значения поля «CoreMark» отражают абсолютную производительность МК (большие значения соответствуют более высокой производительности). В поле «CoreMark/MГц» представлены нормализованные значения CoreMark в отношении к частоте работы МК, т.е. мы можем судить, насколько эффективно работает МК на высокой частоте. Высокая производительность линейки STM32F-2 достигается благодаря запатентованному акселератору флэш-памяти и новой технологии производства 90 нм. Следует подчеркнуть, что высокая производительность МК всегда должна рассматриваться вкупе с качеством периферии, поскольку недостатки периферии часто приходится компенсировать ядру. В случае STM32 периферия исполнена на самом высоком уровне. Стоит также отметить, что есть версии МК-семейства STM32F-2 в корпусе со 176 выводами.

Сильный, но ест мало

Архитектура ARM Cortex приобрела огромный успех в мире, в первую очередь, за счет низкого энергопотребления. Это имеет большое значение для телефонов и портативных изделий, и поэтому в любом телефоне или смартфоне сердцем является процессор ARM. Но вопросы энергоэффективности и энергосбережения сейчас становятся актуальными для всех изделий, поскольку в связи с ростом цен на энергоносители каждый лишний мВт имеет все большее значение.

Для систем с автономным питанием компания STMicroelectronics специально разработала линейку STM32L, сочетающую высокую производительность ядра ARM Cortex-M3 и низкое энергопотребление. Ядро Cortex-M3 имеет механизм перехода в спящий режим, и этот механизм был дополнен собственными режимами семейства STM32F. В той же линейке STM32L управление энергопотреблением стало намного более гибким за счет добавления новых режимов энергопотребления, динамического режима изменения напряжения ядра и переработанной энергоэффективной периферии. В таблице 3 представлены типичные значения энергопотребления МК STM32. МК линейки STM32L изготавливаются по специальной технологии, минимизирующей утечки транзисторов, и, соответственно, эти изделия имеют наилучшие показатели.

Таблица 3. Энергопотребление МК STM32 в разных режимах (типовое значение при комнатной температуре)

Линейка

Частота, при которой измеряется потребление, МГц

Работа из флэш-памяти, периферия активна, мкА/МГц

Работа из RAM, периферия активна, мкА/МГц

Режим STOP, мкА

Режим Standby, мкА

STM32F-1

74

434

375

21

3,4

STM32L

32

300

243

1,6

0,3

STM32L

4

220

180

1,6

0,3

STM32F-2

120

ТВD

415

350

4

Без сомнения, типовое потребление МК STM32L в активном и спящем режимах выше, чем у лучших низкопотребляющих 8- или 16-разрядных МК конкурентов. Но высокая производительность STM32L позволит выполнить все задачи за более короткое время и вернуться в спящий режим (см. рис. 3), и в итоге среднее потребление будет ниже по сравнению с таковым у 8- или 16-разрядных изделий. Поэтому вопрос низкого потребления не столь прост, как он иногда преподносится разработчикам.

Рис. 3. Сравнение энергопотребления 8- или 16-разрядных низкопотребляющих МК и STM32L

Для правильного выбора МК требуется более сложная и взвешенная оценка режимов работы и их длительности, не говоря уже о том, что периферия в 8- и 16-разрядных МК чаще всего примитивнее, чем у STM32L, который имеет «честные» часы реального времени; интерфейс USB 2.0 Full speed; 12-разрядный 24-канальный АЦП со скоростью преобразования 1 мкс; 4 Кбайт EEPROM-памяти, выдерживающую 300 тыс. циклов стирания и программирования и т.д.

Заключение

Можно расценить эту статью как рекламную и не верить авторам на слово. Но вместо этого стоит поговорить с разработчиками, которые попробовали в деле STM32, или почитать форумы по электронике в интернете. Отзывы в большинстве случаев –положительные, а иногда — очень положительные, претензии относятся лишь к качеству документации и к исполнению интерфейса I2C.

Разработчик, который решит попробовать семейство STM32, не разочаруется. Платформа STM32 идеальна для перехода с 8-разрядного МК на 32-разрядный, и для этого STMicroelectronics специально разработала самые доступные средства на рынке.

Ссылки

1. http://www.arm.com/products/processors/cortex-m/index.php.

2. http://www.st.com/internet/mcu/family/141.jsp.

3. http://www.icbase.com/hotic/html/docs/brstmtools0209.pdf.

4. http://www.terraelectronica.ru/news_postup.php?ID=1669&Text=te stm32&Gde=1&Page=1.

5. http://www.rapidstm32.com.

6. http://www.coremark.org/benchmark/index.php.

Оставьте отзыв

Ваш емейл адрес не будет опубликован. Обязательные поля отмечены *