DMK #3
Выложил на GitHub несколько примеров по работе с USB на микроконтроллере Миландр. К сожалению, за все те годы, что этот МК на рынке, а до этого его предшественник, ни производитель, ни сообщество не сделали ничего подобного. TinyUSB под него тоже никто не портировал. Так что, по сути, пришлось все реализовывать с нуля. Так как у МК всего 3 эндпоинта, быть одновременно клавиатурой и виртуальным ком-портом он не может. Поэтому я сделал пример combo. В нем, если при загрузке зажата кнопка, то МК загружается в режиме ком-порта и принимает в консоли букву a-z и записывает ее в ПЗУ. Если при загрузке кнопка не нажата, тогда он загружает режим клавиатуры и при нажатии кнопки отправляет букву, которая записана в памяти. И вот на основе этого примера можно сделать как просто запись новой раскладки без перепрошивки, так и нечто куда более интересное — полноценный бутлоадер с прошивкой по ком-порту. И в таком виде оно, вероятно, куда более понятное для сообщества, чем заливка прошивки исключительно через программатор.
К сожалению, поддержка у Миландра оставляет желать лучшего. Начиная с SDK и примеров, которые сделаны только под Keil и IAR, о которых я ничего не знаю, да и выглядят они так, как будто они 20 лет не обновлялись. А для GCC предлагается написать реализацию самостоятельно. Да и примеров для К1986ВЕ92FI в папке нет, поэтому предполагается использовать примеры из папки MDR32F9Q2I. Как об этом узнать? Это надо быть очень глубоко погруженным в лор Миландра и знать, что «обозначение MDR32F9Q2I – это маркировка микроконтроллера К1986ВЕ92QI, а К1986ВЕ92FI выпущен как ближайшая замена К1986ВЕ92QI, поэтому примеры для них совместимы», потому что на сайте и в документации об этом не написано. Касательно ошибочных номиналов резисторов компания признала проблему и предложила перепаять их самостоятельно со словами, что в новых партиях они это дело постараются исправить. Мне кажется, что если бы такая проблема была с каким-нибудь китайским МК, мне бы вернули хотя бы часть денег, либо мне бы уже ехала новая отладочная плата с правильными резисторами.
Данный пост написан на Кабарге (nRF52840) с DMK. На текущий момент моя стандартная раскладка полностью работает на DMK. Также проверена работа на RP2040 и Миландре.
#DMK

GitHub
GitHub - aroum/K1986BE92FI-Mini_usb_examples: USB-прошивки для мк К1986ВЕ92F1I ( MDR1211F1I) на FreeRTOS
USB-прошивки для мк К1986ВЕ92F1I ( MDR1211F1I) на FreeRTOS - aroum/K1986BE92FI-Mini_usb_examples
7June 6, 2026 347