И вот эта плата лежит передо мной. Свежая, 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
Автор: Indemsys