Еще совсем недавно наиболее популярными на рынке являлись 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.