ESP32

Как прошить ESP32-S3 через USB: BOOT и режим загрузчика

Дата публикации:

21 0

ESP32-S3 можно прошивать через USB без отдельного программатора, но способ подключения зависит от конкретной платы. На одних моделях USB подключён непосредственно к ESP32-S3, на других используется отдельный USB-UART преобразователь, а некоторые платы имеют сразу два USB-разъёма. Если автоматическая загрузка не срабатывает, ESP32-S3 можно вручную перевести в режим загрузчика с помощью BOOT и RESET или EN.

Прошивка платы ESP32-S3 через USB с использованием кнопки BOOT.

Как ESP32-S3 прошивается через USB

У ESP32-S3 есть встроенный USB-интерфейс, поэтому микроконтроллер может прошиваться непосредственно через USB без отдельного CH340, CP2102 или другого преобразователя. При этом конкретная плата может быть устроена иначе: производитель может вывести встроенный USB ESP32-S3 на разъём, установить отдельный USB-UART мост или использовать оба варианта одновременно.

Если на плате два разъёма USB-C, не стоит считать их взаимозаменяемыми. Один может быть подключён к встроенному USB ESP32-S3, а второй – к USB-UART преобразователю. Названия вроде USB, UART, COM, OTG или USB-to-UART зависят от производителя, поэтому при сомнениях лучше посмотреть схему или документацию конкретной платы.

Подробнее о разновидностях модулей, памяти и интерфейсах семейства можно посмотреть в материале ESP32-S3: разновидности, память, интерфейсы и применение.

Что проверить перед первой прошивкой

Сначала подключите плату USB-кабелем с линиями данных. Кабели, предназначенные только для зарядки, могут подавать питание на плату, но компьютер при этом не увидит USB-устройство. Если плата имеет несколько USB-разъёмов, для первой попытки лучше использовать тот, который производитель указывает для программирования.

После подключения проверьте, появился ли новый последовательный порт. В Windows это обычно COM-порт, в macOS и Linux устройство отображается под системным именем последовательного интерфейса. Если после подключения платы список портов вообще не меняется, проблема находится ещё до этапа прошивки: нужно проверить кабель, USB-разъём, выбранный порт платы и режим загрузки.

Для ESP32-S3 также важно правильно выбрать целевую плату в среде разработки. Если для конкретной модели есть собственное описание платы, следует использовать его. Для универсальных плат на ESP32-S3 часто применяется профиль ESP32S3 Dev Module, но настройки Flash, PSRAM и USB должны соответствовать установленному модулю.

Как вручную включить режим загрузчика

Кнопка BOOT на большинстве плат ESP32-S3 связана с GPIO0. Если GPIO0 удерживается в низком уровне во время сброса микроконтроллера, ESP32-S3 запускает встроенный ROM-загрузчик вместо программы из Flash.

Обычная последовательность выглядит так:

  1. Нажмите и удерживайте BOOT.
  2. Коротко нажмите RESET или EN.
  3. Отпустите RESET или EN.
  4. Отпустите BOOT.
  5. Снова проверьте список портов и запустите прошивку.

После перехода в Download Mode порт может появиться заново или получить другое имя. Поэтому если среда разработки продолжает использовать старый COM-порт, нужно открыть список портов ещё раз и выбрать тот, который появился после входа в загрузчик.

На платах без отдельной кнопки RESET или EN процедура может отличаться. В таком случае ориентироваться нужно на документацию платы, поскольку производители по-разному реализуют автоматический reset и управление GPIO0.

Если Arduino IDE зависает на Connecting

Сообщение `Connecting...` обычно означает, что программа для прошивки уже открыла выбранный порт, но не смогла установить связь с ROM-загрузчиком ESP32-S3. В первую очередь имеет смысл вручную включить Download Mode через BOOT и RESET, а затем повторить загрузку.

СимптомЧто проверить
Порт есть, но загрузка зависает на ConnectingВойти в Download Mode вручную через BOOT и RESET или EN
Порта нет совсемUSB-кабель, разъём платы, другой USB-порт компьютера
После BOOT появился другой портВыбрать новый порт в среде разработки
Прошивка раньше работала, а после нового скетча USB исчезПеревести ESP32-S3 в ROM-загрузчик вручную
На плате два USB-разъёмаПроверить, какой из них предназначен для программирования

Если используется последовательный монитор, перед новой попыткой прошивки его лучше закрыть. В некоторых системах открытый терминал может удерживать последовательный порт и мешать программе загрузки получить к нему доступ.

Почему BOOT иногда вообще не нужен

На многих платах переход в режим загрузчика выполняется автоматически. USB-UART преобразователь или встроенный USB-интерфейс вместе со схемой платы позволяют программе прошивки управлять линиями reset и boot без нажатия кнопок.

