После беглого знакомства в прошлой статье с микроконтроллерами семейства Kinetis от фирмы Freescale я хотел бы представить проект микроконтроллерного модуля на этих чипах.
Модуль был создан в ответ на потребность в многофункциональном, встраиваемом, надежном центральном узле управления с хорошим запасом функциональности, большим количеством линий ввода-вывода и разнообразием последовательных коммуникационных интерфейсов.
Модуль отличают небольшие габариты, оригинальная архитектура, удобные разъемные соединения типа плата-плата, которые обеспечивают сравнительно небольшое усилие извлечения модуля даже при большом количестве контактов (более 200), специализация для применения в системах управления в жестком реальном времени.
Модуль можно применять в промышленных устройствах и станках, для домашней автоматизации, в робототехнике, в образовательных целях для изучения программирования микроконтроллеров, в системах мониторинга и многих других областях. Встроенные интерфейсы Wi-Fi, Ethernet позволяют легко интегрировать модуль в глобальные сети и интернет вещей (IoT). Встроенный интерфейс TFT дисплея и контроллеры интерфейсов полевых шин помогают сделать на основе модуля панели управления и логические программируемые контроллеры. А интерфейсы USB 2.0 HS и встроенные 8-мь независимых 16-и битных каналов АЦП с предварительными программируемыми усилителями делают из модуля хороший инструмент для записи и обработки внешних сигналов на PC.
Модуль содержит два микроконтроллера семейства Kinetis на ядре ARM Cortex-M4 от фирмы Freescale.
Почему два микроконтроллера и почему Kinetis?
Вот небольшой анализ:
На рынке встраиваемых микроконтроллерных модулей на сегодняшний день можно различить следующие тенденции:
- Модули на мощных чипах класса система на кристале. К ним относятся такие платы как BeagleBone, Raspberry Pi.
Их недостаток, во первых, в очень небольшом количестве доступных внешних линий ввода вывода c функциями последовательных интерфейсов, многофазных ШИМ модуляторов, ЦАП-ов и т.д. Во-вторых, такие платы не предлагают никаких механизмов защиты программного обеспечения. Они рассчитаны исключительно на публичные открытые проекты. В-третьих, они не могут обеспечить режимы низкого энергопотребления сравнимого с чипами на ядре Cortex-M4. В заключении они не расчитаны на работу в системах с жестким реальным временнем. Производители позиционируют их в основном как платформы для операционных систем общего применения типа Линукс, Windows. Попытки работать с этими платами без операционных систем часто натыкаются на недоступность полной документации.
- Модули на простейших 8-и битных микроконтроллерах, отличающиеся сверхнизкой ценой. Это Arduino и его вариации, и клоны. Здесь проблема в функциональности и производительности. Она решается дополнительными платами, как правило со своими микроконтроллерами. Но функциональность все равно при этом оставляет желать лучшего. Также хромают средcтва отладки. Низкие возможности и у среды разработки.
- Модули на ПЛИС. Процессорное ядро или уже встроено в ПЛИС или синтезируется в ней. В любом случае функции внутрисхемной отладки ПО и аналоговые функции слабее аналогичных в микроконтроллерах, управление энергопотреблением менее гибкое, контроллеры периферии приходится синтезировать самим. Качественные периферийные контроллеры, как например в чипах Cortex-M4, для UART, CAN, scatter/gather DMA, USB, Ethernet досточно дороги и приобретаются отдельно.
- Модули с одиночными 32-х битными микроконтроллерами из семейств: STM32F, LPC, EFM32 и т.д. В целом эти платы образуют такую массу решений где трудно не найти что-либо подходящее. Но современные тренды увеличения сложности программного обеспечения приводят к трудностям обеспечения надежности его функционирования на одном чипе. Надежность традиционно обеспечивают использованием двух и более микроконтроллеров, а лучше сетью микроконтроллеров в масштабах чипа или платы. Промежуточное и прикладное программное обеспечение становится слишком сложным даже для кофеварок, заставить его песперебойно работать на одном чипе все труднее и труднее.
Вывод:
Два микроконтроллера позволяют изолировать критические и некритические части приложения разнесением каждой их частей на отдельный чип. Добавим сюда наличие свободно доступной операционной системы MQX, которая поддерживает работу мультипроцессорных систем. В свою очередь ядро ARM Cortex-M4 имеет в своем составе очень эффективные средства внутрисхемной отладки, приобретающие критическое значение при разработке сложного ПО. И поскольку с микроконтроллерами от Freescale операционная система MQX не требует покупки лицензии, то выбор пал именно на семейство Kinetis.
Технические характеристики модуля:
Структурная схема:
Особенностью схемы является возможность быстрого одновременного перепрограммирования обоих чипов на плате через один USB HS интерфейс, без использования резидентных загрузчиков. Т.е. даже сбои во Flash памяти области загрузчиков в чипах не приведут к необходимости использования специального оборудования для воостановления работоспособности модуля.
Также один микроконтроллер (MK70) на плате может перепрограммировать другой (MK60) опять же без использования на втором резидентных загрузчиков. Оба чипа обладают возможность защиты программного обеспечения от считывания.
Размеры модуля:
Распиновка разъемов:
Сигналы с суфиксом _2 принадлежат микроконтроллеру 2 (MK60FN1M0VLQ12)
В отличие от некоторых аналогичных модулей сигналы, выведенные на внешние разъемы не мультиплексированы с периферией, расположенной на плате и могут быть использованы без ограничений.
Печатная плата:
Плата модуля содержит 8-мь слоев металлизации, два из которых залиты землей и один залит питанием 3.3 В. Под антеной Wi-Fi заливки нет. Применена всенаправленная антена ANT8010LL04R2400A с пиковым коэффициентом усиления 5.46 dBi.
Структура стека слоев платы
На данный момент к модулю разработана дополнительная плата с 3.5’’ TFT дисплеем 320x240 точек и сенсорным экраном.
Проекты дополнительных плат будут публиковаться позднее.
Полные исходные файлы для производства платы модуля и схемы находятся здесь: https://github.com/Indemsys/EmSys-K70Wn-PCB