Strapping pins ESP32: GPIO0, GPIO2, GPIO12, GPIO15
Strapping-пины считывают уровень при старте платы и определяют режим загрузки (обычная работа или прошивка) — если на них висит внешняя нагрузка, плата может не грузиться или уходить в bootloop.
Возможные причины
- GPIO0 подтянут к земле внешней схемой — плата стартует в режиме прошивки вместо обычной работы
- GPIO2 нагружен светодиодом или датчиком, мешающим корректному считыванию уровня при старте
- GPIO12 (MTDI) подтянут к высокому уровню — на платах с флеш-памятью 3.3В это может помешать загрузке
- GPIO15 (MTDO) используется для управления периферией, влияя на вывод отладочных сообщений при старте
Что сделать
- Составьте список strapping-пинов для вашего конкретного чипа (для ESP32 классического: 0, 2, 5, 12, 15; для S3/C3 список отличается — сверьтесь с даташитом).
- Не подключайте к strapping-пинам датчики или кнопки с сильной подтяжкой, которая может изменить уровень при старте.
- Если пин обязательно нужен для периферии, используйте буферный транзистор или отключаемую подтяжку, срабатывающую уже после старта.
- При случайном bootloop или зависании на старте — временно отключите всю периферию с strapping-пинов и проверьте загрузку на чистой плате.
- Для GPIO12 особенно проверьте напряжение флеш-памяти вашей платы — на некоторых платах неверный уровень мешает считать содержимое флеш при старте.
Когда менять железо
Замена не нужна — переносите периферию на пины без strapping-функции или добавляйте развязку между схемой и strapping-пином.
Не официальная поддержка Espressif Systems. Точный список пинов сверяйте с datasheet вашего конкретного чипа и ревизии платы.