Микроконтроллеры семейства Kinetis от NXP-Freescale для встраиваемой электроники. Открываем для себя
Время от времени меня тоже охватывает потребность что-то поменять. И чаще всего я меняю в своих разработках семейство микроконтроллеров. И я не одинок в этом. Каждый год не менее 50% разработчиков меняют процессор, на котором будут выполнять следующие проекты. На этот раз я решил попробовать семейство Kinetis.Kinetis это семейство низко потребляющих 32-х битных микроконтроллеров базирующихся на процессорных ядрах ARM Cortex-M0/M4/M7, без MMU, с частотой ядра до 240 МГц. Отсутствие MMU означает, что Kinetis не предназначены для операционных систем подобных Windows, QNX, Android, iOS. Эти микроконтроллеры созданы для выполнения кода систем жесткого реального времени в составе разнообразных встраиваемых устройств, от сердечных имплантатов до управляющих контроллеров электромобилей. Хотя и существуют сборки Линукса для запуска на Kinetis.Где можно применить Kinetis? Фирма Freescale могла бы перечислить очень много сфер применения. Но для себя я выделил следующие: индустриальные контроллеры, частотные преобразователи с векторным без сенсорным управлением, тиристорные регуляторы, конвертеры напряжения, анализаторы электросетей, программируемые логических контроллеры для систем управления лифтами, подъемниками, конвейерами и другими механизмами с множеством приводов. Перспективной темой для Kinetis видится интернет вещей и интеллектуальные сенсоры. И наконец неплохо было бы попробовать их в мультикоптерах и другой робототехнике.Что же интересного есть в Kinetis? Ближайшими конкурентами Kinetis можно назвать микроконтроллеры семейств: STM32F4, LPC4000, XMC4000, SAM4S и некоторые менее известные. С некоторых пор конкуренты также предлагают решения и с ядром ARM-Cortex-M7. В общем тоже не стоят на месте.Согласно опросу »2014 Embedded Market Study» самым популярным в мире 32-х разрядным семейством является STM32. Поэтому дальше акцент будет на возможностях Kinetis которых нет в STM32.
На рисунке ниже я изобразил структурную схему старшего представителя семейства Kinetis чипа MK70FN1M0VMJ15. Она чуть подробнее чем принято изображать в описаниях Freescale, чтобы подчеркнуть характерные особенности Kinetis. В скобках даны имена блоков, применяемые в фирменных описаниях.
А вот основные преимущества Kinetis:
-широта номенклатуры. По широте номенклатуры Kinetis не уступает STM32 и даже превосходит. Kinetis включает самые маленькие чипы в мире (2.0×1.6 мм) на ядре ARM и продвинутые чипы MK70 с числом выводов 256 и возможность подключения DDRAM, аналогичных которым у STM нет.
-большая приспособленностью к жестким условиям эксплуатации. В семействе есть чипы с напряжением питания до 5.5 В. Есть чипы специально для автомобильных применений с повышенной устойчивостью к электромагнитным помехам. Помимо этого, в периферии микроконтроллеров всего семейства реализовано много аппаратных решений для повышения помехоустойчивости. Устойчивость к сбоям обеспечивают:-до пяти независимых тактовых генераторов, три из которых на внешних кварцевых резонаторах,-независимый генератор для сторожевого таймера,-аппаратные фильтры двух видов на всех цифровых входах,-управление доступом к различной периферии, возможность управления правами задач,-детектор несанкционированного доступа по множеству событий,-специальный сигнал сброса внешних устройств по отдельному сторожевому таймеру,-возможность защелкивания некоторой периферии для защиты от последующих изменений до отключения питания,-гибкое управление и приоретизация шинных коммутаторови т.д.
-расширенные механизмы программирования и отладки. Гибкость и удобство отладки — общее достоинство всех микроконтроллеров на ядре ARM Cortex M. Как показывает упомянутый выше опрос, разработчики из всех инструментов в работе больше всего внимания уделяют инструментам отладки. И даже высокую популярность STM32 я бы отнес именно к доступности JTAG/SWD отладчика для этих чипов, который сразу встраивается в отладочные платы на базе STM32. В Kinetis помимо этого есть специальный последовательный SPI-совместимый интерфейс программирования — EzPort. EzPort позволяет без JTAG адаптера с высокой скоростью программировать чипы, а также упрощает перепрограммирование в мультипроцессорной системе одних чипов другими. Никаких скрытых загрузчиков и скрытого кода как в LPC или STM32.
-большой объемом прикладных библиотек. У Freescale прикладные библиотеки отличаются своей обстоятельностью и открытостью. Чего стоит только их библиотека для работы по протоколу ZigBee. Это наверно лучшая реализация стека ZigBee полностью доступная в исходных кодах. Далее, конечно, следует библиотеки для управления двигателями. В данный момент ожидается выпуск Freescale обновленного и расширенного пакета ПО для разработки систем управления двигателями на Kinetis. Есть в наличии библиотека для построения графических пользовательских интерфейсов eGUI, библиотека для разработки сенсорных панелей и клавиатур, библиотека поддержки медицинских коммуникационных протоколов, библиотека поддержки стандарта безопасности IEC 60730–1:2010, оптимизированные для аппаратных ускорителей библиотеки криптографических функций, библиотеки протоколов подключения к облачным сервисам и т.д. И это еще не считая программного обеспечения, сопровождающего операционные системы реального времени для Kinetis, которые упоминаются ниже. Отдельно стоит упомянуть различные начальные загрузчики, а также очень полезный для разработчика инструмент FreeMaster который по сути является реализацией встраиваемого в микроконтроллер программного осциллографического модуля с функцией логгера и командного управления.
-наличие эффективных бесплатных средств разработки. Без наличия бесплатных средств разработки эта статья про Kinetis имела бы мало смысла. Да, для Kinetis есть весьма развитая бесплатная среда разработки на базе проекта Eclipse и компилятора GCC под названием Kinetis Design Studio IDE. Эта мощная среда содержащая качественный редактор исходных текстов, компилятор, базовые библиотеки, графический конфигуратор периферии микроконтроллеров (аналог STM32CubeMX для микроконтроллеров STM32), автоматический генератор шаблонных проектов и исходных текстов, SDK с полным набором драйверов ко всей периферии, символьный отладчик-программатор на базе различных JTAG/SWD адаптеров с плагинами для отладки операционных систем и генератор проектов с использованием операционных систем реального времени. Для тех, кто работает с коммерческими IDE Keil или IAR в Kinetis Design Studio есть возможность автоматически экспортировать проекты и исходные тексты в эти IDE и синхронно с Kinetis Design Studio их поддерживать.
На рисунке окно рабочего процесса подготовки проекта в Kinetis Design Studio
-широкий выбор готовых операционных систем реального времени. Операционные системы реального времени — это то без чего немыслима современная встраиваемая электроника. Именно они дают возможность интеграции в одном устройстве огромного числа функций без потери надежности и обеспечивают его конкурентоспособность. Здесь у Kinetis есть то, что я бы назвал неотразимым аргументом — открытая операционная система реального времени MQX. Собственно, с нее и начался мой интерес к Kinetis. Но большинство разработчиков предпочитают FreeRTOS. Для FreeRTOS тоже есть возможность генерации проектов в Kinetis Design Studio. Кроме этого можно сгенерировать проекты для широко известных операционных систем uCOS-II и uCOS-III. Как уже упоминалось существует сборка ОС Линукс для Kinetis. С сайта проекта mbed.org можно скачать открытую операционную систему mbed OS для Kinetis. И конечно можно найти не меньше десятка коммерческих операционных систем, адаптированных под Kinetis.
Коротко об MQX. Первой особенностью этой операционной системы реального времени (в последующем — RTOS) является необычайно проработанный слой драйверов для семейства Kinetis. Практически для всех интерфейсов есть драйвера и как правило в двух реализациях: с использованием полинга и с использованием прерываний. Второй особенностью является мультипроцессорность этой RTOS. В ней заложен стек протоколов и маршрутизация для прозрачного взаимодействия задач выполняющихся на многих микроконтроллерах. Особенность весьма актуальная для сложных робототехнических систем. И третье особенностью является развитое программное обеспечение промежуточного уровня, поставляемое с этой RTOS.Состав непосредственно RTOS представлен на диаграмме ниже
А основной состав промежуточного программного обеспечения перечислить сложно поскольку он постоянно расширяется. Но во всяком случае вот компоненты, которые входят в состав ПО уже достаточно давно: • Файловая система для накопителей на SD картах• Файловая система в ОЗУ.• Файловая система для NAND Flash накопителей• Мультипроцессорная коммуникационная библиотека• Стек протоколов TCP/IP включающий: ARP, DHCP, IP, TCP, UDP, PPP, ICMP, SMTP, SNMP, DNS, HTTP, NAT, RIP, Telnet, FTP, WEB сервер с авторизацией, CGI.• Драйвера Wi-Fi для семейства чипов Qualcomm Atheros AR4100• Классы USB хост: audio, CDC, HID, HUB, MSD, PHDC, printer• Классы USB устройство: CDC, HID, MSD, PHDC• Универсальный коммуникационный драйвер инструмента FreeMaster
Интересные примеры приложений для Kinetis: Электрокардиограф и измеритель пульса (с исходными текстами)Подключение видеокамеры с чипом OV7675 (с исходными текстами)Простое практическое руководство по измерению параметров двигателя необходимых для векторного управленияТонкая настройка алгоритма без сенсорного управления BLDC двигателямиИспользование DMA для организации непрерывного автоматического цикла сканирования произвольного набора аналоговых входов модулем аналого-цифрового преобразователяНадежный способ обновления прошивки микроконтроллера по беспроводным каналам связи с использованием взаимной подмены банков Flash памяти (с исходными текстами)Управление и мониторинг микроконтроллеров через Twitter (с исходными текстами)Управление микроконтроллерами Kinetis с устройства под управлением OS AndroidАудио проигрыватель на Kinetis (с исходными текстами)Использование быстрого преобразования Фурье для реализации измерителя параметров электросети (с исходными текстами)
Здесь перечислена малая часть из примеров применения опубликованных Freescale для семейства Kinetis.Остальные можно найти на официальном сайте.
А теперь к практике Я не любитель готовых отладочных плат и KIT-ов. Имея достаточный опыт работы с микроконтроллерами можно сразу приступать к разработке «боевых» платформ не тратя время на лишние макетные итерации.После недолгого изучения я разработал вот такой отладочный частотный преобразователь: Это устройство получает напряжение от однофазной сети и запускает работу асинхронного двигателя мощностью до 3 кВт. Кроме этого обеспечивает плавный старт и остановку двигателя, и регулировку скорости его вращения в достаточно широком диапазоне. Двигатель можно заставить вращаться даже в несколько раз быстрее чем он мог бы вращаться подключенный напрямую к 3-х фазной сети. В преобразователе применяется современный метод векторного управления.
Проект открыт для изучения и находится по ссылке