Прошивка M5STACK STAMP-PICO

Это очень краткая заметка, причиной появления которой послужило отсутствие на просторах интернета информации, после ознакомления с которой вопросов не оставалось бы совсем…

Итак, решил я вернуться к своему былому хобби — созданию электронных устройств на микроконтроллерах. Когда-то раньше я уже делал свои «поделки» на PIC16 и PIC18, а теперь вот решил испробовать «что-нибудь новенькое»…

И первое, что приглянулось мне из представленных на рынке решений, это были платы на базе процессоров ESP32. В конечном итоге, мной были приобретены платы STAMP-PICO от ф. M5STACK. Подкупил меня в первую очередь их размер — ведь STAMP-PICO были меньше своих аналогов (различных вариаций т.н. «обычных» ESP32 Development Board). Смотрите сами, вот такой он — STAMP-PICO (подробнее — на странице продукта на сайте изготовителя):

"Распиновка" STAMP-PICO

Однако, ценой данной «миниатюризации», среди прочего, стало и отсутствие штатного USB-порта, через который в контроллер можно было бы заливать прошивку. Т.к. свой самый первый «блин комом на ESP32» я вытворял, используя именно один из всевозможных ESP32 Devkit-ов, то уже был в курсе того, что используемая там микросхема, просто преобразует USB в банальный COM-порт и подает на ESP32 сигналы Rx и Tx. Кстати, фирма M5STACK к своим STAMP-PICO предлагает использовать именно плату-переходник USB-TTL собственно изготовления. Только вот ценник у нее «совсем не праздничный» 🙁 . Поэтому, не желая тратить лишние деньги, я заказал в интернете «обычную» (дешевую) плату USB-TTL адаптера, вот такую:

плата переходника USB в TTL

И пока все это ехало ко мне, решил почитать, как же все-таки я буду «лить прошивки»?! Ответы гугла были все как под копирку — подключаете переходник USB-TTL (Rx в Tx, Tx в Rx) и ставите перемычку между выводами G0 и GND микросхемы ESP32. И на этом все! Как по мне — так это явно куцый ответ, который порождает целый ворох новых вопросов для дальнейшего уточнения.

Тем временем, приехал мой STAMP-PICO. А вот переходник USB-TTL «застрял где-то в пути» (похоже, службы доставки хорошо и быстро доставляют именно дорогие отправления, а вот копеечные — майнают). Что же делать? Руки-то уже «чешутся»!… И тут я вспомнил, что где-то в моих «закромах всякой всячины» с давних давен уже валятся один старенький USB-TTL-адаптер (на чипе PL2303), доставшийся мне в комплекте с одноплатником Cubieboard2. Вот такой:

Адаптер USB-TTL №2

И решил я попробовать задействовать этого «старичка», пока новый адаптер затерялся «где-то там» в пути ко мне…

Первым делом, адаптер был вскрыт, чтобы увидеть распиновку контактов по цветам. Вот фотография внутренностей адаптера, на которой видна маркировка контактов:

внутренности адаптера USB-TTL

В итоге, с четырьмя проводами вопросов не возникло совсем. Они были подключены таким образом:

  • 5V адаптера → к контакту 5V платы STAMP-PICO;
  • GND адаптера → к контакту GND платы STAMP-PICO;
  • TXD адаптера → к контакту G3 (Rx0) платы STAMP-PICO;
  • RXD адаптера → к контакту G1 (Tx0) платы STAMP-PICO;

Скажу честно, были у меня переживания на счет уровней сигналов TXD и RXD адаптера (чтобы их уровни не оказались выше 3,3 Вольта, т.к. везде пишут, что сигналы с уровнем в 5 Вольт «убивают» входы ESP32). Проверка показала, что все ОК — плата при включении заработала без нареканий. Запустил Arduino, включил монитор COM-порта, подключил платку к компьютеру и получил после сброса такое вот сообщение:

boot message from STAMP-PICO

Отлично! Порт работает! Пришло время разбираться с прошивкой…

Чтение документации показало — чтобы STAMP-PICO (ESP32) перешел в режим прошивки (boot), его вывод G0 должен быть соединен с землей (GND) в момент загрузки (помните, выше я цитировал ответы гугла, где именно так и было сказано!). Но вот нигде не было сказано — нужно ли поддерживать это соединение на протяжении всего времени заливки прошивки или нет? Так же не уточнялось — «что делать до», и «что после». Ну что ж, «эксперимент — наше все»…

Как показала дальнейшая практика, для оперативной разработки (скомпилировал, прошил, в монитор порта посмотрел и т.д.) плате нужны не перемычки, а две кнопки без фиксации: одна, подключенная между контактом EN и «землей» (GND), и вторая — между контактом G0 и «землей» (GND). Вот схема (показаны только элементы, нужные для загрузки прошивки в чип):

Схема программирования STAMP-PICO

На схеме видно, что кроме именно самих кнопок я добавил еще и пару резисторов «подтяжки» указанных выводов к выходу питания 3,3 Вольта (как говорится, «на всякий случай» 🙂 ). Назначение кнопок такое:

  • Кнопка S1 выполняет сброс (RESET) процессора ESP32;
  • Кнопка S2 переводит процессор ESP32 в режим заливки прошивки (BOOT);

Ну и наконец-то, про сам порядок действий. Если вам нужно прошить STAMP-PICO, то:

  1. Подключаете плату STAMP-PICO к компьютеру (через USB-TTL-адаптер);
  2. Запускаете в Arduino процедуру «Загрузки» скетча (Ctrl + U);
  3. Ждете момент, когда компиляция скетча будет завершена, и Arduino в консоли сообщит, что пытается подключиться к процессору для загрузки (строка «Connecting…….._____…..____»);
  4. Нажимаете кнопку S2 (BOOT) и не отпускаете ее;
  5. Продолжая удерживать кнопку S2 нажатой, нажимаете кнопку S1 (RESET) и через пару секунд отпускаете ее (а кнопку S2 ПРОДОЛЖАЕТЕ ДЕРЖАТЬ НАЖАТОЙ);
  6. Через секунду-две отпускаете кнопку S2;
  7. Начнется загрузка прошивки в STAMP-PICO;
  8. Когда загрузка прошивки будет завершена, Arduino сообщит, что пора выполнить сброс процессора (строка «Hard resetting via RTS pin…»);
  9. Кратко нажмите кнопку S1 (RESET). После сброса начнется выполнение программы, которую вы только что прошили в STAMP-PICO (вы сможете наблюдать это в мониторе COM-порта, если в коде такое предусмотрено);

Все! Успехов!

зы. В документации, размещенной на сайте ф. Espessif, предлагают подключать и другие выводы адаптера USB-TTL ко входам процессора. И это позволит автоматизировать действия, необходимые для его перепрошивки. Речь идет о том, что вывод DTR адаптера USB-TTL нужно подключить к входу GPIO0 процессора, а вывод RTS — к входу EN. И тогда программа-«прошивальщик» (esptool.py), управляя сигналами DTR и RTS адаптера будет сама вводить процессор в режим обновления прошивки.

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *