На пользовательской печатной плате на базе ESP32 я больше не могу мигать после первой успешной прошивки

Я разработал и изготовил индивидуальную печатную плату с чипом ESP32 на ней. Я использую свой кабель FTDI для загрузки своей прошивки. У меня нет проблем с прошивкой прошивки, и она работает без проблем. Пока все идет хорошо. Но тогда любые последовательные попытки прошить снова-это тупик, так как это приводит к таймауту (конечно, я все еще нажимаю кнопку загрузки на своей печатной плате).

Если я возьму новую печатную плату, первая вспышка будет в порядке, но я не смогу сделать это снова.

Примечание: чтобы сделать все как можно проще, я просто использую Arduino IDE и свой код do-nothing в качестве замены прошивки:


void setup() {
  Serial.begin(115200);
  //Serial.setDebugOutput(true);
  Serial.println("Yo from SDL!");
}

// the loop function runs over and over again forever
int _loop = 1;

void loop() {
  Serial.print("Loop #");
  Serial.println(_loop++);  
  Serial.println();
  delay(3000); 
}

[ОБНОВЛЕНО] Вот схема, касающаяся ESP32 и GPIO0, GPIO2:

Схема печатной платы относительно загрузчика

У тебя есть какая-нибудь зацепка?!

, 👍-1

Обсуждение

Правильно ли вы подключили GPIO, которые запускают режим загрузчика?, @Majenko

@Majenko Я подключил вывод загрузчика и добавил кнопку, чтобы перевести чип в режим загрузки. Чтобы было понятно, я успешно скачал прошивку в микросхеме в первый раз. Но после этого я не могу обновиться., @Stéphane de Luca

"Пустой" чип будет находиться в режиме загрузчика по умолчанию IIRC. Можете ли вы поделиться своей схемой и дизайном платы?, @Majenko

@Makenlo О, понятно, может быть, я испортил схему загрузчика? позвольте мне поделиться этой частью с вами через несколько минут, @Stéphane de Luca

@Majenko Я загрузил схемы печатной платы относительно загрузчика, @Stéphane de Luca


1 ответ


Лучший ответ:

1

IO2 должен быть подключен к выдвижному резистору (ваш зуммер FET имеет выдвижной резистор на своем входе, который выполняет эту работу, и это к счастью). Я бы подумал о том, чтобы переместить зуммер в другое место и сохранить IO2 только для выдвижного резистора, если это возможно.

IO0 нуждается в подтягивающем резисторе.

Вам нужен какой-то способ сброса ESP32, потянув штифт EN низко, когда вы хотите перепрограммировать его.

Как IO0, так и вывод EN обычно управляются с помощью комбинации выводов DTR и RTS адаптера USB-UART для автоматического сброса. Без этого вам придется вручную удерживать IO0 на низком уровне, одновременно ненадолго нажимая EN low, чтобы сбросить чип.

,

согласно документу io0 как внутреннее подтягивание: действительно ли нам нужно добавить внешнее? (“Каждый обвязочный штифт соединен со своим внутренним подтягиванием/подтягиванием во время сброса микросхемы. Следовательно, если обвязочный штифт не подключен или подключенная внешняя цепь имеет высокое сопротивление, то внутреннее слабое подтягивание/оттягивание будет определять входной уровень обвязочных штифтов по умолчанию”.), @Stéphane de Luca

@StéphanedeLuca Интересно - этого я не знал. Тем не менее, я думаю, что хорошо быть откровенным в этих вещах, чтобы избежать неопределенности. Но если внутренний работает, то все в порядке. Но вам все равно нужно переключить EN ;), @Majenko

Так что IO0 был в порядке. Но я испортил EN (он был прикреплен к подтяжке). И, как указал @Majenko, EN должен быть кратко установлен на низкий уровень. Большое спасибо , @Stéphane de Luca