Семейство микроконтроллеров XMC1000 компании Infineon, базирующееся на архитектуре Cortex-M0
При разработке семейства микроконтроллеров XMC1000 фирма Infineon преследовала цель максимально расширить сферу применения новых микроконтроллеров. Но, тем не менее, микроконтроллеры XMC1000, в зависимости от подсемейства, являются ориентированными на определенные задачи.
Общая сфера применения — промышленная автоматизация, транспорт, системы энергетики. Всего создано три серии XMC1100, XMC1200 и XMC1300, которые отличаются размером флэш-памяти (от 8 до 200 кбайт) и оснащены высокопроизводительной периферией. В микроконтроллерах доступны 12-битные цифро-аналоговые преобразователи, универсальные модули для связи в соответствии с различными стандартами последовательных коммуникаций и широтно-импульсные модуляторы высокого разрешения. Главное отличие этих подсемейств состоит именно в особенностях периферийных блоков, которые и придают ориентированность применения. Идеология построения периферийных модулей определена многолетним опытом разработки микроконтроллеров компанией Infineon и является их ключевым отличием.
Наиболее простая (с точки зрения функциональных возможностей) серия XMC1100 предназначена для создания простых устройств широкого спектра применения и позиционируется в качестве замены 8-битных микроконтроллеров. Представители этой серии соизмеримы с 8-битными по цене, но за счет 32-разрядной архитектуры позволяют упростить разработку программного обеспечения с помощью языков программирования высокого уровня, так как ограниченность ресурсов 8-битных микроконтроллеров вынуждала специалистов использовать значительное количество кода, написанное на ассемблере.
В серии XMC1200 добавлен модуль, предназначенный для организации сенсорного интерфейса на основе емкостных датчиков, и периферия для управления системами освещения на основе светодиодов. Область применения — различное оборудование для управления светодиодными светильниками, интерфейсы управления технологическими процессами и т. д.
Серия XMC1300 ориентирована на управление двигателями; микроконтроллер содержит 24-битный CORDIC-сопроцессор (Coordinate Rotation Digital Computer), действующий на удвоенной частоте ядра и способный разгрузить основное вычислительное ядро при выполнении интенсивных геометрических преобразований. Соответственно, эти вычисления необходимы в системах управления различными электродвигателями и инверторами.
Важно отметить, что все семейства XMC (включая наиболее мощное семейство XMC4500) сертифицированы согласно стандарту IEC60730 класс В. В семейство XMC компания Infineon добавила блоки коррекции аппаратных ошибок (ECC) и модуль криптографии для ускорения операций в соответствии со 128-битным кодированием AES для загрузчика, что создает хорошую защиту встроенного программного обеспечения.
Соизмеримая стоимость XMC1000 по сравнению с 8-битными микроконтроллерами достигается за счет применения современного технологического процесса с нормами 65 нм и 300-мм пластин для производства кристаллов.
Отличным преимуществом также является возможность бесплатной загрузки программного обеспечения от фирмы Keil, которое позволяет работать с любым микроконтроллером семейства XMC1000 (ограничение на размер кода 128 кбайт вполне достаточно для большинства проектов, а зачастую даже превышает размер располагаемой памяти).
Отдельно хочется отметить среду разработки Dave3 [1], бесплатно распространяемую фирмой Infineon и использующую концепцию компонентно-ориентированного программирования. Основанная на Eclipse, данная среда предназначена для создания и отладки всего проекта, но возможно и частичное ее применение для формирования файлов начальной инициализации и низкоуровневых драйверов устройств с дальнейшим экспортом этих файлов в такие IDE, как EWARM фирмы IAR, MDK от Keil, и другие. Разработка низкоуровневых драйверов и файлов начальной инициализации периферии зачастую вызывает затруднения, особенно у начинающих проектировщиков. Dave3 обеспечивает графическое представление используемых блоков периферии и их взаимодействие между собой, возможность начального конфигурирования и задания параметров, а также распределение выводов кристалла для подключения к конкретным блокам как в автоматическом, так и в ручном режиме, что значительно облегчает и ускоряет процесс. Ну и самое главное преимущество — это большое количество примеров типового применения аппаратных и программных блоков, в которых в интерактивной форме какого-либо отдельного компонента его можно сконфигурировать в соответствии со своими потребностями и после компиляции получить рабочий проект.
Дополнительно компонентно-ориентированный подход позволяет легко использовать несколько одинаковых компонентов, то есть одинаковых блоков периферии, которых в микроконтроллерах XMC обычно несколько. Причем IDE Dave3 сама назначает имена аналогичным блокам, чтобы не происходило путаницы при разработке программы. Так, зачастую мы можем управлять не одним, а сразу несколькими двигателями или организовывать несколько каналов передачи данных, имеющих аналогичную структуру.
И конечно, самое главное, особенно для тех, кто только делает первые шаги в области разработки программного обеспечения для встраиваемых систем, — это большое количество примеров применения периферии для различных задач, выполненных не просто в виде дополнительных библиотек, а в виде Dave-приложений, наглядно демонстрирующих варианты решения поставленной задачи как в однозадачной системе, так и в операционной системе реального времени. Например, зачастую вопросы пространственно-векторного управления бесколлекторными двигателями именно в практическом плане, то есть при переходе от теории реализации алгоритмов управления с применением преобразований Кларка и Парка к конкретно выполняемому коду на языке C, недостаточно хорошо освещаются, а с помощью исходных файлов именно в приложениях Dave3 можно сразу увидеть конкретную реализацию алгоритма. Поэтому очень полезно начинать изучение программирования встраиваемых систем не с ARDUINO-совместимых проектов, что в дальнейшем потребует значительных усилий при переходе на профессиональные системы разработки, а разбирать и модифицировать примеры приложений в среде Dave3, которые написаны высокопрофессиональными специалистами с огромным опытом. При этом, конечно, нельзя отвергать и полезность изучения и ARDUINO-совместимых проектов.
Работа с младшими семействами микроконтроллеров, основанными на ядре Cortex-M0 (а именно к ним и относятся описанные семейства), дает возможность легко перейти к решениям на ядре Cortex-M4 (семейство XMC4500), поскольку мы имеем дело в основном с теми же периферийными блоками (или точнее — с их дальнейшим развитием).
В таблице отображены основные характеристики семейства XMC1000.
Семейство | XMC1100 | XMC1200 | XMC1300 |
Ядро | ARM Cortex-MO | ||
Рабочая частота, МГц | 32 | ||
Наличие сопроцессора | — | CORDIC (64 МГц) | |
Размер флэш-памяти, кбайт | 8-64 | 16-200 | 8-200 |
Статическое ОЗУ, кбайт | 16 | ||
Интерфейс POSIF | — | — | |
Таймеры | 1 | 1(CCU4) + 1(CCU8) | |
12-битный АЦП | 1 | 1 (2 выборка и хранение) | |
Компараторы | — | 3 | |
Последовательный интерфейс | — | 3 канала | |
Дополнительно | — | Управление матрицей светодиодов. Емкостный интерфейс. Управление яркостью светодиодов |
Управление яркостью светодиодов |
Температурный диапазон, °С | –40…+85 (–40…+105) | ||
Корпус | TSSOP16, 32; VQFN24, 48 |
Для начала ознакомления с микроконтроллерами XMC1000 (и XMC4500) достаточно установить с сайта производителя IDE Dave3 и оценить концепцию работы с ней на имеющихся примерах. Если она вам понравится, то, возможно, эти микросхемы окажутся предпочтительными для вашей последующей деятельности. Затем нужно подобрать соответствующую демонстрационную плату для более детального знакомства и начала работы над очередным изделием.
Данные платы достаточно хорошо спроектированы и удобны в работе, все сигналы выведены на разъемы, также они снабжены облегченной версией JTAG-отладчика от фирмы Segger. В совокупности это позволит вам непосредственно начать работу без приобретения дополнительного оборудования и программных средств.
В заключение хочется упомянуть новые оценочные платы: крошечную по размерам XMC2GO, XMC1000 Motor Control Application Kit и плату с микроконтроллером XMC1200 (для любителей ярких свето-диодов и емкостных кнопок). Внешний вид комплектов представлен на рис. 1-3.
На наш взгляд, наиболее полезны комплекты, которые помогают изучить программы управления двигателями, поскольку в них наиболее ярко проявляется эффективность работы периферии микроконтроллеров Infineon (пространственно-векторное управление электродвигателями достаточно ресурсоемкое и сложное приложение). Кроме того, они позволяют оценить преимущества и недостатки всех основных схем управления электродвигателями (с датчиками Холла, с энкодерами, с измерением токов в обмотках и т. п.) и научиться реализовывать алгоритмы управления различными электродвигателями и инверторными преобразователями.
Отметим положительные стороны описанных микроконтроллеров XMC1000, на которые необходимо обратить внимание:
- надежность;
- широкий температурный рабочий диапазон;
- эффективность периферии (возможность выполнять некоторые задачи в фоновом режиме без участия основного ядра);
- небольшое количество разнообразных корпусов и кристаллов, не используются корпуса BGA (это обеспечивает повышенную надежность и хорошее распределение тепла);
- длительное время поддержки производителем (более 15 лет — обязательное условие для промышленных применений);
- легкая миграция проекта (или его части) с младших семейств на XMC4500;
- бесплатная среда разработки;
- хорошая техническая поддержка Infineon;
- собственные производственные мощности компании Infineon, позволяющие получить уверенность в качестве производимых компонентов;
- оправданная цена.
Вывод: семейство XMC1000 — это качественные, сбалансированные по производительности, надежные микроконтроллеры для разнообразных промышленных применений.
- Иванов О. Dave3 — среда компонентно-ориентированного программирования для встраиваемых систем // Компоненты и технологии. 2013. № 7.
- www.infineon.com
- Arduino-совместимый проект https://code.google.com/p/arduino-to-xmc/
- Форум с поддержкой специалистами компании www.infineonforums.com