Общаясь с разработчиками различной электроники (как любителями, так и профессионалами), я и мои коллеги обратили внимание, что широкой публике практически неизвестны микроконтроллеры Atmel на платформе Cortex-M. Я решил подготовить обзор по новым семействам микроконтроллеров, чтобы показать: не AVRом единым интересен Atmel.

Немного истории
Эпоха ARM Cortex-M началась с платформы Cortex-M3. Несмотря на то, что Atmel стал одним из первых производителей микроконтроллеров на платформе ARM7TDMI, компания не проявила интереса к новой платформе, сфокусировавшись на развитии собственных платформ. В результате этого, первыми серийными контроллерами нового типа стали микроконтроллеры STM32 от компании ST.

Вторым обстоятельством послужило то, что выпуск первых микроконтроллеров на платформе Cortex-M у Atmel пришелся не на лучшие времена. Следствием этого стали существенно более высокие цены на Atmel’овские контроллеры в сравнении с ST.
Оба этих обстоятельства закрепили приоритет за микроконтроллерами STM32. Причем это лидерство год за годом закреплялось все сильнее, поскольку в Сети стало появляться все больше и больше материалов по разработке на STM32. А к аналогам от Atmel на нашем рынке стал применяться один из двух стереотипов:
1. Atmel = AVR
2. Cortex’ы от Atmel дорогие и не интересны для использования.

Если первый стереотип развеивается заходом в соответствующий раздел на сайте Atmel, то со вторым все немного сложнее. С ним мы и попробуем разобраться.


В обзоре я не стану перечислять все семейства, расскажу только о тех, которые отвечают одному или обоим критериям:
• уникальные особенности семейства;
• цена лучше, чем у конкурентов, или сопоставима (здесь я вынужден сделать оговорку, что речь идет о сопоставимости оптовых цен).


SAM S и SAM E


Это микроконтроллеры на основе ядра ARM Cortex-M7, дебютировавшего в этом году у Atmel и у ST. Преимущества этого ядра по сравнению с предшествующим Cortex-M4 заключаются в наличии аппаратной поддержки вычислений с плавающей точкой двойной точности (у Cortex-M4 – только одинарной точности, и не во всех Cortex-M4, а только в Cortex-M4F), более высокой производительности (DMIPS/MHz примерно в 1,6 раза выше) и более высокой тактовой частоте ЦПУ (до 300 МГц).

SAM S – это «базовое» семейство, SAM E – это семейство c Ethernet и CAN на борту. Микроконтроллеры доступны в корпусах LQFP (64, 100, 144 вывода) и LFBGA (100 и 144 вывода). Размеры Flash памяти – от 512 до 2048 КБ. Все контроллеры имеют на борту USB (Host, Device) и интерфейс для подключения КМОП-матриц. В некоторых модификациях (зависит от размера корпуса) имеется интерфейс внешней памяти и интерфейс работы с картами памяти. Кроме этих двух семейств есть еще семейство SAM V, но это аналоги названных ранее семейств для автомобильной промышленности. Столкнуться с ними Вы можете только в отладочном комплекте, общим для всех семейств с ядром Cortex-M7.

Если сравнивать эти контроллеры с аналогами от ST, то в пользу Atmel выступают:
• большая тактовая частота CPU (300 MHz vs 216 MHz), что обеспечивает большую производительность;
• наличие чипов с памятью до 2048 KB Flash (у ST только до 1024 KB);
• наличие семейства без CAN и Ethernet (что позволяет не переплачивать за эти функции, если они не требуются в проекте).
Преимуществом контроллеров от ST является:
• наличие интерфейса для подключения ЖК дисплеев (у Atmel для этого рекомендуется использовать интерфейс внешней памяти);
• наличие семейства без криптографии (у Atmel криптография есть на борту всех микроконтроллеров).

Микроконтроллеры от Atmel не проигрывают в цене ST, а потому вызвали большой интерес у наших клиентов. У микроконтроллеров этого семейства сохраняется pin-to-pin совместимость с «младшими» семействами на основе Cortex-M4 (SAM4S и SAM4E). Единственный подводный камень в том, что эта совместимость не распространяется на выводы USB. Это связано с тем, модули USB у этих семейств разные: у Cortex-M4 — USB Device, у флагманов — USB Host и Device.

SAM4L


Это семейство микроконтроллеров на основе Cortex-M4 с тактовой частотой 48 МГц и технологией picoPower, что обеспечивает низкое потребление (меньше 90 мкА/МГц). По производительности это семейство занимает промежуточную нишу между семействами STM32 L1 (Cortex-M3, 32 MHz) и STM32 L4 (Cortex-M4, 80 MHz). Цены на этим микроконтроллеры приблизительно одинаковы. Набор периферии также схож, но у SAM4L есть два особенных модуля:
1. модуль измерения частоты;
2. программируемый логический модуль.

