Маленькие микроконтроллеры большой компании
Stellaris — первое производимое серийно и доступное по цене семейство МК с ядром ARM Cortex-M. В его составе около 140 наименований выпускаемых решений, и этот ряд постоянно расширяется. Предусмотрена обширная программная и аппаратная инструментальная поддержка со стороны как самого производителя МК, так и от сторонних компаний. На рис. 2 показано, как развивалось семейство Stellaris начиная с марта 2006 года.
Рис. 1. Номенклатура микроконтроллеров и процессоров, выпускаемых компанией Texas Instruments
Сегодня производитель выпускает четыре поколения МК Stellaris. Очевидно, что развитие семейства шло по пути увеличения сложности изделий, улучшения их функциональных и технических показателей. Однако Luminary Micro старалась сделать все возможное для ускорения процесса проектирования и упрощения использования этих МК. Основные особенности МК каждого из поколений приведены в таблице 1.
Таблица 1. Основные особенности поколений ARMMмикроконтроллеров Stellaris
Поколение Stellaris | Основные особенности |
---|---|
11е поколение — Sandstorm Class: LM3S100 LM3S300 LM3S600 LM3S800 | Тактовая частота — до 50 МГц. Flash — до 64 кбайт с единичным циклом доступа на максимальной тактовой частоте до 8 кбайт SRAM. Встроенный модуль для управления электродвигателями. |
22е поколение — Fury Class: LM3S1000 LM3S2000 LM3S6000 LM3S8000 | 10/100 Ethernet MAC+PHY и CAN. Flash — до 256 кбайт/64 кбайт SRAM. Улучшенные параметры энергопотребления. Увеличенное количество последовательных интерфейсов. |
33е поколение — Dust Devil Class: LM3S1000 LM3S3000 LM3S5000 | USB OnnTheeGo (OTG)/Host/Device. Контроллер ПДП (DMA). Увеличена нагрузочная способность портов ввода/вывода. Дополнительные ШИММвыходы. Дополнительные входы аварийной защиты для управления электродвигателями. Начальный загрузчик и библиотека аппаратных драйверов StellarisWare записываются на заводе в ROM. Новые миниатюрные корпуса (LQFP64). |
44е поколение — Tempest Class: LM3S2000 LM3S5000 LM3S9000 | Тактовая частота — 80 и 100 МГц. Внешний периферийный интерфейс с поддержкой SDRAM, SRAM, Flash. Двойной АЦП, расширенное ПО в ROM, внутренний точный тактовый генератор и аудиоинтерфейс I2S. 10/100 Ethernet MAC+PHY, CAN и USB. |
Особенности реализации микроконтроллеров Stellaris
Рис. 2. Поколения семейства Stellaris
МК семейства Stellaris реализуют преимущества архитектуры 32-разрядного ядра ARM Cortex-M3. Основные блоки, определяющие внутреннюю структуру микроконтроллеров, показаны на рис. 3. Краткое описание ключевых особенностей МК Stellaris приведено в таблице 2.
Функциональный блок | Основные особенности |
---|---|
Процессорное ядро ARM CortexxM3 v77M | Тактовая частота — до 100 МГц. Производительность — до 125 MIPS (при 100 МГц). ARM Cortex системный таймер. Контроллер вложенных векторных прерываний. |
Встроенная память | Flash — до 256 кбайт; SRAM — до 96 кбайт. ROM с библиотекой аппаратных драйверов, начальным загрузчиком, AES криптографическими таблицами и контролем ошибок с помощью циклического избыточного кода. |
Внешний периферийный интерфейс | 8/16/322разрядная параллельная шина для обмена с внешней периферией. Поддержка SDRAM, SRAM/Flash, M2M |
Последовательные интерфейсы | 10/100 Ethernet MAC и PHY с аппаратной поддержкой IEEE1588. До трех CAN 2.0 A/B. USB 2.0 OTG/Host/Device Full Speed. До трех UART с поддержкой IrDA и ISO 7816. До двух I2C. До двух SSI/SPI. I2S. |
Системные функции | 322канальный контроллер ПДП (DMA). Внутренний точный генератор 16 МГц ±1%. Два сторожевых таймера с независимым тактированием. До четырех 322разрядных таймеров (или восьми 166разрядных) с функцией таймера реального времени. Модуль управления энергопотреблением. Совместимая топология выводов для разных корпус |
Управление электродвигателями | До восьми выходов ШИМ для управления электродвигателями. До двух входов квадратурного энкодера. |
Аналоговая периферия | До двух 100разрядных АЦП (всего до 16 входных каналов). Три аналоговых компаратора. |
Таблица 2. Ключевые особенности микроконтроллеров Stellaris
Представители семейства Stellaris поддерживают множество различных периферийных устройств. Основные функциональные возможности внешнего периферийного интерфейса показаны в таблице 3. Микроконтроллеры семейства Stellaris оптимизированы для создания 32-разрядных приложений с батарейным питанием. Наличие модуля управления энергопотреблением позволяет МК работать в трех режимах экономии электроэнергии. Параметры этих режимов приведены в таблице 4 для каждого из поколений микроконтроллеров. Как видно из таблицы, в режиме самого низкого энергопотребления МК потребляют около 10 мкА, что делает их привлекательными для использования в системах с батарейным питанием.
Рис. 3. Внутренняя структура микроконтроллеров семейства Stellaris
Функции снижения энергопотребления обеспечиваются следующими внутренними блоками:
- 32-разрядный счетчик (часы) реального времени (RTC) с возможностью работы от внутреннего генератора с частотой 32,768 кГц или кварцевого резонатора с частотой 4,194304 МГц. Точная программная подстройка частоты.
- 256 байт (шестьдесят четыре 32-разрядных слова) памяти с батарейным резервированием.
- Автоматическое переключение на резервное питание от батареи в случае пропадания основного питания.
- Слежение за напряжением батареи, выработка сигнала и прерывание при падении напряжения ниже допустимого уровня.
- Пробуждение по сигналу таймера RTC и/или внешнему сигналу.
- Встроенный стабилизатор питания с низким падением напряжения.
- Перевод микроконтроллера в состояние пониженного энергопотребления: режим сна и режим глубокого сна.
- Перевод периферии в состояние пониженного энергопотребления: программное отключение отдельных периферийных модулей.
- Слежение за уровнем напряжения питания (3,3 В) и выработка прерывания и/или системного сброса в случае выхода этого значения за допустимые пределы.
Тип периферии | Функциональные возможности |
---|---|
SDRAM | Поддерживаются модули Ч16 (Single Data Rate) на частоте до 50 МГц. Поддерживаются недорогие модули SDRAM объемом до 64 Мбайт. Автоматические функции регенерации и доступа ко всем банкам/страницам. Режимы сна/ожидания для сохранения информации при минимальном энергопотреблении. |
HosttBus Interface | Стандартная 88разрядная шина обмена данными, совместимая с МК семейств PIC, ATmega, 8051 и др. Доступ к памяти SRAM, NOR Flash и других устройств с адресным пространством до 24 Мбайт. Поддержка как мультиплексного, так и демультиплексного режима выборки данных и адреса. Доступ к устройствам, имеющим неадресуемый 88разрядный буфер FIFO с поддержкой сигнализации опустошения буфера передачи (TXempty) и заполнения буфера приема (RXfull). |
Machineetoo Machine | Обмен с устройствами на основе реконфигурируемых логических микросхем (CPLD) и программируемых логических матриц (FPGA). Передача 322разрядных данных при скорости до 150 Мбайт/с. Дополнительные адресные сигналы от 4 до 16 бит. Дополнительный выход сигнала синхронизации, стробирование чтения/записи, поддержка кадров (с управляемым размером) и вход разрешения синхронизации. |
Другие возможж ности | Параллельный буферизованный ввод/вывод с управляемой скоростью обмена. Чтение с блокированием и без блокирования. Запись с буферизацией. Прямой доступ к памяти (DMA). |
Таблица 3. Основные функциональные возможности внешнего периферийного интерфейса микроконтроллеров Stellaris
Режим работы/Поколение | Sandstorm Class | Fury Class | Dust Devil Class | Tempest Class |
---|---|---|---|---|
Нормальный | < 120 мА | 160 мA (с Ethernet | 120 мА | 60 мA (без Ethernet) 80 мA (с Ethernet |
Сон | 20 мА | 20 мA (с Ethernet | 20 мА | 8 мA |
Глубокий сон | 700 мкА | 5 мA (с Ethernet | 350 мкА | 600 ма |
Дежурный | — | 10-18 мкА | 10-18 мкА | 10-18 мкА |
Таблица 4. Режимы энергопотребления микроконтроллеров Stellaris
Средства разработки
Для микроконтроллеров семейства Stellaris на рынке предлагается широкий набор решений мирового уровня, помогающих разработчику значительно сократить время создания продукта и его конечную стоимость (весь спектр поддержки МК Stellaris показан на рис. 4).
Рис. 4. Набор решений для микроконтроллеров семейства Stellaris
Ведущие мировые производители программного и аппаратного инструментария для МК с архитектурой ARM обеспечивают поддержку МК семейства Stellaris. На рис. 5 приведен перечень производителей средств разработки для данного семейства. Быстрота и эффективность разработки определяются прежде всего набором аппаратных и программных средств, предлагаемых производителями МК и сторонними компаниями.
Рис. 5. Аппаратная и программная поддержка разработок на базе микроконтроллеров семейства Stellaris
Широкая номенклатура МК и их узлов предполагает работу с библиотечными функциями языков высокого уровня. Серьезное ознакомление с архитектурой, как правило, начинается на этапе отладки критичных ко времени исполнения или размеру кода фрагментов микропрограммы. Для ARM-микроконтроллеров Stellaris с ядром Cortex-M3 предлагается обширный набор ознакомительных и отладочных средств, позволяющих в кратчайшие сроки познакомиться с работой функциональных узлов МК и библиотек для работы с периферией. Для ознакомления с функциональными особенностями каждой группы МК созданы отдельные платы. Каждая такая плата содержит набор периферийных узлов и примеры программ, необходимые для быстрого освоения специфики МК данной группы. Ознакомительные платы для основных групп МК Stellaris приведены в таблице 5.
Таблица 5. Ознакомительные платы для основных групп микроконтроллеров Stellaris
Кроме ознакомительных плат для основных групп МК Stellaris создан ряд законченных, основанных на свободно распространяемом программном обеспечении наборов для демонстрации функций управления электродвигателями. Области применения каждого набора приведены в таблице 6.
Таблица 6. Области применения платформ для управления электродвигателями
Программирование без ассемблера
ARM-микроконтроллеры Cortex-M3 имеют полную аппаратную поддержку обработки прерываний. Подпрограммы обработки прерываний могут быть написаны целиком на языке C/C++. Прерывания удобно организованы массивом C/C++, который содержит указатели на функции обработки прерываний. Для создания кода загрузчика и задания конфигурации системы не требуется писать код на ассемблере — ядро Cortex-M3 загружает указатель стека и начальное значение программного счетчика (PC) непосредственно из памяти. Весь процесс описывается обычной функцией языка C/C++. Для создания приложения требуется только пользовательский код на языке C/C++ (обработка прерываний, операционная система, код приложения).
Библиотека функций StellarisWare для работы с периферией
Рис. 6. Примеры использования графической библиотеки StellarisWare Graphics Library
Для экономии Flash-памяти в ПЗУ(ROM) МК семейства Stellaris на заводе записана библиотека функций StellarisWare. Библиотека создана с использованием только стандартных функций языка C/C++, поэтому она полностью совместима с компиляторами ARM/Keil, IAR, Code Red и инструментарием GNU. В состав библиотеки входит несколько модулей:
- Модуль интерфейса верхнего уровня (API) StellarisWare DriverLib. Модуль представляет собой API-интерфейс верхнего уровня для всего набора периферии. Использование модуля осуществляется по бесплатной лицензии без отчислений производителю. Для более глубокого изучения работы отдельных периферийных узлов DriverLib поставляется как в объектном виде, так и в исходных кодах.
- Модуль загрузчика StellarisWare Bootloader. Модуль предназначен для загрузки кода во Flash-память при обновлении микропрограммы (firmware). Загрузка может производиться через UART (по умолчанию), I2C, SSI или Ethernet.
- Библиотека поддержки USB-устройств Stellaris USB Library. Для работы с USB-устройствами служит библиотека USB Library, которая реализует USB-стек. Кроме того, МК Stellaris прошли полную проверку на соответствие стандартам USB Device и Embedded Host.
- Библиотека для разработки графического пользовательского интерфейса Stellaris Graphics Library. Графическая библиотека позволяет с легкостью реализовать интерфейс пользователя, не требуя специальных знаний в области машинной графики. Примеры использования библиотеки при создании пользовательских интерфейсов приведены на рис. 6
Другие функции. В ПЗУ(ROM) также записаны криптографические таблицы AES (Advanced Encryption Standard). Имеются примеры AES-приложений. Поддерживаются три размера ключа: 128, 192 и 256 бит. Для обнаружения ошибок и поддержания целостности данных в памяти предусмотрена возможность контроля с помощью избыточного циклического кода (Cyclic Redundancy Check — CRC).