№2 / 2011 / статья 3

STM32: эпоха 32-битных микроконтроллеров наступила

Джафер Меджахед (КОМПЭЛ)

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

 

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

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

 

Продажи МК на ARM Cortex-M3 по всему миру

 

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

В 32-битном сегменте разработчики редко работают с ассемблером, они в основном используют языки высокого уровня, например, язык C. Поэтому если вдруг понадобится переход с одного производителя на другой (срыв поставок, отсутствие нужных библиотек, новые функциональные требования, увеличения цен, и т.д.), то часть программного кода, связанная с ядром, даже не потребует изменения. Необходима будет только работа на уровне драйверов периферии. В итоге получается, что если писать программный код с четким делением между ядром и периферией, то можно обеспечить условия для очень быстрого перехода с одного производителя на другой. Остается, конечно, проблема переделки печатной платы (см. следующий раздел статьи).

Семейство STM32 [2, 3] — это не только микроконтроллеры на ядре Cortex-M3. Архитектура Сortex-M включает в себя также ядра Сortex-M0 и Cortex-M4. Рисунок 2 показывает взаимосвязь между этими ядрами.

 

Семейства ядер Сortex-M

 

Рис. 2. Семейства ядер Сortex-M

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-M3, можно будет далее сделать его более дешевые и простые варианты на Cortex-M0 или более дорогие и сложные изделия на Cortex-M4 с минимальными затратами на переработку программного кода. Поскольку Сortex-M3 уже стал мировым стандартом, и поскольку Cortex-M0 и Cortex-M4 являются натуральными продолжениями Cortex-M3, никого не удивит, если они также станут стандартами в ближайшее время. Выпуск STM32 с ядрами Cortex-M0 и Cortex-M4 от компании STMicroelectronics намечается на 2011 год. Другие производители также активно работают в этом направлении (Texas Instruments, Freescale, NXP и т.д.)

В итоге можно сказать, что выбирая STM32, разработчик выбирает самый популярный микроконтроллер на Cortex-M3, с перспективой перехода на другие ядра Cortex-M, но при этом не закрывает себе двери для продукции остальных производителей. Итог — огромный выбор и большая гибкость. То есть, основное преимущество STM32 — то, что всегда есть возможность его не использовать!

 

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

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

 

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

 

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

Если, например, разработчику понадобился корпус LQFP 64 и минимальный набор памяти и функционала, то его выбор остановится на микросхеме STM32F100R4 (16 Кбайт флэш-памяти, 4 Кбайт ОЗУ, 24 МГц). Далее потребовался более быстрый АЦП и флэш-память размером 128 Кбайт. Тогда он переходит на микросхему STM32F101RB. Все вводы-выводы в этих микросхемах идентичны, то есть плату трогать не надо. Необходимо только обновление программного кода. Далее в изделии потребовался USB-интерфейс. Тогда на помощь приходит микроконтроллер STM32F103RE, тоже без изменений на уровне печатной платы. Наконец, на основе этого изделия решили сделать портативный прибор. Тогда разработчик переходит на микроконтроллер STM32L151RB, который имеет более низкое потребление и сохраняет все характеристики STM32F103RE по памяти и интерфейсам. В последним случае разработчик должен обратить внимание на одно незначительное отличие (сигнал Vbat становится Vlcd), но скорее всего, ему также не потребуется ничего менять на плате. Можно посмотреть на процесс и с обратной стороны. Например, при разработке рассматривался богатый набор функционала для конечного изделия, но уже при выходе на производство выяснилось, что большая часть этого функционала избыточна. Можно взять более простой микроконтроллер из линейки, сократив расходы на комплектующие. Pin-to-pin совместимость — это идеальный рычаг, чтобы удешевить свои решения, поскольку проходить этот процесс в обратную строну (меньше памяти, меньше периферии, и т.д.) значительно проще. Если во время разработки по максимуму предусмотреть все будущие варианты своего изделия на основе pin-to-pin совместимости, то можно с большой эффективностью запускать в производство множество разнообразных изделий. В итоге, потратив свои усилия на одну разработку, разработчик имеет возможность масштабировать свои изделия и достаточно быстро выполнять требования рынка.

Надо уточнить, что степень Pin-to-pin совместимости — разная. Рисунок 4 представляет общую картину по pin-to-pin совместимости между различными сериями семейства STM32 и краткое описание основных свойств этих линеек. Стандартная периферия (SPI, USART, I2C, таймеры, сторожевые таймеры, схемы сброса и т.д.) не указаны, поскольку они общие для всех линеек. Линейка STM32W (Cortex-M3 + ZigBee) отсутствует на рисунке 4, поскольку не имеет никакой pin-to-pin совместимости с семействами STM32F-1, STM32F-2 и STM32L. Это связано с тем, что она была разработана совместно с компанией Ember, предоставившей радиочастотную часть, что ограничило свободу разработки для компании ST.

 