В нормальной ситуации достаточно выбрать плату и порт, нажать Upload и дождаться окончания записи. Ручной BOOT нужен прежде всего тогда, когда автоматический переход не сработал, используется нестандартная плата или предыдущая программа изменила работу USB.

Поэтому постоянно удерживать BOOT при каждой прошивке исправной платы ESP32-S3 обычно не требуется.

Встроенный USB и USB-UART – не одно и то же

Если на плате установлен CH340, CP210x или другой USB-UART преобразователь, компьютер взаимодействует с ним, а прошивка передаётся ESP32-S3 через UART. Для такого преобразователя в некоторых операционных системах может потребоваться соответствующий драйвер.

При использовании встроенного USB Serial/JTAG соединение идёт непосредственно с ESP32-S3. Этот интерфейс может использоваться для прошивки, последовательной консоли и JTAG-отладки. Поэтому две внешне похожие платы ESP32-S3 могут вести себя по-разному при подключении к одному и тому же компьютеру.

Не следует устанавливать случайные драйверы только потому, что ESP32-S3 не прошивается. Сначала нужно определить, какой именно USB-интерфейс используется на конкретной плате.

Настройки USB в Arduino IDE

При работе через встроенный USB ESP32-S3 в Arduino IDE доступны дополнительные параметры USB. Для режима USB CDC используется настройка `USB CDC On Boot`, а конкретный набор доступных пунктов зависит от выбранной платы и версии Arduino ESP32 Core.

После первоначальной прошивки с включённым USB CDC программа может создавать последовательный USB-порт непосредственно средствами ESP32-S3. При этом порт после перезапуска способен измениться, поэтому перед открытием Serial Monitor или следующей загрузкой стоит проверить список портов ещё раз.

USB DFU также поддерживается ESP32-S3, но это отдельный способ загрузки. Для обычной разработки через Arduino IDE чаще используется последовательная загрузка через встроенный USB или USB-UART, поэтому включать DFU только ради попытки исправить обычную ошибку `Connecting...` не требуется.

Когда прошивка ломает USB

Программа, записанная во Flash, может изменить конфигурацию встроенного USB, использовать соответствующие GPIO для другой функции или запустить устройство в состоянии, при котором обычный USB-порт больше не появляется. Это не обязательно означает, что микроконтроллер повреждён.

ROM-загрузчик находится внутри ESP32-S3 и не зависит от пользовательской программы во Flash. Поэтому в подобной ситуации нужно снова войти в Download Mode через BOOT и RESET. Если после этого USB-порт появляется, плату обычно можно перепрошить рабочей программой.

Если ручной BOOT не помогает

Если ESP32-S3 не выходит на связь даже в Download Mode, нужно отделить проблему прошивки от проблемы самого USB-соединения. Попробуйте другой заведомо исправный кабель с передачей данных, другой USB-порт компьютера и, если плата имеет несколько разъёмов, другой интерфейс программирования.

На собственной плате или нестандартном модуле нужно дополнительно проверить GPIO0 и цепь RESET/CHIP_PU. Внешняя схема не должна удерживать загрузочные выводы в состоянии, препятствующем запуску ROM-загрузчика. Для встроенного USB также важны линии USB самого ESP32-S3.

Если при удержании BOOT и сбросе появляется новый последовательный порт, сам ROM-загрузчик работает и искать проблему следует уже в настройках среды разработки, выбранной плате, порте или параметрах загрузки.

После успешной прошивки

После завершения записи ESP32-S3 обычно перезапускается и запускает программу из Flash. Если использовался ручной режим загрузчика и автоматический reset не произошёл, достаточно нажать RESET или EN.

Если после прошивки программа запускается, но последовательный порт пропадает, это уже не обязательно ошибка записи. Для встроенного USB наличие порта после запуска зависит от конфигурации USB в самой прошивке.

Для выбора подходящей платы, типа памяти и варианта ESP32-S3 можно использовать страницу ESP32-S3 в техническом справочнике CLEX. Платы на ESP32-S3 с разными объёмами Flash и PSRAM, дисплеями, камерами и дополнительными интерфейсами собраны в категории Платы разработки ESP32-S3.

Обновлено:

Email не публикуется и используется только для уведомлений. Ссылки в комментариях запрещены. Комментарий появится после проверки модератором.

Комментарии (0)

Связанные решения

Материалы CLEX по теме

Справочник

ESP32-S3

ESP32-S3 в справочнике CLEX: платы разработки, модули с дисплеями, камерой, Ethernet, Wi-Fi/Bluetooth и материалы по применению ESP32-S3 в проектах.

Категории товаров

Платы разработки ESP32-S3

Платы разработки ESP32-S3 с Wi-Fi, Bluetooth LE, поддержкой камер, дисплеев, USB и внешней памяти. Для машинного зрения, голосового управления, HMI-интерфейсов, IoT, робототехники и устройств с локальной обработкой данных.