Модуль универсального контроллера для интернета вещей. Вдыхаем жизнь


    И вот эта плата лежит передо мной. Свежая, 6-и слойная, ещё не остывшая после станции горячего воздуха. Это самая первая итерация. Я ещё не знаю рабочая ли она, не допущены ли какие-нибудь фатальные ошибки в схеме или что-то типа замыкания земли и питании во внутренних слоях после трассировки. Заработает ли вся периферия, которая подключена к микроконтроллеру, заведётся ли кварц у микроконтроллера, будет ли работать USB на полной скорости в 480 Мбит/сек., нет ли ошибок в разводке радио цепей, подключится ли вообще отладочный адаптер. И вот надо начинать её поднимать…
    Но все по порядку.

    K66BLEZ1 — модульная плата для макетирования и разработки устройств преимущественно в сфере IoT, носимой электроники и малой автоматизации. Создана на новейших микроконтроллерах фирмы NXP семейства Kinetis. Имеет на борту радио модуль с поддержкой Bluetooth LE и ZigBee. Также есть разъёмы для microSD карты и USB 2.0 HS с поддержкой режимов device, host, OTG и зарядник литиевого аккумулятора 3.6 В. С нижней стороны выведено два разъёма по 60 контактов. Есть энергонезависимые часы реального времени с отдельным элементом питания.


    Коротко о плате.


    На плате установлено два микроконтроллера: MK66FN2M0VLQ18 (180 МГц, 2 МБ Flash, 256 КБ RAM) и MKW40Z160VHT4 (48 МГц, 160 КБ Flash, 20 КБ RAM). Первый для основного приложения и второй для беспроводной связи. 90 сигнальных пинов микроконтроллера MK66 выведены на два внешних разъёма.

    Плата модуля 6-и слойная с интегрированной PCB антенной на 2,4 ГГц.
    Материал — высокотемпературный текстолит FR4,
    допускающий многократные перепайки.
    Покрытие — Immersion gold ENIG.


    (Кликнуть для увеличения)


    Встроенную антенну можно заменить на выносную припаяв на плату разъём типа UMC.


    Габаритный чертёж модуля.

    (Кликнуть для увеличения)


    Cоздан схемный и конструктивный (3D) компонент модуля для среды разработки Altium Designer.
    Файлы компонета модуля можно найти в репозитарии по сcылке в конце статьи.


    (Кликнуть для увеличения)


    Представление схемного элемента модуля в среде Altium Designer


    (Кликнуть для увеличения)




    Схема модуля K66BLEZ1.



    Большинство выводов микроконтроллера MK66FN2M0VLQ18 выведены на два внешних разъёма. Разъёмы выбраны так чтобы было удобно присоединять и отсоединять модуль от материнских плат.
    Питание к плате подключается либо через USB разъем, либо через разъёмы расширения X6, X7. Микросхема зарядника BQ24296RGET обеспечивает процесс надёжного автономного заряда литиевого аккумулятора от USB с контролем тока, напряжения и температуры аккумулятора.

    Шаг первый. Подаём питание на модуль.


    Питание подаётся подключением USB кабеля. Ток потребления не превышает 100 мА поэтому подходит любой USB host интерфейс компьютера. Пока в микроконтроллере нет программы компьютер никак не реагирует на подключение модуля по USB.
    Но на модуле должен включиться светодиод «PwrGood». Светодиод «Charger» должен мигать, это говорит, что аккумулятор не подключён. Светодиод «CPU» обслуживается программно, поэтому тоже не горит.

    Шаг второй. Подключение JTAG/SWD адаптера и проверка работоспособности SWD каналов.


    Микроконтроллеры на плате имеют отдельные разъёмы для подключения отладочных адаптеров по SWD интерфейсу. микроконтроллер K66 допускает 3-х проводное подключение SWD с сигналом SWO (разъём X3), а микроконтроллер MKW40 допускает только 2-х проводное подключение (разъём X4). Но это не накладывает ограничения на отладочный адаптер, и он для обоих микроконтроллером может быть одним и тем же.
    Для отладки я применяю адаптер J-Link. Отладочные разъёмы на модуле с шагом 1.27 мм. Поэтому пришлось сделать специальный переходник со стандартного разъёма адаптера на разъем модуля как показано на фото ниже.

    (Кликнуть для увеличения)


    Хотя адаптер J-Link и является лучшим в своём классе, но можно для отладки применить и более дешёвые отладчики, например, ST-Link.
    Для тестирования работоспособности каналов отладки и программирования я использую утилиту от Segger JFlash.
    Эта утилита позволяет просмотреть состояние всех областей памяти чипа, протестировать скорость работы интерфейса и запрограммировать Flash память чипов.

    (Кликнуть для увеличения)



    (Кликнуть для увеличения)


    С помощью JFlash удалось подключиться и проверить оба чипа на модуле.

    Шаг третий. Тестирование первой программы для микроконтроллера K66


    Однако первой программой будет не Hello Word и даже не мигание светодиодом.
    В качестве первого теста выберем сразу эмулятор внешнего диска по USB и эмулятор USB видеокамеры.
    Это возможно поскольку схема модуля во много повторяет схему отладочной платы FRDM-K66F

    Но сначала надо было скачать SDK с примерами программ.
    Создаётся SDK для платы специальным онлайн инструментом на сайте NXP.com по адресу http://kex.freescale.com/en/summary?cas_auth=1 (для этого придётся зарегистрироваться на сайте)
    В диалоге выбираем микроконтроллер MK66FN2M0xxx18
    Диалоговое окно будет иметь вид, показанный ниже:

    (Кликнуть для увеличения)


    Сразу надо определить среду разработки, в которой будет компилироваться SDK. Можно выбрать что-то одно из списка или сразу всё. Список включает и коммерческие IDE и бесплатные:

    Я традиционно выбираю IAR. Мои недавние исследования на тему выбора компиляторов очередной раз показали, что IAR по-прежнему вне конкуренции, во всяком случае для ARM Cortex-M4.
    SDK будет создан с встроенными примерами приложений и тестами периферии для плат frdmk66f и twrk65f180m. Практически все примеры для платы frdmk66f подходят и для нашей платы K66BLEZ1. Поскольку кварцевые резонаторы у этих плат имеют одинаковую частоту и у K66BLEZ1 совпадает подключение SD карты и USB HS интерфейса.

    Были испытаны примеры: usb_device_cdc_vcom, usb_device_cdc_vcom_lite, usb_device_msc_sdcard, usb_device_video_virtual_camera.

    Запись на SD карту в примере usb_device_msc_sdcard была довольно низкой — 200 КБ/сек., считывание — 1 МБ/сек.
    В примере usb_device_video_virtual_camera для просмотра видео использовалась программа PotPlayer x64. Скриншот встроенного в микроконтроллер видео приведён ниже.

    (Кликнуть для увеличения)


    Итого


    Плата ожила без всякого дополнительного тюнинга. USB завёлся на полной скорости. Все драйвера USB на стороне PC тоже работоспособны. Всё говорит о хороших перспективах по дальнейшему подъёму модуля. Впереди предстоит освоение эффективной инициализации чипов, портирование нескольких RTOS, тестирование производительности процессора и файловых систем, создание универсального загрузчика, развёртывание сетевых стеков и протоколов беспроводных mesh сетей и много других интересных вещей.

    Здесь хранятся все материалы, связанные с этим проектомhttps://github.com/Indemsys/K66BLEZ1
    Поделиться публикацией
    Реклама помогает поддерживать и развивать наши сервисы

    Подробнее
    Реклама
    Комментарии 13
    • +1
      Ещё у Кинетисов киллер-фича есть: 16бит АЦП. Подобное есть только арм-камней от АД, но они стоят дороговато+ нету драйверов, как тут( стек для юсб предлагают купить от uc/os). У кинетисов именно что есть драйвера, построенные поверх hal, что сильно сокращает время разработки.
      А зачем два камня на плате, которая предполагается, как IoT-батарейное решение? Я имею ввиду, почему было не обойтись просто KW-камнем? Да и просто камень с ethernet'ом и high-speed трансивером на борту дорогое удовольствие.
      Кстати, а как там со стеками для беспроводной связи?
      • 0
        Модуль планировался и как отладочный поэтому был сделан скоростной USB для осциллографирования внутренних переменных программного обеспечения и сигналов.
        После отладки ПО всегда можно сделать более бюджетный модуль на том же семействе Kinetis.
        Потом еще была цель в универсализации.
        Одним модулем закрыть все возможные варианты узлов в локальных беспроводных сетях: и сенсоры, и маршрутизаторы, и шлюзы c координаторами.
        Стеки протоколов конечно есть и очень развитые. И для BLE и для ZigBee.
        • +1
          Kinetis интересные микроконтроллеры. У меня было желание их попробовать еще когда они были Freescale. Особенно подкупала бесплатная IDE Kinetis Design Studio, MQX и документированность. Какое будущее у Kinetis в NXP? Будут ли развиваться параллельно с LPC или это тупиковая линейка? Как-то непонятно, зачем NXP развивать то что досталось от поглощения Freescale. Спасибо за статью!
          • +1
            Будут. При том похоронят скорее LPC.
            Из недавних событий:
            -отказались от MQX, будут поддерживать взаимодействие с FreeRTOS и uc/os
            -сильно переработали драйвера. Старые были заточены под использование с РТОС-были функции, как с блокирующим, так и с неблокирующим вызовами. Сейчас упростили. Вроде как, будет проще разбираться. Но поэтому старый кодогенератор не работает, а он был дюжеудобный. Поэтому я не перескакиваю на новый KSDK.
            -новый кодогенератор под новые драйвера обещают выкатить в июле.
            -выходят новые подсерии, например mk8xxx и mkl8xxx+какой-то mkw вышли уже при NXP.
            -вышел новый KSDK-kinetis software development kit — плагин, который ложится поверх эклипса.(всё бесплатно само-собой)
            Вообще от слияния Freescale дал NXP кинетис и IMX процы+что-то по RF. Так сложилось, что у нас kinetisы не были распространены, но по миру это весьма популярные МК.
            Если Вы территориально в Москве, то могу отладку дать погонять или пару различных процессоров.
            • 0
              От MQX не отказались, а сделали следующие версии платными.

              • 0
                Скажите пожалуйста, если знаете, Kinetis Design Studio в будущих версия не собирается тоже стать платной?
                • 0
                  Не думаю. В мышеловке сыр никогда не будет платным.
                  • 0
                    В NXP считали что запаха сыра достаточно)
              • 0
                Большое спасибо за подробный ответ! К сожалению, живу далеко от Москвы, но летом в любом случае раздобуду отладку на Kinetis M4/M4F.
            • +1
              Может быть будет полезно кому-нибудь в свете темы:
              Во вторник был на семинаре от Cypress по их BLE 4.2 решениям.Кратко:
              -есть и скоро выкатят ещё больше чипов арм кортекс М0 с 2.4ггц на борту.(PSOC и PROC-решения) Предоставляется стек, занимает 80кб флеша при общем объеме 256.
              -Программируется в их бесплатной IDEшке. Поддержка тоже драйверного уровня, всё очень легко+куча примеров. Сейчас идет 100-дневный челлендж — по проекту на PSOC4 BLE в день. Можно на сайте найти.
              -Есть маленькие(типа 2.5х2.5) платки сертифицированные. Говорят, что будут продавать по цене порядка 3.5 бакса. Хотят в ближайшем будущем конкурировать с atheros. Выведено питание+ около 15 ног. Есть с керамической антенной, а есть с разъемом под внешнюю.
              -задали вопрос-будут ли меш-решения. Сказали, что уже есть-надо написать им в поддержку. Так как БЛЕ пока не поддерживает меш-сети, но скоро планируют ввести(июль назывался)
              -Кипарисовцы слились со Спаншеном, у которого была лицензия на кортексы м4. К осени сказали будут PSOC-и на М4 ина М4+М0. В принципе, должно быть интересно.

              Вобообще, Avnet и Silica где-то раз в пол года привозит их людей на воркшоп. Можно, как инфу новую узнать, так и отладки получить по теме воркшопа(предыдущий был по юсб 3). Опять же через сайт можно отследить.
              • 0
                Спасибо за инфу, ссылочки бы ешё :-)
                Тоже наблюдаю активность Cypress, но мне кажется, что у них только шикарные процессоры для USB 2.0 и 3.0, а вот остальное ничем не примечательно. На wireless рынке Nordic и Texas рулят и ESP их подгоняет.
              • 0
                Поздравляю с выпуском рабочего изделия.
                1) Не могли бы вы указать цену (себестоимость) платки?
                2) Процессор вроде бы мощный, USB 2.0 полноценный, а параллельной шины нет, память DRAM не подключить. Если вы его позиционируете как Low-Energy (RF, wireless, BLE), то USB и Ethernet не будут востребованы. И ещё недостаток вижу, процессор не толерантен к 5 В. Для IoT это не хорошо. Прокомментируете? Какие планы использования?
                3) Мне кажется, было бы эффективно один процессор (центральный) для обработки, а второй для периферии с мощными выводами. И по параллельной шине подключить DRAM. Тогда можно и видео/аудио обработку реализовать, системы наблюдения, распознавания образов и т.д. А вот BLE / Wi-Fi такие вещи мне кажется в виде «свистка» надо делать. У вас второй чип почти ничем не занят, а в нём ведь куча всего есть. Думаю, можно было попроще передатчик выбрать.
                4) А нельзя ли было FT232 для отладки прикрутить?
                • 0
                  Себестоимость пока не определена. Это была ручная работа.

                  С DDRAM у меня есть другой проект - https://habrahabr.ru/post/262657/
                  Ethernet нужен для шлюзов. Я на этом модуле собирался делать много чего.
                  3 вольта не проблема, на этих микроконтроллерах делал даже инверторы для двигателей — https://habrahabr.ru/post/256611/

                  FT232 не ставлю поскольку пользуюсь технологией RTT

                  Свисток всегда можно сделать, но вначале должна быть отладка. Отлаживать на свистке мне бы не хотелось.

                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.