STM32 - универсальное решение на ARM-ядре
Вступление
Микроконтроллеры STM32 появились осенью 2007 года и сразу получили самую высокую оценку во многих авторитетных изданиях, а также в среде разработчиков встраиваемых приложений. Построенные на базе современного ядра ARM CORTEX-M3, микроконтроллеры STM32 обеспечивают сочетание высокой производительности, низкой потребляемой мощности и невысокой цены.
Обращает на себя внимание относительная компактность ядра микроконтроллера на кристалле. Основное место на нем занимает память. То есть цена STM32 в большей степени зависит от размера встроенной flash и в несколько меньшей степени - от наличия той или иной периферии. Компания ST учла этот момент, выпустив две полностью дополняющие друг друга серии Performance и Access. Серия Access предназначена для бюджетных приложений, не требующих максимальной производительности и расширенной периферии. С объемом flash от 16 кБ до 512 кБ эти микроконтроллеры по соотношению цена-функциональность оставляют позади большую часть 32- и 16-разрядных микроконтроллеров, и даже претендуют на использование в 8-разрядных приложениях. Серия Performance, полностью повторяя серию внешне в части раскладки выводов корпусов и широты номенклатуры, предлагает больше возможностей, имея на борту дополнительные АЦП, специальные ШИМ-таймеры, USB 2.0 full speed и CAN 2.0B . Кроме того, эта серия работает на более высокой тактовой частоте 72 МГц в отличие от 36 МГц серии Access. При этом сохраняется совместимость между сериями, то есть для каждого наименования серии Access существует аналог серии Performance. Серия Performance доступна также в исполнении для расширенного диапазона температур -40...105°С.
Архитектура
STM32 использует 64-разрядную шину flash-памяти с двумя 64-разрядными буферами предвыборки, что в большинстве случаев избавляет от задержек, связанных с тем, что flash, в отличие от ядра CORTEX M3, не работает на столь высоких скоростях (72 МГц). Впрочем, эта схема предвыборки может быть отключена по желанию пользователя. Ограничения скорости flash-памяти можно также обойти, воспользовавшись тем, что STM32 позволяет выполнять код из SRAM на максимальной тактовой частоте. Можно использовать SRAM как некий аналог кэш-памяти, загружая туда критичные к быстродействию подпрограммы, такие как цикличные алгоритмы DSP и обработка прерываний.
В своей практике разработчики часто сталкиваются со случаями, когда производительность быстрого ядра сводится на нет медленной периферией, или случаями, при которых большие объемы данных переносятся в/из микроконтроллера и занимают шину или отбирают много ресурсов ядра на их перенос. STM32 свободен от этих ограничений, имея несколько внутренних шин (см. рисунок 1), а также мощный семиканальный (в новых STM32 -двенадцатиканальный) DMA-контроллер, разгружающий ядро от ненужной работы. Линии ввода/вывода STM32 совместимы с 5 В сигналами и индивидуально настраиваются как входы с опциями притяжки к земле/питанию или выходы с регулированием крутизны фронтов. Выводы, предназначенные для работы периферии, могут быть переназначены, позволяя производить гибкую настройку под конкретное приложение.
Рис. 1. Блок-схема STM32
Традиционная load/store RISC-архитектура не всегда удобна для операций над отдельными битами из-за того, что между загрузкой и сохранением может произойти прерывание. Архитектура CORTEX-M3 устраняет эти затруднения посредством технологии «bit-banding», обеспечивающей атомарный доступ к отдельным битам. В дополнение к этому STM32 содержит теневые «set/reset»-регистры портов ввода-вывода для случаев, в которых требуется изменение нескольких битов за раз. Часто в критических с точки зрения безопасности приложениях, таких как транспортные средства, медицинская техника и промышленное оборудование, одна единственная линия порта ввода-вывода несет на себе ответственность за вероятные катастрофические последствия. STM32 имеет уникальную особенность защиты конфигурации линий ввода/вывода от непреднамеренных изменений; тем самым программные сбои изолируются от отказов всей системы. Каждый STM32 содержит SPI- и I2C-порты, а также два USART. При этом микросхемы с большим количеством памяти несут на себе и большее количество периферии:
- до пяти USART 4,5Мбит/с с функциями LIN master/slave, ISO7816, IrDa, Modem Control,
- до трех SPI 18МГц master/slave, SD/MMC,
- до двух I2C SMBus/PMBus,
- до четырех 16-разрядных таймеров по 4IC/OC/ШИМ каждый,
- до двух расширенных ШИМ-таймеров с выработкой комплементарных ШИМ-сигналов и генерацией времени задержки включения (dead time) по 4IC/OC или 6 ШИМ-сигналов с разрешением 13,8нс каждый. Дополнены схемой синхронизации и специальным входом break для мгновенного перевода выходных сигналов в неактивное или заранее заданное состояние,
- до трех АЦП до 21 канала с 12-разрядным разрешением и временем выборки 1мкс. АЦП могут работать в спаренном режиме, производя одновременную выборку-хранение и поднимая таким образом частоту выборки в два раза. Функция сканирования двух групп каналов с возможностью прерывания сканирования одной группы для инжектирования сканирования другой группы. Функция аналогового сторожа на любом из каналов производит независимое сравнение значения сигнала с пороговыми величинами. АЦП может проводить самокалибровку, уменьшая ошибки измерений, связанные с уходом параметров внутренних конденсаторов от температуры.
- ЦАП двухканальный 12-разрядный.
- I2S master/slave с частотой выборки от 8 до 48кГц.
- SDIO-интерфейс для SD(Secure Digital), SDIO(Secure Digital Input/Output) и MMC (Multi-Media Card).
- FSMC- гибкий контроллер статической памяти. Интерфейс для работы с NOR и NAND flash, SRAM, Compact flash и 16-разрядными PC картами памяти (PCMCIA). Поддерживает режимы Intel 8080 и Motorola 6800 для организации параллельного интерфейса с ЖКИ. Позволяет выполнять код из внешней памяти.
Во все STM32 встроен температурный датчик и прецезионный источник опорного напряжения. Их сигналы заведены на два специальных канала АЦП. Для увеличения точности допускается подача внешнего опорного напряжения.
Приложения управления в реальном масштабе времени требуют большого количества таймеров. STM32 хорошо вписывается в эти требования, благодаря:
- Таймеру часов реального времени с 1,4мкА потребления при батарейном питании и возможности подключения внешнего кварцевого резонатора 32768Гц;
- Таймеру непрерывного счета «SysTick», который задает базу времени для операционных систем реального времени;
- Двум отдельным сторожевым таймерам.
(Один таймер оконного типа позволяет детектировать отклонения в нормальной работе программы. Второй таймер управляется независимым RC-генератором и позволяет отслеживать изменения частоты основного тактового генератора. Оба таймера запускаются аппаратно в байте опций микроконтроллера).
- четырем 16-разрядным таймерам с функциями IC/OC и ШИМ.
- двум расширенным 16-разрядным таймерам управления со специальными функциями, идеально подходящими для управления трехфазными электродвигателями.
Универсальность системы увеличивается благодаря имеющейся системе каскадирования и синхронизации таймеров. На рисунке 2 рассмотрен пример синхронной работы расширенного ШИМ-таймера с датчиком положения ротора электродвигателя. STM32 аппаратно отслеживает отношение фаз на входе и соответствующим образом корректирует накопленные отсчеты.
Рис. 2. Диаграмма синхронной работы расширенного IШИМ-таймера с датчиком положения ротора э/двигателя
Ядро CORTEX-M3 имеет встроенный конфигурируемый контроллер вложенных прерываний и реализует технологию «tail-chaining», позволяющую минимизировать стековые операции и уменьшить время задержки между прерываниями до 6 циклов. В STM32 можно сконфигурировать до 19 входов источниками внешних событий или прерываний. Детекторы фронтов чувствительны к импульсам длительностью менее 1 цикла.
Гибкая, имеющая множество настроек система тактирования STM32 работает с несколькими генераторами, позволяя получать частоты вплоть до максимальной путем умножения:
- Основной кварцевый генератор 4-16МГц;
- Внутренний калиброванный 8МГц ±1% RC-генератор;
- Часовой микропотребляющий кварцевый генератор 32,758кГц;
- Дополнительный микропотребляющий RC-генератор 40кГц.
Встроенная система безопасности автоматически переключает тактирование на внутренний RC-генератор в случае отказа основного.
Применение
В чем преимущество использования STM32 в системах с батарейным питанием?
Первый и немаловажный факт: потребление в полнофункциональном режиме составляет 0,5 мА/МГц (или 36 мА при 72 МГц и комнатной температуре). Выполнение программы из оперативной памяти не только позволяет достичь максимальной производительности, но и экономит более чем в два раза электроэнергию (14,4 мА при 72 МГц). Кроме этого каждый блок периферии имеет свой «выключатель», отключающий тактирование в моменты простоя.
Наряду с присущей ядру CORTEX-M3 высокой производительностью: порядка 1,25 DMIPS/МГц, достигающей 90 DMIPS на 72 МГц - ядро имеет встроенные механизмы экономии электроэнергии. Здесь можно упомянуть следующий факт: выход из режима останова с потреблением 14 мкА и сохранением содержимого SRAM занимает у STM32 всего 5,4 мкс. А выход из дежурного режима с потреблением около 2 мкА и функционирующими микропотребляющими таймерами занимает 50 мкс. Доступен режим, в котором ядро остановлено и работает только периферия. За счет комбинации высокой производительности и быстрых переходов между режимами работы STM32, усредненные величины потребления электроэнергии можно довести в приложении до значений, сравнимыми с показателями потребления лучших ультранизкопотребляющих микроконтроллеров.
Внутренний стабилизатор напряжения обеспечивает рабочие 1,8 В. При очень простой организации питания (одно питающее напряжение от 2 до 3,6 В) и надежной системе мониторинга и сброса (допустимая скорость нарастания питающего напряжения вплоть до бесконечности), контроллеру STM32 достаточно для запуска всего нескольких фильтрующих конденсаторов. Предусмотрено батарейное питание для сохранения хода часов и хранения от 20 до 84 байт оперативной пользовательской информации (например, ключей шифрования). Специальный вывод защиты от несанкционированного доступа обеспечивает мгновенное стирание этой информации в момент поступления внешнего сигнала. Переключение между основным и батарейным питанием происходит автоматически, значительно продлевая ресурс батареи.
Средства разработки
В системную память микрокроконтроллера на заводе записывается загрузчик, позволяющий перепрограммировать Flash-память через последовательный интерфейс USART. Средства проектирования просты, наглядны и доступны, ведь это ARM-микроконтроллер. Инженеры, ранее работавшие с ARM7 микроконтроллерами, смогут быстро перейти на STM32, достаточно только обновить программное обеспечение средств проектирования.
Заключение
Вполне очевидно, что выпустив на рынок семейство 32-разрядных микроконтроллеров STM32, компания STMicroelectronics несколько изменила свойственный ей приоритет работы с большими ключевыми заказчиками и специализированными продуктами. Выпустив действительно интересный и конкурентноспособный продукт, компания вышла на массовый рынок и позволила разработчикам использовать самые современные технологии и продукты. С уверенностью можно сказать, что подобная практика продолжится и далее, с выходом нового 8-разрядного семейства STM8S (уже сейчас доступна автомобильная версия STM8A).
Ответственный за направление в КОМПЭЛе - Александр Райхман
LiyeraZida пишет... Вас беспокоит мусор? Не знаете куда деваться от скопленного мусора в квартире?
01/09/2015 21:34:53 |
LiyeraZida пишет... Вас беспокоит мусор? Не знаете куда деваться от скопленного мусора в квартире?
02/09/2015 01:31:43 |
LiyeraZida пишет... не знаете куда девать мусор?
26/09/2015 22:31:47 |
Ваш комментарий к статье | ||||