В процессе программирования ESP32 разных моделей часто приходится отлаживать программу по методу прошил-проверил. Прошивка осуществляется по последовательному порту UART0 с помощью встроенного загрузчика.
Встроенный загрузчик активируется удержанием в лог. 0 ножки порта GPIO9 в момент сброса или включения питания. Сброс производится подачей лог. 0 на ножку EN микроконтроллера. На многих платах разработчика для этой цели предусмотрены кнопки BOOT и RST.
На некоторых платах, где есть мост USB-UART, реализована функция управления сигналами BOOT и RST путем управления уровнями DTR и RTS. Этими дополнительными сигналами управляет утилита загрузки. Обычно это python-скрипт idf.py, входящий в состав кроссплатформенной системы разработки ESP-IDF [1]. На некоторых платах схема автозагрузки не реализована, поэтому приходится её делать самому.
Ниже показана простая схема автозагрузки на примере микроконтроллера ESP32-C3 (взята из схем отладочных плат ESP32-C3, см. архив [2]). Она может быть реализована на любых биполярных транзисторах структуры n-p-n, например на 2N3904 или BC548. Сигнал CHIP_PU (EN, RST) должен приходить на ножку 7 корпуса QFN32 микроконтроллера ESP32-C3, а сигнал GPIO9 (BOOT) соответственно на ножку 15. Оба эти сигнала имеют активный уровень лог. 0, и по умолчанию находятся в лог. 1. Аналогичная схема используется для любых микроконтроллеров серий ESP32.
После подключения этой схемы начинают работать команды idf.py flash, idf.py monitor и другие, которые взаимодействуют со встроенным загрузчиком ESP32.
[Ссылки]
1. Установка среды разработки ESP-IDF для ESP32. 2. 220909ESP32-C3-devkits-pinouts.zip - документация, принципиальные схемы плат разработчика, pdf-файлы с цоколевкой. |