Pull to refresh

Модуль универсального контроллера для интернета вещей

Programming microcontrollers *IOT DIY


K66BLEZ1 — плата модуля для разработки широкого класса устройств преимущественно в сфере IoT, носимой электроники и малой автоматизации. Отличается разнообразием портов ввода/вывода и интерфейсов, что придает ей необычайную универсальность. Создана на новейших микроконтроллерах фирмы NXP семейства Kinetis. Имеет на борту радио модуль с поддержкой Bluetooth LE 4.2 и 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 был протестирован на полной скорости 480 Мбит/с. Все драйвера USB на стороне PC также работоспособны. Отладочные механизмы обоих процессоров работают без сбоев включая SWD, трассировку и виртуальный COM порт. Дальнейшее тестирование будет продолжено в следующих статьях.

Здесь хранятся все материалы, связанные с этим проектомhttps://github.com/Indemsys/K66BLEZ1
Tags:
Hubs:
Total votes 11: ↑11 and ↓0 +11
Views 16K
Comments Comments 13