Первый модуль позволяет измерять частоту внешнего сигнала, сравнивая измеряемую частоту с опорной. Второй модуль позволяет отказаться от использования логических микросхем на плате (если конечно не требуется очень сложной логики). Принцип работы прост: четыре входа составляют 16 возможных комбинаций, для каждой из комбинаций задается соответствующее состояние вывода (0 или 1), дальше модуль работает без участия ЦПУ согласно заданной таблице состояний. В микроконтроллере может быть один или два таких модуля, в зависимости от корпуса.

SAM G


Еще одно семейство микроконтроллеров Cortex-M4 с низким энергопотреблением. С точки зрения процессора основное отличие от предшествующего семейства в наличии модуля для вычислений с плавающей точкой (Cortex-M4F). В этом семействе также применена технология picoPower, потребление чуть больше чем у SAM4L, но все равно на достаточно низком уровне (меньше 100 мкА/МГц).

Семейство состоит из 4 микроконтроллеров, которые отличаются между собой размером flash-памяти (256 или 512 КБ), максимальной тактовой частотой процессора (от 48 до 120 МГц), размерами корпуса (LQFP100/64, WLCSP49). Небольшое разнообразие вариантов микроконтроллеров с лихвой компенсируется ценами, которые существенно ниже цен конкурентов.

Cortex-M0+


Мощные производительные контроллеры — это, конечно, хорошо, но настоящую революцию в мире микроконтроллеров совершила все-таки платформа Cortex-M0. 32-разрядные микроконтроллеры уверенно вытесняют 8-битные контроллеры не только производительностью, но и ценой. Atmel также вывела на рынок ряд семейств на этой архитектуре. Отличительной особенностью этих семейств является модули SERCOM, которые в зависимости от конфигурации могут выполнять роль UART, SPI, I2C, при этом есть возможность выбирать выводы, которые используются этим модулем. Другая особенность: развитый аппаратный модуль PTC, с помощью которого можно создавать сенсорные интерфейсы с большим количеством элементов управления (кнопок, слайдеров и т.д.).

SAM D

Это базовое семейство, которое ложится в основу всех остальных семейств Cortex-M0. Если не принимать во внимание уже названные особенности, это семейство можно было бы считать вполне заурядным: обычный набор периферии, обычный набор корпусов, стандартная линейка размеров памяти, средняя цена на рынке.

Тем не менее, это семейство заслуживает упоминания по двум причинам. Первая причина заключается в том, что старшие представители (SAM D20 и SAM D21) этого семейства служат основой для микроконтроллеров других семейств. SAM D20 обладает всеми описанными выше особенностями atmel'овских Cortex-M0+. SAM D21 является его дальнейшим развитием: добавлен USB, DMA, I2S. Между собой эти контроллеры pin-to-pin совместимы, имеют одинаковую линейку корпусов (LQFP32/48/64) и flash-памяти (от 16 до 256 КБ).

Вторая причина — недавно анонсированные младшие представители: микроконтроллеры SAM D09, SAM D10, SAM D11. Корпуса имеют небольшое количество выводов: SOIC14/SOIC20, QFN24. Возможный размер flash-памяти — 8 или 16 КБ. Сами семейства отличаются набором доступной периферии, при этом SAM D11 имеет на борту USB Device. Цены на маленькие контроллеры тоже маленькие.

SAM L

Разумеется, что накопленный опыт в создании малопотребляющих микроконтроллеров не мог быть не использован для Cortex-M0+. Так появилось семейство SAM L. Отличительная черта этих микроконтроллеров — очень низкое для Cortex-M0+ потребление (меньше 35 мкА/МГц). Так же здесь есть модуль программируемой логики, причем значительно усовершенствованный по сравнению с модулем у SAM 4L. Модуль позволяет не только реализовывать логические операции (И, НЕ, ИЛИ и т.д.), но и создавать более сложные элементы логики — триггеры и защелки.

SAM L бывают двух видов: SAM L21 — малопотребляющие микроконтроллеры с USB, pin-to-pin совместимые с SAM D21, и SAM L22 — тоже самое, но с LCD дисплеем. Таким образом, каждая из линеек является конкурентом соответствующих семейств STM32L0: STM32L0x2 и STM32L0x3. SAML21 уже доступны для заказа, массовое производство SAM L22 планируется в начале следующего года. Опять таки, по цене SAM L21 сопоставимы с аналогами от ST.