Pin-to-pin совместимость внутри семейств STM32

 

Рис. 4. Pin-to-pin совместимость внутри семейств STM32

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

Если все-таки пришлось поменять количество входов-выходов (сменить корпус), то требования к повторной трассировке тоже сокращены до минимума, поскольку в семействе STM32 все сигналы сохраняются по максимуму с одной или с другой стороны корпуса, каким бы не был его размер. Это также значительно упрощает работу.

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

 

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

Когда появляется интерес к микроконтроллеру, хочется попробовать его «вживую». Для этого нужны отладочные платы. В случае семейства STM32 количество отладок и их возможностей впечатляет [3]. Например, имеется отладка STM32VLDiscovery от самого производителя, стоимость которой составляет около 300 рублей. Она имеет встроенный программатор и позволяет работать с микроконтроллером STM32F100. Это дешевый и быстрый путь ознакомления с семейством STM32. С другой стороны, имеются более сложные отладки со всем нужным набором функционала от сторонних производителей — Keil, IAR, Raisonnance и т.д. Многие небольшие компании также создали свои решения в области отладок для STM32. Российского разработчика могут заинтересовать решения компании Терраэлектроника [4], более доступные по стоимости, с документацией и технической поддержкой на русском языке, которые одновременно являются встраиваемыми модулями, что идеально для небольших серий изделий. STM32VLDiscovery также можно использовать как встраиваемый модуль. Отметим, что есть еще уникальные отладки для микроконтроллеров STM32, например, интересный модуль inemo v2 (STEVAL-MKI062V2), который имеет целый набор датчиков (датчик температуры, датчик давления, два гироскопа, трехосевой акселерометр с компасом) и предоставляется в комплекте с ПО для быстрой разработки решений. Также существует полноценная отладка для работы с электроприводом STM3210B-MCKIT, которая включает в себя трехфазный мотор, десятиамперный трехфазный инвертор, источник питания и собственно микроконтроллерную часть.

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

Для разработки ПО микроконтроллера необходима среда разработки и Си-инструментарий. Популярность микроконтроллеров на основе ARM-ядер очень высока, и, следовательно, количество разнообразных вариантов средств разработки — платных и бесплатных — просто огромно. Если вы ранее использовали одно из решений на ARM-ядре, то переход на ARM Cortex-M3 очень прост, вам лишь необходимо обновить ПО ваших средств разработки. В статье «STM32 с нуля», опубликованной в этом же номере «Новостей электроники», можно найти более подробное описание существующих решений для разработки ПО.

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

  • Библиотека для всей стандартной периферии (UART, SPI, I2C, CAN, AЦП, ЦАП, таймеры, все источники тактирование, FSMC, IO, DMA, RTC, и т.д.);
  • Библиотека для USB-интерфейса (с такими режимами как mass storage, HID, DFU, CDC, audio, а также хост full speed);
  • Библиотека для 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 не поддерживает Linux. Разработчикам, которым это требуется, лучше обратить внимание на такие ядра, как ARM9. Но ядро Cortex-M3 в сравнении с ARM7 улучшено с точки зрения RTOS. Ядро имеет два привилегированных режима и два специализированных стека. Также оно имеет большую гибкость с точки зрения установления приоритетов среди прерываний и дополнительный системный таймер Systick. Все это позволяет лучше строить операционные системы реального времени. Для микроконтроллеров STM32 разработано уже множество операционных систем, часть из них приведена в таблице 1 (полный список можно посмотреть на официальном сайте STMicroelectronics).

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

Компания Наименование ОС Описание ROM RAM
FreeRTOS.org FreeRTOS Надежная портируемая RTOS с открытыми исходными кодами в двух вариантах – платный и бесплатный, с возможностью технической поддержки. Также есть версия SafeRTOS, сертифицированная по стандарту IEC 61508. 4,2K 1K
Micrium μC/OS-II Легко портируемая, масштабируемая RTOS, поддерживающая многозадачность (до 250 задач), сертифицированная для критических условий эксплуатации (медицина, авиационная электроника) 16К
IAR PowerPaс Полноценная RTOS с высокоэффективной файловой системой. Поставляется с многими примерами и, по выбору – с USB-стеком для приборов класса HID, MSD и CDC. 2…4K 51 байт
Quadros System RTXC Quadro Гибкая, масштабируемая RTOS с большим набором стеков и драйверов для периферии (TCP/IP, USB, файловая система, графические GUI-инструменты, CAN и т.д.). Поддерживается средством разработки VisualRTXC – идеальная среда для начинающих работу с 32-битными микроконтроллерами. <20K <4K
Keik ARTX-ARM Многозадачная вытесняющая RTOS, поддерживающая почтовой ящик и pool памяти, включает файловую систему и передачу данных по протоколу TCP/IP. 6K 0,5K
CMX CMX-RT Операционная система реального времени, поддерживающая многозадачность, без отчислений. <10K <1K

