ПинЛог

Strapping pins ESP32: GPIO0, GPIO2, GPIO12, GPIO15

Strapping-пины считывают уровень при старте платы и определяют режим загрузки (обычная работа или прошивка) — если на них висит внешняя нагрузка, плата может не грузиться или уходить в bootloop.

Возможные причины

  • GPIO0 подтянут к земле внешней схемой — плата стартует в режиме прошивки вместо обычной работы
  • GPIO2 нагружен светодиодом или датчиком, мешающим корректному считыванию уровня при старте
  • GPIO12 (MTDI) подтянут к высокому уровню — на платах с флеш-памятью 3.3В это может помешать загрузке
  • GPIO15 (MTDO) используется для управления периферией, влияя на вывод отладочных сообщений при старте

Что сделать

  1. Составьте список strapping-пинов для вашего конкретного чипа (для ESP32 классического: 0, 2, 5, 12, 15; для S3/C3 список отличается — сверьтесь с даташитом).
  2. Не подключайте к strapping-пинам датчики или кнопки с сильной подтяжкой, которая может изменить уровень при старте.
  3. Если пин обязательно нужен для периферии, используйте буферный транзистор или отключаемую подтяжку, срабатывающую уже после старта.
  4. При случайном bootloop или зависании на старте — временно отключите всю периферию с strapping-пинов и проверьте загрузку на чистой плате.
  5. Для GPIO12 особенно проверьте напряжение флеш-памяти вашей платы — на некоторых платах неверный уровень мешает считать содержимое флеш при старте.

Когда менять железо

Замена не нужна — переносите периферию на пины без strapping-функции или добавляйте развязку между схемой и strapping-пином.

Не официальная поддержка Espressif Systems. Точный список пинов сверяйте с datasheet вашего конкретного чипа и ревизии платы.

Связанные материалы