Добрый день, форумчане! Сложилась тревожная ситуация, прошу помощи. Постараюсь кратко: Я разработал собственную плату с использованием микроконтроллера ESP32-PICO-D4. Прошиваться планировал с использованием USB-UART моста CP2102-GM. Схему цепей связи прилагаю: Если, вдруг, картинки не грузятся: RTS-DTR соединены через мост SS8050-G, как это принято делать. линия Enable имеет 100nF конденсатор в землю и подтяг 10К. Я пробовал программировать через esp-idf и через arduino ide, и проблема везде одинаковая: 1. После компилляции проекта появляется следующее: Код (C++): Serial port COM3 Connecting........_ Chip is ESP32-PICO-D4 (revision 1) Features: WiFi, BT, Dual Core, 240MHz, Embedded Flash, VRef calibration in efuse, Coding Scheme None Crystal is 40MHz MAC: ac:0b:fb:56:32:fc Uploading stub... Running stub... Stub running... Configuring flash size... Warning: Could not auto-detect Flash size (FlashID=0x0, SizeID=0x0), defaulting to 4MB Compressed 8192 bytes to 47... Writing at 0x0000e000... (100 %) Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.0 seconds (effective 2849.4 kbit/s)... A fatal error occurred: Timed out waiting for packet header A fatal error occurred: Timed out waiting for packet header Таким образом, понятно, что плата определяется, но не прошивается. В мониторе наблюдается ошибка пустой флешки. Что я уже попробовал: добавить электролит 10мкФ в цепь EN закоротить IO0 на землю во время загрузки изменить скорость (пробовал почти все) переустановить драйвера на CP2102 (все) Если у кого-нибудь есть идеи, помогите пожалуйста. Если что-то не подробно описал, прошу прощения, готов уточнить в комментариях.
что вы туда пытаетесь прошить? строчка Код (C++): Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.0 seconds (effective 2849.4 kbit/s)... наводит на сомнения. Во-первых, 8кбайт это крайне мало для прошивки ЕСП32. Даже в пустом скетче библиотек обычно не меньше чем на 200К. Во-вторых, то что эти 8к так отлично сжались всего до 47 байт - скорее всего говорит о том, что в прошивке у вас сплошные нули. Думаю, ошибку надо искать не в железе, а еще на этапе сборки и компиляции
Всё верно, я пытаюсь зашить скетч-пример GetID. Это делается в качестве проверки вообще прошиваемости. До рабочей прошивки ещё далеко, хочу удостовериться что железо прошивабельно. Туда и пустой скетч должен заливаться, какая разница?
Это новый контроллер, не так ли? То есть вероятность что ваши среды не знают о его существовании. Это косвенно подтверждается тем, что ide читает название чипа, но не может определить объем памяти, судя по логу. То есть, связь с модулем правильная, на обращение он реагирует и к обмену данными готов, но ide это сделать не может. Что предлагаю. Найдите на сайте espressif утилиту Flash Download Tool, выставьте в ней название вашего чипа и закатайте с нулевого адреса любой доступный бинарник.
Спасибо за отклик! Попробовал через Flash Download Tool, не получилось, выдаёт ошибку "11 - configure spi cmd fail" . см. картинку На скриншоте нет бинарника, это я пробовал уже erase делать, до этого пробовал зашить бинарник с bootloader на разных скоростях с разными конфигурациями флешки - всё кончалось одинаково. В терминале COM-порта, к которому подключена плата раз в секунду появляется это: Код (C++): rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) flash read err, 1000 ets_main.c 371
Ответ найден. схема рабочая, главное не трогать пины, которые подключены к внутренней флешке. Перерезал дорожку и всё прошилось!