Существуют уникальные возможности работы с STM32, например, специальные библиотеки для модуля Simulink [5] в ПО Matlab от компании Mathworks, предназначенные для генерирования из Simulink готового C-кода под микроконтроллеры STM32. То есть это — возможность разработки программного кода в графическом формате. Компания National Instruments для своего знаменитого ПО Labview предоставляет путь для миграции на Cortex-M3.

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

 

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

STMicroelectronics отличается от других производителей полупроводников прекрасным соотношением «цена/функционал» при сохранении самых высоких стандартов качества. Семейство STM32 — яркий пример этого. В этом семействе можно найти очень дешевые микроконтроллеры серии Value Line STM32F100, которые достигают цены ниже одного доллара, при этом имеют хороший набор периферии. Если сравнивать их с первыми появившимися на рынке решениями на Cortex-M0, то за пару десятков дополнительных центов разработчик получит в разы больше функционала.

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

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

В некоторых линейках 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 — циклический избыточный код). Данная функция позволяет не загружать ядро процессом проверки качества обмена данных. Все микроконтроллеры STM32, кроме STM32W, имеют множество многофункциональных 16-битных таймеров (STM32F-2 имеет 32-битные таймеры) и один или больше 12-битных ЦАП. Семейство STM32F-2 содержит интересную новинку — интерфейс для подключения камер DCMI, который может работать со скоростью до 54 Мбайт/сек, то есть поддерживать камеры с матрицей примерно до 1 мегапикселя. Также этот интерфейс может получать данные от камеры в сжатом формате JPEG. Это открывает новые возможности для систем безопасности, где не требуется сложная обработка видеосигнала, а достаточно более примитивного функционала, такого, как выполнение фотоснимка во время хищения или функция веб-камеры для передачи данных через встроенный Ethernet. Интерфейсы FSMC и SDIO помогут динамически сохранить во внешней памяти плотный поток данных с камеры. Линейки STM32L, STM32F-2 и все изделия линейки STM32F-1 c памятью больше чем 512 Кбайт имеют встроенный модуль защиты памяти MPU, который позволяет дополнительно повысить безопасность системы. MPU позволяет разделить память на сегменты, установить для них разные уровни доступа (read, write, execute — как в unix). Это позволяет заблокировать для программного кода доступ к отдельным зонам памяти и установить полноценные привилегированные и непривилегированные режимы. Также MPU генерирует прерывание в случае, если программа попробовала получить доступ к защищенным зонам памяти. В семействе STM32 микроконтроллеры с объемами flash-памяти более 512 Кбайт имеют полезную особенность — память разделена на два банка. Это позволяет размещать в каждом банке две отдельные прошивки микроконтроллера и при старте микроконтроллера выбирать ту или иную прошивку, меняя кардинально весь функционал устройства. Также это позволяет динамически, без остановки основной работающей программы в одном банке, загружать в другой банк новый вариант прошивки по одному из коммуникационных интерфейсов и затем быстро переводить микроконтроллер на новый вариант работы ПО.

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

 

Ferrari на 176 ножках

Одна из сильнейших сторон ядра Cortex-M3 — его высокая производительность, которая является результатом всего накопленного опыта компании ARM в области разработки процессорных ядер. Например, ядро Сortex-M3 имеет отдельную шину для данных, отдельную шину для инструкций и отдельную шину для управления периферией (архитектура типа Гарварда). Это избавляет от задержек, которые могут возникнуть с архитектурами Фон — Неймана, где весь поток информации к ядру идет через одну шину. Математические способности ядра также высоки: аппаратное умножение 32 бит на 32 бит включено в ядро Cortex-M3 и выполняется за один цикл частоты тактирования, если результат требуется в 32-битном формате. Аппаратное деление выполняется за 2…12 циклов в зависимости от сложности деления. Значительно улучшена вся схема прерываний: встроен контроллер прерываний NVIC, который позволяет установить до 256 приоритетов между прерываниями с возможностью их динамического изменения. Потеря времени при возникновении конкурирующих прерываний значительно улучшена (12 циклов вместо 24…42 в случае ARM7). Cortex-M3 поддерживает набор инструкций Thumb-2 (смесь 16-битных и 32-битных инструкций без перехода) и оптимизированное использование памяти RAM (bit banding). Все это позволяет иметь теоретическую производительность 1,25 DMIPS/MГц при малом размере программного кода в памяти.

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

