Роман Иванов (г. Санкт-Петербург)
Компания Luminary Micro была малоизвестной, но когда ее приобрела компания Texas Instruments, самая удачная разработка LM, 32-разрядные микроконтроллеры Stellaris на ARM-ядре Cortex-M3, вошла в номенклатуру TI. Линейка этих микроконтроллеров, помимо вычислительной мощности, примечательна широкими возможностями коммуникации.
Вплоть до 2009 года компания Luminary Micro Inc. являлась разработчиком и производителем высокопроизводительных 32-разрядных ARM-процессоров на базе лицензируемых у компании ARM Inc. модулей Cortex-M3. Компания ARM Inc. анонсировала эту архитектуру в октябре 2004 г. и в начале 2005 г. передала лицензию на ее использование компании Luminary Micro Inc.
14 мая 2009 года компания Texas Instruments приобрела компанию Luminary Micro.
Это приобретение дополнило линейку микроконтроллеров TI новыми 32-разрядными микроконтроллерами Stellaris на базе ядра ARM CortexTM-M3.
Устройства Stellaris позволили компании TI решать задачи рынка 32-разрядных микроконтроллеров, обеспечивая потребителям доступ к вычислительной мощности процессорного ядра ARM CortexTM-M3 и к расширенным коммуникационным возможностям семейства Stellaris, включая интерфейсы 10/100 Ethernet MAC+PHY, CAN, USB, SSI/SPI, UART, I2S и I2C.
Линейка микроконтроллеров Stellaris условно поделена на 11 семейств в зависимости от скорости работы ядра, объема памяти и набора периферии. Самые младшие модели микроконтроллеров содержат 8 кБ Flash (2 кБ SRAM) и выполнены в корпусе SOIC28. Флагманские модели содержат до 256 кБ Flash (96 кБ SRAM) и внушительный набор периферии. Обобщенная структура микроконтроллера Stellaris представлена на рисунке 1.
Рис. 1. Структура микроконтроллеров Stellaris
В статье мы подробнее остановимся на интерфейсах связи, предлагаемых в микроконтроллерах Stellaris. Распределение интерфейсов по сериям микроконтроллеров представлено в таблице 1.
Таблица 1. Интерфейсы микроконтроллеров Stellaris
Интерфейсы | Серия микроконтроллеров Stellaris | ||||||||||
9000 | 8000 | 6000 | 5000 | 3000 | 2000 | 1000 | 800 | 600 | 300 | 100 | |
USB | · | · | · | ||||||||
Ethernet | · | · | · | ||||||||
САN | · | · | · | · | |||||||
UART | · | · | · | · | · | · | · | · | · | · | · |
I2S | · | · | · | · | |||||||
I2C | · | · | · | · | · | · | · | · | · | · | · |
SSI/SPI | · | · | · | · | · | · | · | · | · | · | · |
Большим преимуществом Stellaris является удобная мультиплексированность выводов - для одного и того же интерфейсного сигнала предлагается на выбор несколько ножек микроконтроллера.
Интерфейсы связи, реализуемые на базе МК Stellaris
Ethernet - один из самых распространенных на сегодняшний день стандартов организации локальных сетей. Модуль Ethernet реализован в трех сериях контроллеров Stellaris. Во все контроллеры, оснащенные интерфейсом Ethernet, интегрирован не только MAC-контроллер, но и трансивер (рисунок 2). Данное решение позволяет сэкономить на трансивере и упростить схему.
Рис. 2. Реализация интерфейса Ethernet в контроллерах Stellaris
Трансивер (Physical Layer Entity) предназначен для передачи потока данных. Он осуществляет передачу электрических или оптических сигналов в кабель и, соответственно, их прием и преобразование в биты данных в соответствии с методами кодирования цифровых сигналов.
MAC (Media Access Controller)-контроллер обеспечивает адресацию и механизмы управления доступом к каналам, что позволяет нескольким терминалам или точкам доступа общаться между собой в многоточечной сети (например, в локальной).
Микроконтроллеры Stellaris поддерживают стандарт IEEE 802.3-2002.
Пользователю на выбор предоставляется два режима работы: 10BASE-T или 100BASE-TX.
Также доступна функция автоматического определения типа сети (auto-negotiation), позволяющая существенно облегчить жизнь пользователям сети. Особенно эта функция важна на современном этапе, когда широко применяются как более ранняя версия Ethernet со скоростью обмена 10 Мбит/с, так и более поздняя версия Fast Ethernet со скоростью 100 Мбит/с. Функция автодиалога или автосогласования (так можно перевести auto-negotiation) позволяет адаптерам, в которых предусмотрено переключение скорости передачи, автоматически подстраиваться под скорость обмена в сети. При этом пользователь сети не должен следить за тем, на какую скорость обмена настроена его аппаратура - система сама выберет максимально возможную скорость.
Доступна функция автоматического выбора режима MDI/MDI-X. Это позволяет использовать для подключения как прямой, так и кроссоверный кабель. Система сама выберет тип кабеля.
Микроконтроллеры Stellaris имеют аппаратное обеспечение для поддержки IEEE 1588 PTP (Precision Clock Synchronization Protocol for Networked Measurement and Control Systems). PTP определяет процедуру, позволяющую многим пространственно-распределенным часам реального времени синхронизироваться через «пакетно-совместимые» сети. Технология, заложенная в стандарт, была первоначально разработана компанией Agilent и использовалась для распределенных измерений и контроля. Задача состояла в синхронизации по времени сетевых измерительных устройств таким образом, чтобы они могли записывать измеряемые значения с точным системным штампом времени. На основе этого штампа времени измеренные значения впоследствии могут быть соотнесены друг с другом.
Для более эффективной работы процессора модуль Ethernet содержит FIFO (First In, First Out)-буфер и позволяет использовать DMA (Direct Memory Access).
Типовая схема реализации внешней обвязки Ethernet представлена на рисунке 3. Схема довольно проста и требует минимум элементов - несколько резисторов, конденсаторов и разъем (как правило, RJ45). В примере использован разъем со встроенным изолирующим трансформатором, но при желании можно использовать и отдельный изолирующий трансформатор. Список рекомендуемых трансформаторов и разъемов представлен в описании на микроконтроллер.
Рис. 3. Реализация внешней обвязки Ethernet в МК Stellaris
Шина USB (Universal Serial Bus) появилась сравнительно недавно - версия первого утвержденного варианта стандарта появилась 15 января 1996 года. Разработка стандарта была инициирована весьма авторитетными фирмами - Intel, DEC, IBM, NEC, Northen Telecom и Compaq. На сегодняшний день USB является одним из самых востребованных интерфейсов передачи данных. Шина строго ориентирована, имеет понятие «главное устройство» (Host) и «периферийные устройства» (Device).
Существует несколько версий спецификации USB:
- USB 1.0
- USB 1.1
- USB 2.0
- USB 3.0
Для устройств USB 2.0 регламентировано три режима работы:
- Low-speed, 10...1500 Кбит/c (используется для интерактивных устройств: клавиатуры, мыши, джойстики)
- Full-speed, 0,5...12 Мбит/с (аудио-, видеоустройства)
- Hi-speed, 25...480 Мбит/с (видеоустройства, устройства хранения информации)
Помимо спецификаций на саму шину USB существуют дополнительные спецификации на стандартные классы USB-устройств и расширения USB-шины:
- USB OTG
- USB Wireless
- USB Human Interface Device
- USB Mass Storage Device
Микроконтроллеры Stellaris поддерживают наиболее востребованную спецификацию USB 2.0 (Low-speed и Full-speed) в режиме работы Host или Device. Также имеется поддержка USB OTG (On-The-Go).
USB OTG - дальнейшее расширение спецификации USB 2.0, предназначенное для легкого соединения периферийных USB-устройств друг с другом без необходимости подключения к ПК. Например, цифровой фотоаппарат можно подключать к фотопринтеру напрямую, если они оба поддерживают стандарт USB OTG. К моделям КПК и коммуникаторов, поддерживающих USB OTG, можно подключать некоторые USB-устройства. Обычно это Flash-накопители, цифровые фотоаппараты, клавиатуры, мыши и другие устройства, не требующие дополнительных драйверов. Этот стандарт возник из-за резко возросшей в последнее время необходимости надежного соединения различных USB-устройств без использования ПК. В данной спецификации устройства обходятся без персонального компьютера, то есть выступают как одноранговые приемопередатчики (на самом деле только создается такое ощущение). В действительности же устройства определяют, какое из них будет Master, а какое - Slave. Одноранговый интерфейс USB существовать не может.
Поддержка USB представлена не во всех линейках Stellaris. Модули USB можно найти в 9000, 5000 и 3000 сериях. Следует обратить внимание, что не все микроконтроллеры одновременно поддерживают режимы Host, Device и OTG. Часть микроконтроллеров поддерживают только режим Device или Host/Device. USB-модуль содержит FIFO-буфер и позволяет использовать DMA.
При использовании USB следует обратить внимание на частоту кварцевого генератора. Дело в том, что его использование накладывает ограничения на частоту генератора. Список разрешенных частот представлен в описании на контроллер.
Сетевой протокол CAN (Controller Area Network) был разработан в 1987 году фирмой Bosch для мультипроцессорных автомобильных систем реального времени. CAN оптимизирован для систем, в которых передается сравнительно небольшой объем информации со скоростью до 1 Мбит/с. Основные достоинства CAN-протокола - высокая помехоустойчивость, надежность, возможность получения сообщений всеми узлами (контроллерами данных) с синхронизацией по времени, неразрушающий арбитраж доступа к шине, малая вероятность пропуска ошибки, низкая стоимость. Принятая в CAN-интерфейсе схема передачи сообщений позволяет ее расширять и модернизировать: новые устройства приема данных можно добавлять к сети без изменения существующих программных средств и нарушения работы старой системы. Все это привлекло внимание разработчиков и пользователей различных распределенных систем управления, используемых, помимо транспортных средств, в промышленности, энергетике, медицинском приборостроении.
Микроконтроллеры Stellaris имеют до трех модулей САN на борту. Максимальная скорость передачи данных до 1 Mbps. При максимальной скорости длина кабеля не должна превышать 40 метров. Работа на более медленных скоростях позволяет увеличить длину линии связи. Максимально она достигает нескольких километров. Микроконтроллеры поддерживают стандарт CAN 2.0 A/B. Имеется FIFO-буфер.
UART (Universal Asynchronous Receiver/Transmitter) - наверное, самый известный интерфейс. Возможно, связь через асинхронный последовательный порт уходит в прошлое, однако сложно найти контроллер, не имеющий в составе периферии UART. Поэтому хоронить его рано. Данный интерфейс представлен во всех линейках микроконтроллеров Stellaris. Количество модулей UART в одном микроконтроллере может достигать трех. Имеется поддержка LIN и IrDA. Присутствует DMA и FIFO. Максимальная скорость передачи данных до 10 Mbps. Но обычно на таких высоких скоростях никто не работает.
IrDA представляет собой аббревиатуру Infrared Data Association - ассоциации, которая занимается разработкой спецификаций для обмена данными по оптическому интерфейсу с помощью инфракрасного света. Такая технология также впоследствии получила название IrDA.
Опыт показывает, что среди других беспроводных линий передачи информации инфракрасный (ИК) открытый оптический канал является самым недорогим и удобным способом передачи данных на небольшие расстояния (до нескольких десятков метров). В частности, он эффективен для обеспечения беспроводной связи между персональным компьютером и периферийными устройствами.
LIN (Local Interconnect Network) - стандарт промышленной сети разработанный консорциумом европейских автопроизводителей и других известных компаний, включая Audi AG, BMW AG, Daimler Chrysler AG, Motorola Inc.
Протокол LIN предназначен для создания недорогих локальных сетей обмена данными на коротких расстояниях. Он служит для передачи входных воздействий, состояний переключателей на панелях управления, а также для ответных действий различных устройств, соединенных в одну систему через LIN и происходящих в так называемом «человеческом» временном диапазоне (порядка сотен миллисекунд).
I2C (Inter-Integrated Circuit) - последовательная шина данных для связи интегральных схем, разработанная фирмой Philips в начале 1980-х как простая шина внутренней связи для создания управляющей электроники. I2C позволяет подключать к микроконтроллеру различного рода микросхемы.
Данный интерфейс представлен во всех линейках микроконтроллеров Stellaris. Количество модулей I2C в одном микроконтроллере может достигать двух. Максимальная скорость передачи данных поднимается до 400 Kbps. Стандартная скорость передачи данных 100 Kbps. Модуль I2C может работать в режиме Master или Slave и поддерживает возможность арбитра шины, что необходимо в мультимастерных системах.
I2S (Inter-Integrated Circuit Sound) - интерфейс предназначен для передачи цифровых аудиоданных. Данный интерфейс представлен только в нескольких сериях микроконтроллеров Stellaris. Присутствует DMA и FIFO.
SSI (Synchronous Serial Interface) - популярный интерфейс для последовательного обмена данными между микросхемами. Наряду с I2C он относится к самым широко используемым интерфейсам для соединения микросхем. SSI позволяет подключать к контроллеру различного рода микросхемы, в т.ч. запоминающие устройства (EEPROM, Flash-память, SRAM), часы реального времени (RTC), АЦП/ЦАП, цифровые потенциометры, специализированные контроллеры и др.
В отличие от стандартного последовательного порта, SSI является синхронным интерфейсом, то есть любая передача в нем синхронизирована с общим тактовым сигналом, генерируемым ведущим устройством. Принимающая периферия (ведомая) синхронизирует получение битовой последовательности с тактовым сигналом. К одному последовательному периферийному интерфейсу ведущего устройства-микросхемы может присоединяться несколько микросхем. Ведущее устройство выбирает ведомое для передачи, активируя сигнал «выбор кристалла» на ведомой микросхеме.
Данный интерфейс представлен во всех линейках микроконтроллеров Stellaris®. Программно реализована поддержка Texas Instruments synchronous serial, Freescale SPI и MICROWIRE.
Максимальная скорость передачи данных увеличена до 40 Mbps. Количество модулей SSI в одном микроконтроллере может достигать двух. Имеется DMA и FIFO. Модуль SSI может работать в режиме Master или Slave.
Отладочные средства МК Stellaris
Для оценки возможностей микроконтроллеров Stellaris инженерам предлагается довольно широкий ассортимент демонстрационных и отладочных комплектов. Любой из них содержит все необходимые программные и аппаратные инструменты. Для ознакомления можно порекомендовать EK-LM3S9B92 (рисунок 4), выполненный на основе микроконтроллера LM3S9B92. Комплект состоит из двух плат. На первой распаян сам контроллер, а на второй - внутрисхемный отладчик. Вторую плату можно использовать далее для отладки уже своей схемы, используя JTAG- или SWD-интерфейс (они выведены на разъемы платы).
Рис. 4. Отладочный набор для МК LM3S9B92 Stellaris
Инженеру предлагается широкий выбор средств разработки. Микроконтроллеры Stellaris поддерживаются в самых популярных средах, таких как Keil и IAR. Кроме этого TI предлагает собственную среду разработки Code Composer Studio (CCStudio).
Еще одно немаловажное преимущество Stellaris - бесплатное программное обеспечение StellarisWare, существенно упрощающее программирование контроллера. StellarisWare состоит из нескольких библиотек и примеров их использования. Применение этих библиотек избавит пользователя от необходимости написания драйверов модулей ввода-вывода, упростит работу с интерфейсом USB, ускорит создание графических интерфейсов, добавит поддержку внутрисистемного программирования, а также обеспечит совместимость со стандартом IEC 60730. StellarisWare применим совместимо со средами для проектирования компаний Keil, IAR, Code Red Technologies и другими.
Заключение
Stellaris представляет из себя семейство микроконтроллеров, выполненных на основе ядра ARM Cortex-M3 с передовыми для своего класса характеристиками. Семейство разделено на серии, в которые входят контроллеры различного класса и отличающиеся по степени интеграции.
Все микроконтроллеры Stellaris, оснащенные интерфейсом Ethernet, интегрируют не только MAC-контроллер, но и трансивер. Данное решение существенно упрощает разработку Ethernet интерфейса.
Благодаря большому набору поддерживаемых интерфейсов и простоте их реализации с помощью StellarisWare микроконтроллеры Stellaris нашли применение во многих отраслях и продуктах.