Лидер по производительности среди ядер Cortex-M4 - STM32F4xxИсточник: compeljournal Роман Иванов
Роман Иванов (г. Санкт-Петербург)
Новая линейка микроконтроллеров от STMicroelectronics STM32F4хх на ядре Cortex-M4 - это объединение обычного контроллера и DSP на одном чипе, лучшая на рынке в своей группе производительность и скорость работы периферии, тактовая частота 168 МГц и фирменный продукт ST - ускоритель памяти ART. Все это плюс невысокая цена и малое энергопотребление - заявка на лидерство в сфере цифровой обработки сигнала.
Осенью 2011 года компания STMicroelectronics объявила о начале выпуска новой серии микроконтроллеров STM32F4хх. Эта линейка продолжает развитие семейства STM32, дополняя его новым ядром ARM Cortex-M4. Процессорное ядро ARM Cortex-M4 (рис. 1) на данный момент является последней разработкой в семействе Cortex-M и ориентировано на цифровую обработку сигналов.
Рис. 1. Процессорное ядро ARM Cortex-M4 Поддерживает такие технологии, как умножение с накоплением за один такт ( single-cycle MAC ), арифметика с насыщением, блок вычислений с плавающей запятой FPU ( floating point unit ), команды управления потоком данных SIMD ( single instruction multiple data ). Блок FPU совместим со стандартом IEEE 754 и позволяет процессору выполнять широкий спектр математических операций над вещественными числами. Благодаря тому, что DSP-инструкции в ядре Cortex-M4 выполняются за один такт, и есть поддержка FPU, для контроллеров STM32 стали доступны новые сегменты рынка. Больше нет необходимости использовать дополнительный DSP-контроллер для обработки сигналов, можно воспользоваться одним STM32F4xx, объединяющим обычный контроллер и DSP на одном чипе. STM32F4xx можно применять в любых областях, где необходима цифровая обработка сигнала: интеллектуальное управление двигателями, обработка звука и изображений, радиолокация, навигация, релейная защита и многие другие. Микроконтроллер без труда справится с цифровой фильтрацией, сверткой или преобразованием Фурье.
STM32F4XXНовая линейка микроконтроллеров STM32F4хх производится по 90 нм технологии с использованием уже доказавшего свою эффективность ускорителя памяти ( ART Accelerator ), позволяющего работать с памятью без задержек на максимальных скоростях. Производительность на тактовой частоте 168 МГц составляет 210 DMIPS, что является на данный момент лучшим значением на рынке среди ядер Сortex-M4 Обобщенная структура микроконтроллеров STM32F4xx представлена на рисунке 2.
Рис. 2. Структура микроконтроллеров STM32F4xx
Основные характеристики семейства:
Остановимся подробнее на особенностях нового микроконтроллера.
ART-акселераторДля обеспечения высокой скорости работы нового ядра с Flash-памятью компания ST применила уже хорошо зарекомендовавший себя на серии STM32F2хх ART-акселератор памяти ( Adaptive Real Time Memory ). Использование акселератора Flash-памяти вместо увеличения быстродействия самой памяти позволило снизить динамическое потребление и уменьшить общую стоимость готового продукта. Чтобы обеспечить высокую производительность процессора Cortex-M4, ART-акселератор использует кэш очереди предварительных выборок команд и переходов, позволяя выполнять записанные в 128-битной Flash-памяти программы с нулевым временем ожидания на частотах до 168 МГц (рисунок 3).
Рис. 3. ART-акселератор памяти
Матрица шинНовая 32-битная многоуровневая AHB-матрица шин (рисунок 4) обеспечивает взаимодействие ведущих устройств ( Bus master ) и ведомых устройств ( Bus slaves ) в микроконтроллере, занимается арбитражем при одновременной работе нескольких ведущих.
Рис. 4. Многоуровневая AHB-матрица шин Через матрицу шин ядро Cortex-M4 получает доступ к данным и инструкциям, находящимся во встроенной SRAM- и Flash-памяти, может обратиться через FSMC к внешней памяти или работать с данными от периферии. DMA осуществляет перемещение данных между периферией и памятью или между различными видами памяти. Также обращаем ваше внимание на отдельный блок оперативной памяти 64 кбайт, который подключен непосредственно к шине данных ядра. Это сделано специально для работы с данными ЦОС без задержек - хранение различных данных для математических алгоритмов, матриц и так далее.
DMAКонтроллер прямого доступа к памяти DMA ( Direct Memory Access ) служит для высокоскоростного перемещения данных между периферией и памятью или памятью и памятью без участия CPU. Это разгружает CPU для других операций. Два DMA-контроллера, которые также могут работать параллельно, сочетают в себе возможности мощного коммутатора шин с независимым FIFO-буфером для оптимизации пропускной способности системы, Первый контроллер предназначен для доступа к памяти, а второй - для доступа к периферии. В сумме контроллеры DMA имеют 16 потоков (по 8 на каждый контроллер), каждый используется для управления запросами доступа к памяти от одной или более периферии. Каждый поток может иметь суммарно до 8 каналов (запросов) и имеет арбитраж приоритетности. Приоритеты между DMA-потоками задаются программно (четыре уровня приоритета: очень высокий, высокий, средний и низкий) или аппаратно в случае равенства. Потоки поддерживают работу с кольцевым буфером. DMA работает со всей наиболее важной периферией: SPI, I2S, I2C, USART, TIMx, DAC, ADC, SDIO, DCMI, Ethernet, USB, и с модулем шифрования.
Питание микроконтроллераДля питания микроконтроллера потребуется источник питания с напряжением от 1,8 до 3,6 В. При работе устройства при положительных температурах возможно уменьшение напряжения питания до 1,7 В. Минимальное напряжение батарейного питания - 1,65 В. Для питания ядра микроконтроллера используется встроенный преобразователь напряжения. Подача питания на аналоговую периферию происходит через специально выделенные для этой цели ножки. Микроконтроллер поддерживает три режима пониженного энергопотребления для достижения наилучшего компромисса между низким потреблением, временем старта и возможными источниками пробуждения. Режим "Sleep". Только CPU останавливает свою работу. Вся периферия продолжает работать и пробуждает процессор по наступлению определенного прерывания или события. Режим "Stop". Все тактирование в зоне 1,2 В останавливается. PLL, HSI RC и HSE-осциллятор отключаются. Состояние SRAM и регистров при этом сохраняется. Микроконтроллер переходит в рабочий режим по любому событию на EXTI-линии. Режим "Standby". Обеспечивает самое низкое потребление. Питание 1,2 В полностью отключается. Данные SRAM и регистров не сохраняются, за исключением резервного домена и резервной SRAM. Для выхода из режима необходимо прерывание от часов реального времени, общий сброс или возрастающий фронт на ножке WKUP. Новая линейка STM32F4х имеет рекордно низкое потребление: 230 мкA/МГц, что составляет порядка 38,6 мA на частоте 168 МГц. Такие результаты были получены при проведении Coremark-теста из Flash-памяти при отключённой периферии. Это возможно благодаря 90-нанометровой технологии, позволяющей работать ядру CPU при напряжении питания 1,2 В, а также благодаря использованию фирменного ART-акселератора памяти, который уменьшает количество обращений к Flash памяти и масштабированию напряжения для оптимизации производительности/мощности потребления. Результаты сравнительных тестов на потребление малопотребляющих микроконтроллеров и STM32F4xx показали, что первые имеют небольшое преимущество только если они 90% своего рабочего времени находятся в режиме ожидания и фактически ничего не делают. Чем больше загружен микроконтроллер, чем больше преимущество STM32F4xx по сравнению с конкурентами (рисунок 5).
Рис. 5. Потребление STM32F4xx в сравнении с другими малопотребляющими микроконтроллерами
Коммуникационные интерфейсыI2C-интерфейс (Inter-Integrated Circuit). Микроконтроллер содержит три модуля I2C. Каждый модуль может работать в режиме "Ведущий" (Master) или "Ведомый" (Slave). Поддерживается режим "Мultimaster". Доступны стандартные (Standard) скорости передачи данных до 100 кГц и быстрая (Fast) передача данных на частотах до 400 кГц. Возможна 7- и 10-битная адресация. Присутствует аппаратный блок проверки пакетных ошибок PEC (Packet Error Checking). I2C-модули поддерживают два расширенных протокола: SMBus 2.0 (System management bus) и PMBus (Рower management bus). SPI-интерфейс (Serial Peripheral Interface). Микроконтроллер содержит три модуля SPI. Каждый модуль может работать в режиме "Мaster" (c поддержкой режима "Мultimaster") или "Slave" и поддерживать полнодуплексную, полудуплексную и симплексную передачу данных. Модуль SPI1 поддерживает скорости до 37,5 Mбит/с. Остальные модули - до 21 Мбит/с. Данные предаются 8/16-битными словами старшим или младшим битом вперед. Полярность и фаза тактового сигнала может быть программно изменена. Встроена аппаратная поддержка вычисления циклически избыточного кода CRC для обеспечения надежной связи: значения CRC могут быть переданы в качестве последнего байта в режиме Tx, автоматическая проверка ошибок CRC для последнего полученного байта. I2S-интерфейс (Inter-Integrated Sound). STM32F4хх имеет на борту два модуля I2S. Оба модуля мультиплексированы с SPI-интерфейсом. Данный интерфейс предназначен для работы с цифровыми звуковыми данными. В схеме тактирования теперь имеется выделенный модуль PLL (PLLI2S), который позволяет генерировать частоты сэмплирования аудиосигнала от 8 кГц до 192 кГц с точностью порядка 0,01%. Модули работают в режиме "Мaster" или "Slave" и поддерживают полнодуплексную и симплексную передачу данных. Данные предаются по 16, 24 или 32 бита. Поддержка протоколов: стандарт I2S Phillips, стандарт PCM, MSB и LSB выравнивание данных. USART-интерфейс (Universal Synchronous Asynchronous Receiver Transmitter). STM32F4xxx содержит четыре модуля USART и два модуля UART (Universal Asynchronous Receiver Transmitter). Модули USART1 и USART6 могут работать на скоростях до 10,5 Mбит/с. Остальные - до 5,25 Mбит/с. Данные предаются 8/9-битными словами с одним или двумя стоповыми битами и контролем четности. Поддерживается NRZ ( Non Return to Zero ) стандарт передачи данных. Модули USART могут быть использованы для подключения к шине LIN, часто используемой в автомобильных приложениях, работать как кодер/декодер инфракрасного сигнала IrDA. Для работы с модемами имеются дополнительные линии управления RTS и СTS. Возможно подключение смарт-кард в соответствии со стандартом ISO 7618-3. В дополнение ко всем вышеописанным функция USART может работать в SPI-режиме. В этом режиме модуль USART работает как ведущее SPI-устройство. CAN-интерфейс (Controller Area Network). STM32F4 содержит два контроллера CAN. Контроллеры CAN поддерживают стандарты 2.0А и 2.0В, активную и пассивную передачу данных на скоростях до 1 Мбит/с. Работают со стандартными (11-битными) и расширенными (29-битными) кадрами. Каждый CAN-контроллер имеет три буфера сообщений на передачу, FIFO с тремя каскадами и 28 распределенных масштабируемых банков фильтров. SDIO-интерфейс (Secure Digital Input/Output). SDIO позволяет микроконтроллеру обмениваться информацией с SD/SDIO/MMC-картами памяти и CE-ATA-совместимыми устройствами. STM32F4хх поддерживает следующие спецификации: MultiMediaCard System-спецификация версии 4.2 и более ранних версий (поддержка трех режимов: 1/4/8 бит), SD Memory Card-спецификация версии 2.0, SD I/O Card-спецификация версии 2.0 (поддержка двух режимов: 1/4 бит), CE-ATA цифровой протокол версии 1.1. Скорость передачи данных до 48 МГц в 8-битном режиме. USB-интерфейс (Universal Serial Bus). Микроконтроллер содержит два USB-модуля. Первый - USB OTG full-speed. Поддерживает режимы "Device", "Host" и "OTG". Физический уровень выполнен на кристалле. USB OTG FS и совместим со спецификациями USB 2.0 и OTG 1.0. Поддерживает SRP (Session request protocol)- и HNP (Host negotiation protocol)-протоколы. Второй - USB OTG high-speed. Поддерживает режимы "Device", "Host" и "OTG" на скоростях до 480 Мбит/с. Физический уровень для скорости 12 Mбит/с (full speed) выполнен на кристалле. Для реализации скорости в 480 Мбит/с (high-speed) необходим внешний высокоскоростной трансивер, подключаемый через интерфейс ULPI. Ethernet-интерфейс. Модуль Ethernet представлен не во всех микроконтроллерах линейки STM32F4, а только в сериях STM32F407xx и STM32F417xx. Ethernet-модуль соответствует стандарту IEEE802.3 и обеспечивает передачу данных на скоростях 10 и 100 Мбит/с. Для синхронизации часов на аппаратном уровне выполнена поддержка протокола IEEE1588 v2. Для подключения к физической линии (медь, оптика) необходимо использовать внешний трансивер физического уровня (PHY). PHY подключается через порт MII (17 сигналов) или RMII (9 сигналов). DCMI-интерфейс (Digital Camera Interface). Представлен только в сериях STM32F407xx и STM32F417xx. DCMI позволяет соединить микроконтроллер с камерами и CMOS-сенсорами через параллельный 8/10/12/14-битный интерфейс. Доступны внутренняя и внешняя синхронизация кадров и строк, работа в непрерывном или покадровом режиме и функция обрезки изображения. Поддержка форматов: 8/10/12/14-битное прогрессивное видео, YCbCr 4:2:2 и RGB 565, сжатые данные JPEG. FSMC-контроллер (Flexible Static Memory Controller). Модуль FSMC представлен только в микроконтроллерах с корпусом, содержащим 100, 144 или 176 ножек. FSMC дает возможность подключения к микроконтроллеру графических LCD-дисплеев и внешней статической памяти. FSMC способен поддерживать связь с внешней синхронной/асинхронной памятью и 16-битными PC-Card устройствами. Основное назначение FSMC - перевод данных внутри микроконтроллера в доступный для соответствующих внешних устройств протокол и обеспечение временных параметров связи этого протокола. Все внешние устройства получают свои адреса в адресном пространстве, сигналы данных и управления. Доступ к каждому внешнему устройству осуществляется посредством индивидуального сигнала выбора микросхемы. Одновременное обращение к двум различным микросхемам внешней памяти невозможно. Поддерживаются следующие типы памяти: PC Card/Compact Flash, SRAM, PSRAM, NOR Flash и NAND Flash. Параллельный LCD-интерфейс поддерживает два режима работы с LCD контроллерами - Intel 8080 и Motorola 6800, но является довольно гибким для адаптации к другим LCD-интерфейсам.
Аналоговая периферия (АЦП и ЦАП)Микроконтроллер содержит три аналогово-цифровых преобразователя (АЦП) и два одноканальных цифро-аналоговых преобразователя (ЦАП). АЦП обладает разрешающей способностью 12 бит и очень высокой скоростью преобразования в 2,4 мегасемпла в одиночном режиме и 7,2 мегасемплов - в тройном режиме. Максимальное количество входных аналоговых каналов - 24. Есть встроенный источник опорного напряжения. Гибкая система настроек встроенного аналогового мультиплексора позволяет задавать любые последовательности преобразования аналоговых каналов (за исключением одновременного преобразования одного канала на нескольких АЦП). Настройки АЦП позволяют производить однократные и циклические измерения. Для проведения преобразования на максимальных скоростях необходимо соблюдать диапазон напряжения питания 2,4...3,6 В. При снижении напряжения до 1,8 (1,7) В скорость преобразования снижается до 1,2 мегасемплов. Для контроля внутренней температуры микроконтроллера встроен температурный датчик. На его выходе формируется напряжение в зависимости от окружающей температуры. Выход датчика через мультиплексор подключается к АЦП. Используя температурный датчик, можно измерять температуру от -40 до 125°C с точностью ±1,5°C. ЦАП обладает разрешающей способностью 12 бит, преобразование возможно в 8/12-битовом формате с выравниванием этого результата по левому или правому краям. Так как ЦАП содержит два канала, то есть возможность формирования стереосигнала. Доступна функция автоматической генерации шумового сигнала с меняющейся амплитудой или треугольного сигнала.
ТаймерыМикроконтроллеры новой линейки могут содержать до 17 таймеров: два 16-битных таймера с расширенными функциями, два 32-битных таймера общего назначения, восемь 16-битных таймеров общего назначения, два 16-битных базовых таймера, два сторожевых таймера (независимый и оконного типа) и 24-битный системный таймер. Часть таймеров могут конфигурироваться на работу в мультирежимном формате, позволяющем строить системы из таймеров. Например, можно повысить разрядность счетчика до 48, сконфигурировав последовательно три таймера, или синхронно запускать сразу несколько таймеров. Таймеры с расширенными функциями имеют очень широкий функционал - комплементарные выводы для поддержки трехфазных двигателей, поддержка режимов счета в прямом и обратном направлениях, генерация ШИМ, каналы захвата/сравнения сигнала, режим одиночного импульса, поддержка DMA, дополнительные функции безопасности в случае сбоев, поддержка интерфейса энкодера и датчика Холла. Таймеры общего назначения аналогичны таймерам с расширенными функциями, за исключением функций, связанных с управлением двигателями. Отличия между таймерами общего назначения заключаются в различном количестве каналов захвата/сравнения, поддержкой направления счета и поддержкой DMA или ее отсутствием. Базовые таймеры имеют наименьший функционал - отсутствие каналов захвата/сравнения, поддержки функций управления двигателями, и, как правило, предназначены для использования в качестве обычных счетчиков.
Область резервного питания, часы реального времениВ микроконтроллерах STM32F4x реализована область резервного питания, позволяющая изделию работать при пропадании основного питания в режиме частичной функциональности. Область резервного питания состоит из трех составляющих:
Часы реального времени выполнены в качестве 32-разрядного счетчика с полной аппаратной поддержкой 0,5 секунды, секунд, минут, часов (12- или 24-часовой формат), день (день недели), дату (день месяца), месяц и год, представленные в двоично-десятичном формате (BCD). Работа с 28-, 29- (високосный год) 30- и 31-дневными месяцами происходит в автоматическом режиме. Поддерживается переход на летнее/зимнее время. Функция цифровой калибровки позволяет компенсировать неточность кварцевого резонатора. Часы реального времени реализуют дополнительные функции - два конфигурируемых будильника, защита от несанкционированного доступа с сохранением времени взлома и очисткой резервных регистров. Часы могут оставаться активными во всех режимах работы микроконтроллера и выводить его из различных режимов сна. 4 кбайт резервной памяти доступны только для CPU, сохраняют свой контекст в низкопотребляющих режимах и при пропадании основного питания микроконтроллера. (Только при условии, что на выделенную ножку Vbat подключено батарейное питание, которое при доступности основного питания не потребляется). В линейке STM32F4x потребление часов реального времени и 4 кбайт резервной памяти значительно снижены, каждый из них потребляет менее 1 мкА, а вместе - соответственно, менее 2 мкА.
Модуль шифрования и хешированияМодуль шифрования (сryptographic accelerator) представлен только в сериях STM32F415 и STM32F417. Он позволяет аппаратно реализовывать различные алгоритмы шифрования с очень высокой скоростью "на лету", необходимые для обеспечения конфиденциальности информации в широком круге задач. Реализованы следующие алгоритмы шифрования:
Поддержка хеширования:
Порты ввода-вывода общего назначенияМикроконтроллеры оснащены большим количеством портов ввода-вывода общего назначения GPIO (General-purpose Input Output). Их количество достигает 140, из них 138 могут иметь толерантность к пятивольтовым сигналам. Все ножки GPIO поддерживают генерацию прерываний. Каждый порт может быть программно сконфигурирован как выход, вход или настроен на альтернативную аналоговую или цифровую функцию.
ОтладкаДля подключения микроконтроллера к отладочным средствам используется четырехпроходный JTAG-интерфейс или двухпроводный SWD ( Serial Wire Debug ). Выходы SWD-интерфейса мультиплексированы с выходами JTAG. Разработчику дается возможность в выборе интерфейса отладки/программирования Интегрированная макроячейка трассировки ( Embedded Trace Macrocell ) значительно расширяет функции отладки, позволяя наблюдать за потоком инструкций и данных внутри ядра CPU в реальном времени. Данные выводятся через небольшое количество ETM-ножек на внешний TDA-анализатор. По сообщениям специалистов компании MathWorks, хорошо известной по инструментарию Matlab, в 2012 году должен появиться специальный пакет в Matlab для генерирования и создания кода алгоритмов цифровой обработки сигналов для ядра Cortex-M4. Это заметно облегчит применение ЦОС в микроконтроллерах на ядре Cortex-M4. При выпуске на рынок новой линейки микроконтроллеров на ядре Cortex-M4 STMicroelectronics следует своим традициям и предлагает разработчикам недорогую отладочную плату STM32F4DISCOVERY из серии плат "Discovery", уже хорошо известных разработчикам на рынке. За невысокую цену, менее 900 рублей, разработчик получает полноценную отладочную плату с программатором-отладчиком и может начинать осваивать STM32 без дополнительных затрат. На этот раз в плате помимо встроенного программатора-отладчика присутствуют такие опции как МЭМС-датчики (акселерометр и микрофон), USB и аудиокодек с разъемом для подключения наушников или колонок. Новые компоненты на отладочной плате вкупе с ядром Cortex-M4 и периферией STM32F4x открывают разработчику новые возможности.
ЗаключениеНовая линейка микроконтроллеров STM32F4 на базе ядра Cortex-M4 вобрала в себя все лучшее от своих предшественников на ядре Cortex-M3 - серий STM32F1 и STM32F2. Основное преимущество новой серии - значительно возросшая производительность: скорость работы ядра выросла до 168 МГц, усовершенствованный ускоритель памяти (ART Accelerator) позволяет работать с Flash памятью на этой частоте без задержек, поддержка DSP-инструкций и операций с плавающей точкой. Рост производительности ядра сопроводился увеличением скорости работы периферии. Все новые микроконтроллеры на базе ядра Cortex-M4 программно совместимы с существующими сериями STM32F1xx и STM32F2xx. Совместимость по ножкам между STM32F2x и STM32F4x полная, т.е. разработчику доступна максимальная гибкость при переходе между ядрами Cortex-M3 и Cortex-M4. К сожалению, полной совместимости по выводам между STM32F1x и STM32F2x/STM32F4x нет, могут не совпадать от двух до трех ножек (питания и земли), но вся периферия сохранила свое положение. Все рекомендации по созданию универсальной платы для использования STM32F1x и STM32F2x/STM32F4x приведены в даташитах. Невысокая цена, низкое потребление и новые возможности STM32F4xx по цифровой обработке сигналов, несомненно, сделают эти новые микроконтроллеры лидерами в своем сегменте рынка. |