Простые восьмиразрядные микроконтроллеры теперь или недоступны или имеют негуманный цениик. Одна из возможных замен — микроконтроллеры Padauk. Эта фирма выпускает самые дешевые микроконтроллеры; в списке производителя есть и однократно и многократно программируемые.
Здесь не будет обзора на микроконтроллеры, это можно сделать самому на официальном сайте Padauk. В этой статье расскажу, как сделать программатор для этих микроконтроллеров.
Надо сказать, что фирменные программаторы от производителя тоже доступны, но цена их колеблется около 100 сами знаете чего. Самодельный обойдется значительно дешевле, и позволит прошивать большое число микроконтроллеров.
Программатор разработан и поддерживается сообществом FreePDK. Все необходимые файлы выложены на Гитхабе.
Эта серия статей основана на видео от EEVblog по той же тематике, там в пяти частях всё рассказано. Я всё повторял за автором. Но лично мне проще работать с текстом и картинками.
Итак первая часть.
Железо
Разбирать схему не будем. Об этом можно почитать на Гитхабе.
Печатная плата. На Гитхабе можно скачать Gerber и заказать в Китае. Другой вариант — можно купить готовую на Озоне.
Выглядит она вот так:
Размеры её 73х22 мм.
Нисколько не умаляю работу, которые провели конструкторы и разработчики при создании этого девайса, честь им и хвала. Но размеры… Монтаж очень плотный, детальки мелкие. Очень мелкие.
На гитхабе можно найти Bom и заказать все разом, я собирал сам.
Сердце программатора — микроконтроллер STM32F072C8T6, на дороге не валяется, но найти можно. Собрав все необходимые компоненты, можно приступать к монтажу.
Паять 0603 на контактные площадки 0603 — ещё то удовольствие. Будьте к этому готовы, запаситесь терпением.
Много всяческих файлов от сообщества поможет правильно провести монтаж:
Здесь можно сопоставлять спецификацию и расположение на плате, очень удобная вещь.
Потратив несколько часов имеем такой результат:
В качестве эксперимента был еще опробован вариант с паяльной пастой и печью. Сделал шаблон из тонкого пластика (300 мкм), засверлил отверстия на месте печатных площадок.
Запекал в повидавшей всё на свете блиннице. Стеклянная крышка позволяет наблюдать за процессом в режиме онлайн.
Если же связываться с паяльной пастой нет желания, и паять будете паяльником, то хороший вариант заменить компоненты 0603 на компоненты 0402. Да, мелкие, нужен хороший пинцет и линза, но паяются намного проще и быстрее. Получится примерно так:
С железом покончено. Переходим ко второй части.
Прошивка программатора
Оригинальная инструкция по прошивке от сообщества Free PDK:
************************ DFU-NOTES for firmware ************************ Install "dfu-util" on your computer: http://dfu-util.sourceforge.net (macOS: brew install dfu-util / Linux: sudo apt-get install dfu-util / Windows: follow the guide on dfu-util web site) 1. unplug USB from Easy PDK programmer 2. on Easy PDK programmer PRESS AND KEEP HOLDING THE BUTTON 3. WHILE STILL HOLDING THE BUTTON connect USB 4. ONLY AFTER USB is connected release the button 5. EXECUTE: dfu-util -d 0483:df11 -a "@Internal Flash /0x08000000/064*0002Kg" --dfuse-address 0x08000000 -D EASYPDKPROG.dfu EXAMPLE OUTPUT: --------------- dfu-util 0.9 ... Opening DFU capable USB device... ID 0483:df11 Run-time device DFU version 011a Claiming USB DFU Interface... Setting Alternate Setting #0 ... Determining device status: state = dfuERROR, status = 10 dfuERROR, clearing status Determining device status: state = dfuIDLE, status = 0 dfuIDLE, continuing DFU mode device DFU version 011a Device returned transfer size 2048 DfuSe interface name: "Internal Flash " Downloading to address = 0x08000000, size = 29068 Download [=========================] 100% 29068 bytes Download done. File downloaded successfully 6. UNPLUG USB from Easy PDK programmer
Распишем пунктам:
- Скачиваем
dfu-util-0.11-binaries .tar.xz
по адресу https://dfu-util.sourceforge.net/releases/; - Скачиваем прошивку с Гитхаба: https://github.com/free-pdk/easy-pdk-programmer-software (жмём Code / Download ZIP);
- Переносим файл
EASYPDKPROG.DFU
в папку win64 с DFU-UTIL.EXE; - Дальше по инструкции выше: зажимаем кнопку на программаторе, вставляем в USB, и устройство должно определяться в диспетчере устройств вот так:
Если определяется как STM32.dfu
, то необходима замена на правильные драйвера. Для этого скачиваем программу Zadig. Настройки:
И, наконец, нажимаем кнопку «Replace Driver». Ждем минут пять, после чего в деспетчере устройств теперь должен определиться как «STM32 BOOTLOADER».
Если всё верно, то переходим непосредственно к прошивке микроконтроллера программатора PDK.
Зажимаем кнопку и вставляем в USB, ждем реакцию ОС, отпускаем кнопку.
Заходим в папку win64 и открываем в ней командную строку: Shift + ПКМ (правая кнопка мыши) по пустому месту / «Открыть окно команд». Откроется командная строка. Вставляем строчку из инструкции выше:
dfu-util -d 0483:df11 -a "@Internal Flash /0x08000000/064*0002Kg" --dfuse-address 0x08000000 -D EASYPDKPROG.dfu
Жмём «Enter». Если все правильно, в ответ получаем вот такое окно:
Итак, программатор микроконтроллеров фирмы PADAUK от сообщества Free PDK готов к работе. После прошивки при подключении к USB в диспетчере устройств программатор никак не определяется (по крайней мере у меня).
Проверять программатор будем в следующей части с помощью командной строки.