Таблица 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

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

 

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

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

В таблице 3 указаны типичные значения электропотребления микроконтроллеров STM32. Микроконтроллеры линейки STM32L изготовляются по специализированному технологическому процессу, где утечки транзисторов минимизированы, и, соответственно, эти изделия имеют наилучшие показатели. В таблице аббревиатура TBD означают «будет определено позднее» (to be defined), то есть измерение этих параметров еще не было выполнено производителем. Это связано с тем, что микроконтроллеры линейки STM32F-2 только что вышли на рынок.

Таблица 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,0 мкА

Основное преимущество линейки STM32L выражается в режимах STOP и Standby, где энергопотребление падает до 1,6 мкА и 300 нА соответственно. Режим STOP — это режим, в котором все источники тактирования остановлены, но содержимое RAM-памяти сохраняется, и переход в активный режим требует всего нескольких микросекунд. В режиме Standby все отключено полностью, кроме часов реального времени. Пробуждение от этого режима уже требует нескольких десятков микросекунд. Надо еще отметить, что в линейке STM32L есть режим Low Power Run, в котором ядро полностью работает от низкочастотного внутреннего тактового генератора (32 кГц), и в этом режиме потребление падает до 10 мкА.

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

 

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

 

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

 

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

 

Скрытое преимущество

Есть еще одно скрытое преимущества семейства STM32. То, что STM32 — вероятно, самый лучший контроллер с Cortex-M3 на рынке, многие понимают. И всем хочется присоединиться к этому успеху. Поэтому многие российские компании-дистрибьюторы электронных компонентов начали активно заниматься этим семейством. Что это означает для разработчика? — Что количество обученных инженеров и количество информации и документации на русском языке будет быстро увеличиваться. То есть возможностей по технической поддержке будет все больше и больше. Это косвенно означает и хорошую доступность этого семейства на складах, что также является немаловажным аспектом.

 

Заключение

Вы можете считать эту статью рекламной и не верить автору на слово. Вместо этого просто поговорите с разработчиками, которые попробовали в деле STM32, или почитайте электронные форумы. Отзывы в большинстве случаев положительные, а иногда — очень положительные; претензии относятся к качеству документации и к исполнению интерфейса I2C. Еще один нейтральный способ для сравнения: Google trends [7]. Google trends показывает историю количества запросов по тому или иному слову. То есть, благодаря этому поисковому средству можно увидеть, в каком объеме и с какой тенденцией идет поиск на некую тему. Мы решили сравнить семейства «STM32», «Stellaris» (Texas Instruments), «AVR32» (Atmel) и «PIC32» (Microchip). Результат можно увидеть на рисунке 6. Очевидно, что есть большой и постоянно растущий интерес в мире к семейству STM32. Также можно увидеть, что ядра собственной разработки или находятся на том же уровне (PIC32) или интерес к ним постепенно снижается (AVR32), тогда как спрос на другое семейство микроконтроллеров на ядре Cortex-M3 (Stellaris) растет. Хочу отметить, что количество запросов в поисковых системах не прямо пропорционально количеству реальных продаж.

 

Сравнение поисков на темы «STM32», «Stellaris» и «AVR32» в Google trends

 

Рис. 6. Сравнение поисков на темы «STM32», «Stellaris» и «AVR32» в Google trends

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

 

Ссылки

  1.  http://www.arm.com/products/processors/cortex-m/index.php
  2.  http://www.st.com/internet/mcu/family/141.jsp
  3.  http://www.st.com/internet/com/press_release/p3029.jsp
  4.  http://www.terraelectronica.ru/news_postup.php?ID=1669&Text=testm32&Gde=1&Page=1
  5.  http://www.icbase.com/hotic/html/docs/brstmtools0209.pdf
  6.  http://www.rapidstm32.com/
  7.  http://www.coremark.org/benchmark/index.php
  8.  http://www.google.ru/trends.

Получение технической информации, заказ образцов, поставка — e-mail: mcu.vesti@compel.ru

 

 

Наши информационные каналы

Теги:
Рубрики:

О компании ST Microelectronics

Компания STMicroelectronics является №1 производителем электроники в Европе. Компоненты ST широко представлены в окружающих нас потребительских товарах – от iPhone до автомобилей разных марок. Лидеры индустриального рынка выбирают компоненты ST за их надежность и выдающиеся технические параметры. В компании ST работает 48 000 сотрудников в 35 странах. Производственные мощности расположены в 12 странах мира. Более 11 тысяч сотрудников заняты исследованиями и разработками – инновационное лидерство ...читать далее