SAM C

Очень интересное семейство, производство которого начнется в начале следующего года. От микроконтроллеров Cortex-M0+ конкурентов его в первую очередь отличает диапазон напряжений: 2.7 — 5.5V. Другими особенностями являются: измеритель частоты, поддержка интерфейса LIN, модуль программируемой логики, аналогичный SAM L.

Анонсированы два подсемейства:
SAM C20 — pin-to-pin совместимые контроллеры с SAM D20, корпуса и варианты размера flash-памяти так же аналогичны.
SAM C21 — обратно совместимые с SAM C20 контроллеры (по выводам, памяти и периферии), добавлены два контроллера CAN, аппаратный ускоритель деления и вычисления квадратного корня, датчик температуры выполнен в виде отдельного модуля (а не заведен на АЦП).

Цены пока не известны.

Заключение


Как, я надеюсь, видно из этого обзора, Atmel прилагает серьезные усилия для возвращения себе лидерства на рынке микроконтроллеров. Это выражается как и в тенденции удешевления новых семейств микроконтроллеров, так и в наделении этих семейств интересными, а иногда и уникальными функциями.

Конечно, достоинства каждого из перечисленных семейств не ограничиваются тем, что я назвал. Я это сделал сознательно, для того чтобы не раздувать текст и не сводить все к переписыванию параметров из даташитов. Перед написанием статьи я по памяти набросал план, перечислив те семейства, которые мне кажутся наиболее интересными, и те особенности этих семейств, которые мне запомнились.

Ложка дегтя
Так как спрос на микроконтроллеры Cortex от Atmel в России пока очень мал, то могут возникнуть проблемы с доступностью понравившегося семейства. К сожалению, это объективный факт. Но не стоит унывать: если Вам требуются образцы для разработки (пусть небольшой или даже частной), обращайтесь — мы постараемся помочь.

Комментарии (4)


  1. neochapay
    19.11.2015 08:34

    Есть ли девборды? SDK? Как напроситься на помощь?


    1. a_gusarov
      19.11.2015 10:35

      Девборды разумеется есть, на некоторые семейства даже несколько. Доступные для семейства платы можно посмотреть на сайте Atmel на странице интересующего семейства на закладке Tools. Вот, например.

      Для разработки ПО Atmel предоставляет бесплатную IDE Atmel Studio 7. Также существует ASF — библиотеки и примеры под все семейства. ASF интегрируется в Atmel Studio. Для других IDE (IAR, Keil) можно скачать ASF отдельным архивом. По работе с ASF у нас в блоге уже была публикация.

      По поводу помощи пишите в личку.


  1. Sergei2405
    19.11.2015 12:36
    +1

    STM32F7 имеет честные 5 CoreMark/MHz при исполнении кода из Flash и размер кэша I и D = 4К+4К
    SAME70 имеет 5 CoreMark/MHz только при исполнении кода из TCM памяти (встроенное однотактное ОЗУ)
    или 4,9 CoreMark/MHz при исполнении из Flash, но при кешах 16К + 16К, и при размере CoreMark в ~10К означает что он весь живет в кэше.

    В общем, совсем не факт, что на реальной большой задаче Atmel при 300 МГц будет быстрей чем ST на 216.


    1. a_gusarov
      19.11.2015 16:07

      Не обратил внимания в сертификате, что Atmel тестировался с использованием TCM. Согласен: было бы интереснее увидеть тесты микроконтроллеров при одинаковых настройках памяти.

      Тем не менее, даже 4,9 CoreMark/MHz дает при частоте 300 МГц лучший результат. Вы подозреваете, что значение 4,9 получено из-за большого размера кэшей и при коде, не помещающимся целиком туда, значение CoreMark/MHz было бы еще меньше? Соглашусь с тем, что это возможно, но вряд ли это опустит SAM S/E на уровень STM32F7. Для сравнимого с ST уровня производительности, CoreMark/MHz при выполнении из flash кода, не помещающегося в кэш, должен быть на уровне 3,6. Вряд ли это так, поскольку это получается фактически уровень ядра Cortex-M4.

      Кроме того, размер кэша — это такая же характеристика процессора, как и тактовая частота. Не думаю, что Atmel сделал кэш в 16К только для того, чтобы успешно пройти тесты. Это тоже обеспечивает высокую производительность.

      Резюмируя: я согласен с тем, что в каких-то сложных задачах отрыв в производительности у Atmel будет не в 1,5 раза как следует из тестов, а несколько меньше. Но не думаю, что они сравняются в какой-либо задаче.