STM32F0 – новый стандарт для недорогих
решений |
32 разряда, более высокая
производительность, больше периферийных устройств и более совершенные
инструменты разработки. Но при этом – по цене самых недорогих 8- и
16-разрядных микроконтроллеров. Это – новая линейка 32-разрядных
микроконтроллеров STM32F0 на ядре Cortex-M0 от STMicroelectronics.
|
STM32W — 24МГц/30DMIPS МК
для беспроводной связи;
STM32L — 32МГц/33DMIPS МК с
батарейным питанием;
STM32L0 — 32МГц/33DMIPS МК с
батарейным питанием;
STM32F0 — 48МГц/38DMIPS МК
для ультрадешевых приложений;
STM32F1 — 72МГц/61DMIPS МК
общего назначения;
STM32F2 — 120МГц/150DMIPS
высокопроизводительные МК;
STM32F3 — 72МГц/90DMIPS —
МК комбинированных сигналов c DSP и FPU;
STM32F4 — 168МГц/210DMIPS —
высокопроизводительные МК с DSP и FPU.
STM32F7 — 200МГц/428DMIPS —
высокопроизводительные МК с DSP и FPU.
STM32H —
400МГц/856DMIPS — высокопроизводительные МК с ядром Cortex-M7. |
|
|
DISCOVERY NUCLEO
STM32-OPEN |
|
Ядро
Cortex-M0 является на сегодняшний день самым «маленьким» из всего
многообразия ядер ARM. Ядро характеризуется исключительно малой площадью
на кристалле, низким потреблением и очень высокой плотностью кода, что
позволяет достигать 32-битной производительности при стоимости 8/16-битных
решений. Компания ARM возлагает на ядро Cortex-M0 задачу завоевания рынка
недорогих решений, где стандартом де-факто стали 8/16-бит
микроконтроллеры. |
|
|
Серия контроллеров
STM32F0
со склада в Харькове |
|
Преимущество 32-битных решений
Сегодня встраиваемые микропроцессорные системы призваны обеспечить большое
количество возможностей. Все новые устройства должны иметь возможность
подключения к другим внешним устройствам, системы постоянно требуют
повышения точности работы, необходим графический интерфейс с возможностью
сенсорного управления, использование сложной обработки сигнала и поддержка
воспроизведения мультимедиа.
В недалеком прошлом разработчики, ограниченные значительной стоимостью
высокопроизводительных контроллеров, вынуждены были строить свои проекты
на низко производительных 8 и 16-битных микроконтроллерах. Теперь, с
появлением новых поколений 32-битных микроконтроллеров, таких как
STM32F0 на основе ядра
Cortex M0, сопоставимых по цене с 8-битными решениями, разработчики могут
строить недорогие производительные многофункциональные системы. Кроме
того, стремительное развитие инструментов разработки, таких как Keil
MDK-ARM и IAR Embedded Workbench, позволяет программистам быстро освоить и
использовать в полном объеме возможности продвинутой архитектуры
STM32F0. Также затронем тот
факт, что весь инструментарий, которые разработчики использовали для более
ранних ядер ARM, будет доступен и для Cortex-M0, т.е. переход будет очень
простым - те же среды отладки, компиляторы, программаторы-отладчики и так
далее. Приплюсуем сюда еще совместимость по выводам с более ранними
линейками STM32F1x - и получаем великолепные возможности проектирования и
масштабирования системы при разработке!
Вопрос производительности микроконтроллера является важным для большинства
разработчиков. На рисунке 1 показано сравнение производительности
STM32F0 и различных 8 и
16-битных микроконтроллеров (Competitor A, B, С и D) при проведении теста
Benсhmark. Значение CoreMark отражает абсолютную производительность
микроконтроллера (большие значения соответствуют более высокой
производительности), а отношение CoreMark/MHz представляет собой
приведенное значение Coremark к частоте микроконтроллера. Из диаграммы
следует однозначный вывод, что по эффективности исполнения кода
микроконтроллер STM32F0
является бесспорным лидером. |
|
|
Серия контроллеров
STM32F0
со склада в Харькове |
|
Рис. 1. Сравнение производительности STM32F0 и
8/16-битных микроконтроллеров |
Есть несколько причин, по
которым решения на STM32F0
имеют более низкую стоимость по сравнению с аналогичными на 8- и 16-битных
контроллерах. В частности, потому что эти микроконтроллеры, как правило,
основаны на устаревших архитектурах и имеют много ограничений, которые
замедляют процесс разработки, заставляя разработчиков искать обходные
пути. Например, чтобы выполнить умножение двух 16-разрядных чисел (16 х
16) стандартному 16-ти разрядному процессору потребуется четыре умножения
и несколько операций сложения, в зависимости от реализации. В свою
очередь, 8-разрядному микроконтроллеру потребуется еще больше циклов. С
STM32F0 это занимает всего
одну команду. В результате исполняемый код эффективнее использует ресурсы
микроконтроллера, что приводит к более быстрому выполнению операций, более
высокой производительности на МГц, дает большую плотность кода и большую
эффективность расходования энергии. Чем меньше каждая команда требует
тактов для выполнения, тем меньшего объема кода требуют приложения, и тем
легче производить их отладку. А это существенно сокращает время,
необходимое для проведения разработки. Вместе эти преимущества приводят к
снижению стоимости конечной системы.
Микроконтроллеры STM32F0 по
сути очень сильно похожи на STM32 F1 на основе ядра Cortex M3, но с
усеченным набором команд. Это означает что программный код, работающий на
STM32F0, будет в полном
объеме работать и на контроллерах STM32F1 и более старших семействах
микроконтроллеров, поскольку ядра Cortex-M3 и Cortex-М4 включают все
инструкции Cortex-M0. И, в случае нехватки производительности у
контроллеров STM32F0,
разработчик сможет легко перейти на более производительные контроллеры.
STM32F0 содержит на борту
такую же периферию, как остальные контроллеры семейства STM32, в том числе
часы реального времени RTC, контроллер прямого доступа к памяти DMA, АЦП и
ЦАП с высоким разрешением, таймеры управления двигателем и разнообразные
интерфейсы. Эти интегрированные возможности дают большое преимущество в
сравнении с не столь богатыми по периферии микроконтроллерами на 8- и
16-разрядной архитектуре. Также на рынке присутствуют 8/16-битные
микроконтроллеры с большими объемами памяти и большим количеством
встроенной периферии, но, в связи с упомянутой выше более старой
технологией изготовления, цена на них зачастую неоправданно высока.
Например, наличие 32-битной шины дает не только увеличение скорости
передачи данных и вычислительной производительности, но повышает общую
надежность системы. Рассмотрим задачу чтения 12 (или 10) - битного АЦП с
помощью 8-битной шины, где процессор должен прочитать значение в АЦП за
два раза, чтобы захватить все значение целиком. Если происходит прерывание
между этими чтениями, то данные в АЦП могут быть перезаписаны следующим
преобразованием до того как прерывание будет завершено и второе чтение
будет выполнено. Чтобы предотвратить такую ситуацию разработчикам придется
каждый раз отключить прерывания, что значительно повышает вероятность
ошибки. А если хотя бы одно чтение АЦП будет выполнено с ошибкой, то
возможно произойдет сбой работы всей системы. |
|
|
Серия контроллеров
STM32F0
со склада в Харькове |
|
STM32F0
После рассмотрения общих преимуществ STM32 F0 в сравнении с 8- и
16-разрядными микроконтроллерами остановимся подробнее на самом
контроллере и его достоинствах. Обобщенная структура микроконтроллеров
STM32F0 представлена на
рисунке 2.
Рис. 2. Структура микроконтроллеров STM32F0
Основные
характеристики семейства STM32F0:
- ARM 32-бит Cortex-M0 CPU;
- Максимальная частота работы- 48МГц;
- До 64кб Flash памяти, до 8кб SRAM памяти;
- DMA-контроллер на 5 каналов;
- 12-бит АЦП на 16 каналов, время конвертирования- 1мкс;
- 12-бит ЦАП;
- До одиннадцати таймеров (16 и 32 разряда);
- Коммуникационные интерфейсы: I2C, USART (ISO 7816, LIN, IrDA), SPI, I2S,
HDMI;
- Контроллер сенсорных экранов;
- Аппаратное вычисление CRC, 96-битный уникальный ID;
- Часы реального времени (RTC);
- Потребление: 250мкA/МГц в активном режиме, 5мкА в режиме «STOP», 2мкА в
режиме «STANDBY» с активным модулем RTC;
- Расширенный температурный диапазон: -40...105°C;
- Корпуса UFQFN32, LQFP32, LQFP48, LQFP64.
Остановимся подробнее на некоторых особенностях нового микроконтроллера и
продолжим его сравнение с 8- и 16-разрядными архитектурами. |
Память
Микроконтроллеры STM32 F0 имеют до 8 кбайт SRAM-памяти. Она может быть
доступна как байт, полуслово (16 бит) или полное слово (32 бита) с нулевым
циклом ожидания. Объем встроенной Flash-памяти достигает 64 кбайт.
Для защиты от сбоев при работе со SRAM-памятью в контроллер встроена
проверка на четность. При тяжелых с точки зрения электромагнитных помех
условиях работы разработчик может задействовать эту функцию. К 32 битам
данных добавляются 4 бита для контроля четности (1 бит на байт). Четность
рассчитывается и сохраняется при записи в SRAM. Затем она автоматически
проверяется при чтении. Если обратная проверка не проходит, то
генерируется ошибка.
Микроконтроллеры STM32F0
были разработаны с учетом работы с операционными системами реального
времени. В целом тут больше заслуга компании ARM, которая придерживается
данной концепции для всех своих ядер Cortex-M. В обычном 8 или 16-битном
микроконтроллере операционная система и приложение делят стек, и сложные
программные вложения могут вызвать проблемы с переполнением стека и,
соответственно, крах всей системы. Во избежание таких проблем
STM32F0 имеет два стека:
один для приложений и один - для операционной системы. Это позволяет
защитить системную часть кода от фоновых задач операционной системы и,
кроме того, уменьшить расход оперативной памяти. |
|
|
Серия контроллеров
STM32F0
со склада в Харькове |
|
АЦП и ЦАП
Микроконтроллеры STM32F0
содержат аналогово-цифровой преобразователь ADC (Analog to Digital
Converter) с разрешающей способностью 12 бит и скоростью преобразования 1
мкc. Если есть необходимость уменьшить время преобразования, можно
уменьшить разрядность результата до 10, 8 или 6 бит. Количество входных
аналоговых каналов - 16. Удобная система настроек АЦП позволяет
производить однократные и циклические измерения, задавая нужные аналоговые
каналы. Для контроля температуры имеется встроенный температурный датчик,
подключенный к дополнительному входу АЦП.
Для преобразования цифрового сигнала в аналоговый микроконтроллер содержит
цифро-аналоговый преобразователь DAC (Digital to Analog Converter) с
разрешающей способностью 12 бит. Очень малая часть 8-битных
микроконтроллеров может похвастаться таким набором «аналоговой» периферии
с такими хорошими параметрами. Это делает
STM32F0 неоспоримым лидером
в системах, где требуется быстро и точно производить сбор данных с
датчиков и делать их обработку. |
Коммуникационные интерфейсы
Микроконтроллер STM32F0
содержит:
1. Два модуля интерфейса I2C (Inter-Integrated Circuit). Каждый модуль
может работать в режиме Master (с поддержкой режима multimaster) или Slave.
Интерфейс работает в режиме «Standard» на скорости до 100 кГц, режиме «Fast»
на скорости до 400 кГц и «Fast Plus» на скорости до 1 МГц.
2. До двух интерфейсов USART (Universal Synchronous-Asynchronous Receiver
Transmitter), работающих на скоростях до 6 Мбит/с. Также интерфейсы USART
имею поддержку интерфейсов LIN, IrDA и смарт-карт.
3. Два модуля SPI интерфейса (Serial Peripheral Interface), работающих на
скоростях до 18 Мбит/с в режимах Master или Slave. Поддерживается
дуплексная и симплексная передача данных.
4. Один модуль I2S интерфейса (Inter-Integrated Sound). Поддерживаются
режимы Master или Slave, выполнение операций с 16, 24 и 32-битным
разрешением.
5. Один модуль HDMI (High - Definition Multimedia Interface) совместимый
со спецификацией HDMI-CEC v1.4, работающий в режиме «STOP» для низко
потребляющих приложений.
Все коммуникационные интерфейсы поддерживают работу с контроллером DMA,
что позволяет STM32F0
поддерживать непрерывную передачу на шинах с максимальными скоростями без
остановки или затормаживания работы ядра микроконтроллера. Такой скорости
передачи данных невозможно добиться на 8- или 16-битном микроконтроллере,
который не поддерживает DMA. Кроме того, отличительной особенностью
STM32F0 по сравнению с
8-битными контроллерами является поддержка HDMI. Это имеет очень важное
значение для устройств, нацеленных на потребительский рынок. |
|
|
Серия контроллеров
STM32F0
со склада в Харькове |
|
Питание
Для питания микроконтроллера необходим всего один источник питания с
напряжением в диапазоне от 2 до 3,6 В. Питание на ядро поступает от
встроенного преобразователя напряжения. Для качественной работы аналоговой
периферии подача питания на нее осуществляется через отдельные ножки. Для
подачи батарейного питания также выделена отдельная ножка. Специально для
автономных приложений, требующих низкого потребления, контроллеры
STM32F0 имеют три
специализированных режима работы.
Режим SLEEP: Потребление уменьшается до нескольких мА. Ядро
останавливает свою работу, а вся периферия продолжает работать и
пробуждает процессор по наступлению определенного события.
Режим STOP: Потребление падает до нескольких мкА. Все тактирование
в зоне питания 1,8 В (от внутреннего стабилизатора) останавливается,
данные SRAM и регистров при этом сохраняются. Пробуждение происходит от
прерывания модуля EXTI.
Режим STANDBY: Потребление падает до единиц мкА. Внутренний
стабилизатор питания 1,8 В отключается, данные SRAM и регистров не
сохраняются. Пробуждение происходит от прерывания часов реального времени,
общего сброса или возрастающего фронта на ножке WKUP. Часы реального
времени могут продолжать свою работу.
|
Таймеры и система тактирования
STM32 F0 содержит 11 разнообразных таймеров разрядностью 16 или 32 бита:
таймер с расширенными функциями (управление двигателями), таймеры общего
назначения, два сторожевых таймера (независимый и оконного типа) и
24-битный системный таймер.
Сам факт большей разрядности и большего количества таймеров по сравнению с
8-разрядной архитектурой говорит о существенном преимуществе
STM32F0. Кроме этого
STM32F0 имеет два сторожевых
таймера, одним из которых является оконный сторожевой таймер. Эти два
таймера могут работать в режиме пониженного энергопотребления и
обеспечивают очень высокий уровень надежности работы приложений,
недостижимый в большинстве 8- и 16-битных микроконтроллеров.
Для тактирования микроконтроллера и встроенных часов реального времени
потребуются внешние кварцы на частоты 4...32 МГц и 32,768 кГц
соответственно. При критичной конечной цене устройства можно серьезно
сэкономить, используя встроенные генераторы. Стоит отметить, что
внутренняя система тактирования периферии имеют очень высокую
функциональность и гибкость.
Также отметим защитную систему Clock Security System (CSS), которая
позволяет микроконтроллеру перейти к тактированию от внутреннего
RC-генератора при отказе внешнего. Это обеспечивает работоспособность
системы при неисправности кварца, отсутствии контакта при плохой пайке или
же сбое внешнего источника тактового сигнала. |
|
|
Серия контроллеров
STM32F0
со склада в Харькове |
|
DMA
Контроллер прямого доступа к памяти DMA (Direct Memory Access) содержит
пять каналов. Посредством использования контроллера DMA можно осуществлять
автономную передачу данных из памяти в память, из периферийного устройства
в память, из памяти в периферийное устройство. При передаче значительных
объемов данных модуль DMA может использовать кольцевой буфер. DMA работает
со всей наиболее важной периферией: SPI, I2S, I2C, USART, таймеры, АЦП и
ЦАП.
Использование контроллера DMA стало неотъемлемой частью приложений,
которым необходимо перемещать большие объемы данных, независимо от того,
происходит ли вывод информации на внешнее устройство, или же чтение.
В подавляющем большинстве 8-разрядные микроконтроллеры не имеют в своем
арсенале таких мощных инструментов, как DMA. В традиционной 8-разрядной
архитектуре для перемещения каждого байта данных необходимо задействовать
процессор. При перемещении нескольких байтов необходимо несколько циклов
процессорного времени на каждый байт, поскольку требуются дополнительные
команды для организации циклов.
При использовании DMA в STM32F0
весь блок данных может быть перемещен без привлечения ресурсов ядра
микроконтроллера. После того как программа настроит работу контроллера DMA,
управляющего перемещением данных, перемещение происходит в фоновом режиме.
Фактически процессор переходит в низкопотребляющий режим, так как работа
ядра приостанавливается. Это также дает выигрыш в потреблении энергии
микроконтроллера и системы в целом.
Наличие DMA-контроллера может также значительно упростить и ускорить
процесс разработки. Рассмотрим чтение данных с высокоскоростной шины
передачи данных, например, SPI. При использовании 8-битных контроллеров
разработчику придется использовать многочисленные прерывания либо
постоянно опрашивать флаги готовности, а в промежутке между этими
действиями встраивать основной код программы. В
STM32F0 процессор может
работать независимо от интерфейса, и это позволяет разработчикам программы
использовать его для других задач, не беспокоясь о потере данных.
Поскольку архитектура STM32 использует внутреннюю матрицу шин, то
контроллер DMA может быть использован в сочетании с любой внутренней
памятью и периферией. Например, контроллер DMA может быть настроен на
регулярное считывание и сохранение данных из АЦП в памяти. После
завершения очередной операции чтения АЦП отключается до следующего чтения.
На самом деле, матрица шин в сочетании с пятиканальным контроллером DMA
позволяет STM32 F0 поддерживать выполнение кода из флэш-памяти параллельно
с другими операциями чтения и записи данных из памяти в память, периферии
в память или памяти в периферию.
Возможности компилятора также могут помочь разработчикам использовать
технологии DMA наиболее эффективно. Так IAR Embedded Workbench, например,
имеет функцию, которая автоматически изменяет данные программы для
максимального использования DMA. Это позволяет разработчикам достичь
высокой эффективности без долгой оптимизации расположения данных.
Компилятор достигает хорошего результата путем анализа того, как данные
используются приложением.
Рассмотрим программу, которая копирует две различные структуры данных с
использованием DMA. Каждая операция копирования требует отдельной операции
DMA. Тем не менее, после того, как компилятор соотносит структуры данных в
памяти, они могут быть скопированы с помощью одной передачи DMA.
Заметим, что каждый процессор может использовать DMA по-своему. Например,
Keil MDK-ARM, используя абстракции, такие как DMA, делает это через API,
что предотвращает привязывание кода к конкретному процессору. Это
позволяет разработчикам перенести код на другие устройства STM32, зная,
что код, использующий DMA, по-прежнему работает оптимально.
|
Отладка
С каждым годом инженеру приходится разрабатывать все более сложные
приложения за очень сжатые сроки. Поэтому очень важно иметь средства
отладки, которые позволят отлаживать сложный код и быстро находить ошибки.
Интегрированные в STM32F0
возможности отладки обеспечивают очень широкий спектр возможностей. В
микроконтроллерах STM32F0
применяют технологию отладки ARM CoreSight, воплощающую в себе последние
достижения в технологиях отладки. CoreSight дает возможность получать
необходимую информацию через стандартный двухпроводный интерфейс Serial
Wire, не используя какого-либо дополнительного дорогостоящего
оборудования. Это позволяет разработчикам анализировать, оптимизировать и
проверять выполнение программы с минимальными усилиями, а также
минимизировать стоимость отладочных средств. В
STM32F0 CoreSight
поддерживает до четырех аппаратных точек останова и две точки просмотра.
Традиционные микроконтроллеры предлагают ограниченные возможности по
запуску/остановке программы. Для увеличения возможностей отладки
применяется дорогостоящий (порядка $1000) внутрисхемный эмулятор с
индивидуальными переходниками для каждого микроконтроллера. Вот некоторые
из преимуществ CoreSight, которые не обеспечивают другие архитектуры MCU:
чтение/запись на лету, возможности трассировки инструкций и данных.
Разработчики имеют большой выбор недорогих отладочных адаптеров для
STM32F0. Например,
STLink - внутрисхемный
программатор/отладчик, связывающий контроллер
STM32F0 на рабочей плате и
компьютер через USB-интерфейс. Для более продвинутой отладки IAR Systems
предлагает I-Jet отладчик, а Keil предлагает разработчикам ULINK2 и
ULINKpro. Эти отладчики обеспечивают мощные возможности: например, среда
разработки от Keil MDK-ARM позволяет делать всесторонний анализ покрытия
кода, профилировку выполнения кода и анализ производительности для
обеспечения максимальной эффективности. I-Jet отладчик от IAR Systems
может предложить мониторинг потребления контроллера. Такие мощные
отладчики позволяют разработчикам достичь максимальной эффективности
работы кода.
STMicroelectronics продолжает традицию выпуска недорогих отладочных плат
для всех своих микроконтроллеров серии «DISCOVERY».
На рынок уже выпущена отладочная плата
STM32F0DISCOVERY,
которую логически можно разделить на две части. Первая - это встроенный
программатор/отладчик ST-Link, а вторая - целевая плата с
микроконтроллером STM32F051R8T6. Любой разработчик может приобрести данную
отладочную плату и попробовать микроконтроллер STM32F0 «в деле».
|
Заключение
Микроконтроллеры STM32F0
предоставляют оптимальный баланс стоимости/производительности/набора
периферии для встраиваемых приложений. Кроме этого, компания ST предлагает
более 300 совместимых контроллеров семейства Cortex-M.
Используя совместимость по коду, выводам и периферии в семействе STM32
разработчики могут развивать свои устройства на основе Cortex-M0, переходя
на контроллеры на ядрах Сortex-M3 и Cortex-M4. Так приложения,
разработанные с использованием STM32F0, могут быть легко перенесены на
STM32F2 или STM32F4. Для перехода с одной линейки микроконтроллера на
другую разработчику просто необходимо изменить выбранный микроконтроллер.
и компилятор сам перекомпилирует код. Это позволяет разработчикам легко
перейти на микроконтроллер с более высокой производительностью, большим
размером памяти и более богатым набором периферийных устройств, затрачивая
минимум усилий на портирование приложения. В результате разработчики могут
использовать те же приложения и набор инструментов на всей линейке
микроконтроллеров.
Также возможен обратный вариант, когда разработчик может взять за основу
для своей разработки микроконтроллер из старшего семейства
STM32F2 или
STM32F4. Это позволяет
делать разработку на платформе с высокой производительностью и объемом
памяти, тем самым ускоряя ее. После того как окончательный вариант будет
сделан, разработчики могут оптимизировать его для более дешевого STM32F0.
Из всего вышеперечисленного следует, что STM32F0 представляется
привлекательной альтернативой 8- и 16-разрядным микроконтроллерам. По той
же цене разработчики получают больше производительности, больше
периферийных устройств и более совершенные инструменты разработки. А это
уменьшает время разработки и позволяет быстрее вывести готовый продукт на
рынок.
|
|
|
Серия контроллеров
STM32F0
со склада в Харькове |
|
|
Поставляемые компоненты
|