32 разряда от Atmel: новое семейство SAM3 на ядре Cortex M3
Введение
Микроконтроллеры серии SAM3U при разработке предназначались для использования в устройствах, где требуется высокоскоростная передача данных, например при сохранении данных внешнего потока от системы или встроенных АЦП на SD-карту памяти. Типичные приложения, где может использоваться семейство SAM3U:
- Промышленная электроника: конвертеры интерфейсов, системы управления двигателями, пользовательские интерфейсы (панели управления и т. д.), системы сбора и накопления данных и др.
- Медицинская техника: физиотерапевтическое оборудование, мониторы пациента, приборы искусственной вентиляции легких и др.
- ЖКХ: теплорегистраторы, теплосчетчики и др.
- Системы безопасности: системы видеонаблюдения, системы сбора и обработки аудиоинформации.
- USB-гаджеты.
Предшественником семейства SAM3U является семейство AT91SAM7, основанное на ядре ARM7TDMI с двойным набором команд. Во время работы требуется ручное переключение режима процессора, что нередко становилось причиной сбоев в ПО.
Основными нишами для использования данного контроллера должны стать:
- высокоскоростные шлюзы для промышленных и медицинских изделий;
- дополнительные устройства для компьютеров и телефонов;
- USB-интерфейсы к оборудованию;
- системы сбора и накопления данных.
Микросхемы SAM3U построены на более производительном ядре от компании ARM — Cortex M3. В нем используется набор команд Thumb-2, плотность кода которого на 31% выше, чем у набора команд ARM, при том же уровне производительности, а в сравнении с набором команд Thumb производительность Thumb-2 выше на 38%. Максимальная тактовая частота ядра SAM3U составляет 96 МГц. Эффективность выполнения команд — 1,25 DMIPS/МГц. Максимальная производительность процессора достигает 120 MIPS, что позволяет использовать его для достаточно серьезных вычислений.
Кроме производительного ядра, микроконтроллеры SAM3U обладают набором высокоскоростной периферии, включая интерфейс Hi-Speed USB 2.0 Device с интегрированным модулем физического уровня. Сочетание 5-слойной высокоскоростной матрицы шин, 23 каналов DMA и распределенной памяти позволяет избежать узких мест при передаче данных. За счет использования периферийного DMA (PDMA) и арбитра высокоскоростной шины передача данных происходит с минимальным расходом процессорного времени. Отличием микроконтроллеров SAM3U является модуль Hi-Speed USB 2.0 Device, который позволяет передавать данные в компьютер на частоте 480 Мбит/с. Из-за накладных расходов протокола USB фактическая скорость передачи данных составляет 425 Мбит/с. На момент написания данной статьи поддержка Hi-Speed USB 2.0 присутствует только в микроконтроллерах SAM3U от Atmel: ни в LPC на Cortex M3 от NXP, ни в STM32 такой функции нет.
Прогрессивный механизм управления питанием и рабочее напряжение до 1,62 В позволяют SAM3U полностью использовать ресурс батарей и обеспечивают работу в режиме 1,8 В.
Микроконтроллеры SAM3
Обзор семейства
В семейство SAM3U сейчас входит два подсемейства микросхем:
- SAM3UxE в 144-выводных корпусах LQFP144 и BGA144 с полной внешней шиной данных (ширина — 8 или 16 бит данных, адресация — 24 бита, 4 линии Chip Select).
- SAM3UxC в 100-выводных корпусах LQFP100 и BGA100 с сокращенной внешней шиной данных (ширина — 8 бит данных, адресация — 8 бит, 2 линии Chip Select). Сводная информация по микросхемам семейства SAM3U приведена в таблице. Микросхемы обоих подсемейств выпускаются в модификациях с объемом Flash-памяти от 64 до 256 кбайт, соответственно, размер SRAM-памяти составляет от 20 до 52 кбайт.
Таблица. Сводная таблица параметров микросхем семейства SAM3U
Микросхема | Flash-память, кбайт | SRAM, кбайт | Линии I/O | USB Device | USART | SPI | TWI | Вывод SHDN | Внешняя шина данных | АЦП | Корпус |
SAM3U4E | 2*128 | 52 | 96 | HS | 5 | 5 | 2 | Да | 8 или 16 бит 4 линии CS 24 бит адреса | 8 каналов 12 бит 8 каналов 10 бит | LQFP144 BGA144 |
SAM3U2E | 128 | 36 | 96 | HS | 5 | 5 | 2 | Да | 8 или 16 бит 4 линии CS 24 бит адреса | 8 каналов 12 бит 8 каналов 10 бит | LQFP144 BGA144 |
SAM3U1E | 64 | 20 | 96 | HS | 5 | 5 | 2 | Да | 8 или 16 бит 4 линии CS 24 бит адреса | 8 каналов 12 бит 8 каналов 10 бит | LQFP144 BGA144 |
SAM3U4C | 2*128 | 52 | 57 | HS | 4 | 4 | 1 | Нет | 8 бит 2 линии CS 8 бит адреса | 4 канала 12 бит 4 канала 10 бит | LQFP100 BGA100 |
SAM3U2C | 128 | 36 | 57 | HS | 4 | 4 | 1 | Нет | 8 бит 2 линии CS 8 бит адреса | 4 канала 12 бит 4 канала 10 бит | LQFP100 BGA100 |
SAM3U1C | 64 | 20 | 57 | HS | 4 | 4 | 1 | Нет | 8 бит 2 линии CS 8 бит адреса | 4 канала 12 бит 4 канала 10 бит | LQFP100 BGA100 |
В старшем семействе SAM3UxE контроллеры обладают большим количеством периферии: до 96 линий ввода общего назначения, 5 портов UART, из них 4 синхронных порта USART могут работать в режиме SPI. В зависимости от задачи к контроллеру можно подключать до 6 независимых каналов SPI за счет использования модулей SPI, SSC и четырех USART. В новых контроллерах, помимо модуля 10-разрядного АЦП, добавлен модуль 12-разрядного АЦП. Одновременно доступно до 16 каналов АЦП: 10 и 12 разрядов по 8 каналов.
Контроллеры семейства SAM3UxC упакованы в более компактный корпус и имеют менее богатую периферию: 57 портов ввода/ вывода, 4 порта USART, 1 порт TWI и более узкую внешнюю шину данных.
Архитектура SAM3U
При разработке нового семейства ставилась задача по передаче данных со скоростью более 100 Мбит/с между такими интерфейсами, как Hi-Speed USB 2.0, SDIO/SDCard 2.0, MMC 4.3, внешней шиной и SPI. Семейство SAM3U (рис. 1) обладает архитектурой с высокой пропускной способностью. Она основана на 5-слойной матрице шин — для полного использования коммуникационных возможностей высокоскоростной периферии. Данные передаются с использованием 17 периферийных каналов PDMA по низкоскоростной шине, к которой подключены «медленные» устройства, такие как TWI или USART. Четыре центральных DMA-канала и 1 выделенный канал для Hi-Speed USB обеспечивают передачу данных напрямую от одного периферийного модуля к другому, минуя промежуточный буфер в памяти, и не загружают процессор. Для распределения нагрузки периферийная шина разделена на 2 подшины, которые работают независимо, что позволяет одновременно передавать данные, например, от 4 каналов АЦП и 3 каналов USART в промежуточный буфер, а затем сохранять эти данные на SD-карту. Карта памяти подключается к контроллеру HSMCI, который подключен к другому сегменту шины.
Рис. 1. Структура микроконтроллера SAM3UxE
Память SRAM состоит из трех частей общим объемом до 52 кбайт. Распределенная структура памяти обеспечивает параллельный доступ к ней разных устройств. Flash-память организована в форме двух банков памяти, при этом возможно модифицировать данные в одном из банков, если контроллер в этот момент выполняет программу из другого банка. Это так называемый режим In-Application Programming (IAP). Этот механизм позволяет организовывать безопасное обновление прошивки микросхем. Возможен программный выбор банка, из которого контроллер начнет выполнять программу после перезагрузки.
Пользователь не имеет доступа напрямую к ячейкам Flash-памяти. Доступ обеспечивается контроллером Flash-памяти, который отображает массив памяти в общее адресное пространство микроконтроллера и выполняет буферизацию данных (рис. 2). Ядро и периферия обращаются к Flash-памяти через 32-битную внутреннюю шину данных. Обмен возможен пакетами по 8, 16 и 32 бита. Доступ к внутреннему массиву Flash-памя-ти производится через 64- или 128-разрядную шину. В зависимости от потребностей пользователь может выбирать между производительностью и потреблением энергии, отдавая предпочтение более широкой или узкой шине. Предусмотрено два буфера предварительной выборки данных и буфер чтения. Внутренний Flash-массив подключается к контроллеру Flash-памяти посредством шины шириной 128 бит. Она в 4 раза шире внутренней 32-битной шины микросхемы. При работе Flash-памяти с задержкой в 1-3 такта процессора (Flash Wait State = 1…3) такой механизм позволяет повысить скорость последовательного чтения данных из Flash-памяти, что исключает задержки за счет использования предварительной выборки и буферизации.
Рис. 2. Работа буферов в контроллере Flash-памяти при задержке доступа в 3 такта (FWS = 3)
Flash-память организована в страницы длиной 256 байт. Страницы объединяются в регионы, по 8 кбайт каждый. В зависимости от общего объема Flash-памяти на кристалле количество банков и регионов может быть разным. Для унификации программного кода информацию о конфигурации памяти программа может получить у контроллера внутренней Flash-памяти непосредственно во время выполнения.
Кроме стандартных интерфейсов — 4 UART, 5 SPI, 2 I2C, SSC (I2S), таймеров, ШИМ, на кристалле присутствует усовершенствованная система управления питанием и сбросом микросхемы, включающая схемы BOD (Brown Out Detector — схема монитора питания) и POR (Power On Reset — схема сброса микросхемы при подаче питания). Каждый кристалл имеет уникальный 128-битный ключ, от которого может зависеть программное обеспечение.
Внешняя параллельная шина данных (Extermal Bus Interface, EBI) может быть сконфигурирована для работы в 8- и 16-битном режиме. Шина EBI поддерживает память типа SRAM, PSRAM, NOR Flash и NAND Flash. Для микросхем типа NAND поддерживается проверка контрольной суммы блока. Внешнюю шину также можно использовать для подключения LCD-дисплея со встроенным контроллером.
Проблема батарейного питания остается актуальной с ростом производительности контроллера. Микросхемы, работающие на частотах более 20 МГц, изготавливаются, как правило, по техпроцессу с технологическими нормами не более 180 нм. Уменьшение нормы техпроцесса позволяет снизить емкость элементов и, как результат, понизить потребление в активном режиме. Отрицательным эффектом становится уменьшение толщины изоляционного слоя и, как следствие, — рост паразитных и тепловых токов в кристалле. На практике это приводит к увеличению тока, потребляемого контроллером в статическом режиме. Микроконтроллеры семейства SAM3U потребляют не более 2,5 мкА в спящем режиме. При этом остаются в активном режиме таймеры RTT, RTC, 32 регистра общего назначения по 32 бита, системы, обеспечивающие слежение за уровнем напряжения питания, и монитор внешних событий, которые могут «разбудить» процессор. Модуль RTC поддерживает функцию календаря и потребляет не более 0,6 мкА, что не превышает потребления микросхем часов реального времени. Для удобства использования резервного питания и разделения основного и батарейного питания предназначен вывод SHDN, который может использоваться для управления стабилизатором питания платы при батарейном питании. Также вывод SHDN можно использовать для формирования задержки перед подачей питания на ядро микроконтроллера. Данный подход применим при запуске в условиях ограниченной мощности источника питания. На выбор пользователя — несколько спящих режимов, отличающихся набором активной периферии и временем выхода на рабочий режим. Для самого глубокого спящего режима — Backup Mode — время пробуждения контроллера составляет менее половины миллисекунды.
Программная поддержка
Семейство SAM3U разрабатывается той же группой, что и семейства SAM7 и SAM9. Ядро Cortex-M3 имеет новую структуру набора инструкций, и программный код необходимо переписать при переходе с предыдущих ядер семейства ARM. Благодаря тому, что большинство кодов для современных микроконтроллеров пишется на языке Си, этот переход значительно упрощается. А для пользователей программных библиотек, таких как AT91lib из состава Atmel Softpack, переход произойдет совершенно незаметно, поскольку частные детали реализации отделены от пользовательской программы уровнем логической абстракции. Программная модель, используемая для процессоров ARM предыдущих поколений, осталась без изменений. В семействе SAM3 по возможности применяются те же модули периферии, что и раньше. Это обеспечивает полную совместимость пользовательских драйверов. Как результат, миграция на новый процессор в существующих разработках близка к перекомпиляции кода под новый процессор.
Средства разработки
Останавливаться на данном вопросе не имеет особого смысла, поскольку все популярные среды, поддерживающие актуальные процессоры ARM, поддерживают работу и с ядром Cortex-M3, в том числе с процессорами рассматриваемого семейства. SAM3U является реализацией промышленной архитектуры и поддерживается продуктами от IAR, Keil, Micrium, Segger и других компаний. Поддержка Cortex-M3 присутствует и в бесплатной среде, построенной на основе компилятора GCC (GNU C Compiler) и среды Eclipse. Для своих процессоров компания Atmel предлагает традиционные примеры и библиотеку по работе с периферией процессора и внешними устройствами, такими как, например, SD-карты. Все примеры доступны для скачивания на сайте производителя — www.atmel.com.
Поддержка отладки через интерфейс JTAG позволяет отлаживать программы в реальном времени непосредственно на процессоре. В качестве базового JTAG-эмулятора можно выбрать эмулятор SAM-ICE, который используется для процессоров SAM7 и SAM9.
Демонстрационная плата SAM3U-EK
Для демонстрации возможностей процессора и сокращения времени от начала разработки до выпуска готовой продукции для процессоров предлагается стартовая плата SAM3U-EK. Она основана на старшем процессоре из семейства — SAM3U4E в корпусе QFP. Плата насыщена периферией, на ней установлены следующие компоненты: порт Hi-Speed USB Device (разъем типа USB-B), TFT LCD индикатор размером 2,8 дюйма, NAND Flash, PSRAM, разъем для подключения SD/MMC карт, термодатчик, трехосевой акселерометр, аудиокодек с двумя стерео-выходами и микрофонным входом, разъем для подключения модулей ZigBee, набор стандартных разъемов ввода/вывода, RS-232, BNC-разъемы для ввода данных АЦП, све-тодиоды, пользовательские кнопки, JTAG-интерфейс для программирования и отладки. Общая структура платы представлена на рис. 3. В комплекте с платой поставляются: источник питания, кабели USB и RS-232, а также литиевая батарея для использования спящего режима совместно с батарейным питанием.
Рис. 3. Структурная схема платы SAM3U-EK
В комплекте поставки отсутствует диск с программным обеспечением. Как правило, за срок, который проходит от производства платы до доставки ее пользователю, успевает появиться одна-две новые версии комплекта примеров и среды разработки. Чтобы избавить начинающих пользователей от необходимости борьбы с неизбежными ошибками, которые могут быть устранены после обновления версии, перед началом работы с платой рекомендуется обновить программное обеспечение до актуальной версии. Все ПО доступно для свободной загрузки в Интернете.
Заключение
В модельном ряду семейство SAM3U занимает нишу между микроконтроллерами ARM7 семейства AT91SAM7 и встраиваемыми процессорами на ядре ARM9 семейства AT91SAM9. Близким аналогом микроконтроллеров SAM3U являются микроконтроллеры AT32UC3, в частности AT32UC3A3. Рассмотрим преимущества микроконтроллеров AT32UC3A3:
- Используется более энергоэффективное ядро AT32UC3 с 1,49 DMIPS/МГц (1,25 DMIPS/МГц y SAM3U)
- Смешанный RISC-DSP набор команд.
- Модуль USB 2.0 Hi-Speed OTG (USB 2.0 Hi-Speed Device в SAM3U). Преимущества SAM3U:
- Тактовая частота — 96 МГц, максимальная производительность — 120 DMIPS (98,34 DMIPS при 66 МГц y AT32UC3A3).
- 16 каналов АЦП.
- Меньшее потребление питания в глубоком спящем режиме: 2,5 мкА (<100 мкА у AT32UC3). Необходимо отметить, что в описании AT32UC3 и SAM3U используется несколько разная методика измерения потребляемых токов, что не позволяет однозначно сравнить приведенные производителем значения.
Из этого сравнения видно, что даже два очень близких семейства имеют свои ниши: AVR32UC применимы в задачах, требующих проведения постоянных вычислений, а время, проводимое контроллером в глубоком спящем режиме, невелико. Для семейства SAM3U подходят задачи, в которых требуется высокая пиковая производительность, измеряется много аналоговых сигналов, контроллер длительное время бездействует, используется батарейное питание.
Литература
- SAM3U-EK Development Board User Guide — http://atmel.com/dyn/ resources/prod_documents/doc6478.pdf
- SAM3U Series — http://atmel.com/dyn/resources/prod_documents/doc6430.pdf
- SAM3U Microcontroller Series Schematic Check List — http://atmel.com/dyn/resources/prod_documents/doc11006.pdf
- Техническое описание микросхем AT32UC3A3 http://atmel.com/dyn/resources/prod_documents/32072.pdf
- The Cortex-M3 — http://infocenter.arm.com