ESP-ADF I2S Запись прерывистая с включенным PSRAM

Прежде всего; Я использую ESP-IDF 4.2 с ESP-ADF и имею два микрофона CMM4030D, подключенных к ESP32-WROVER-E на специальной плате. Эти микрофоны должны записывать wav-файл на SD-карту с подключением через SPI.

И это работает безупречно! Но не тогда, когда PSRAM включен, он должен инициализироваться при загрузке (что он делает) и может быть выделен с помощью heap_caps_alloc(). Частота PSRAM, как и SPI Flash, установлена ​​на 80 МГц, и к контактам 16 и 17 ничего не подключено.

SDK-Configuration, скорее всего, не проблема, так как я взял примера конфигурацию длясосуществования Wi-Fi за основу.

Итак, в заключение; когда PSRAM включен (загружается при запуске и выделяется с помощью heap_caps_alloc), запись прерывистая, но когда она отключена (но все еще выполняется тот же код), она работает нормально ... Что, черт возьми, может быть причиной этой проблемы?

С уважением,

Запутанный Йохем

1 ответ

Мне удалось реализовать обходной путь для этой проблемы, заключающийся в отключении инициализации PSRAM при загрузке. Затем можно в первую очередь инициализировать PSRAM с помощью следующей функции.

      static void psram_init(){
    esp_spiram_init();
    esp_spiram_init_cache();
    esp_spiram_test();
    esp_spiram_add_to_heapalloc();
}

Один из них не позволяет ESP-ADF использовать PSRAM для выделения буферов, отключив параметр инициализации при загрузке в конфигурации sdk. Это, конечно, приводит к меньшему количеству доступной памяти (что нежелательно), но, по крайней мере, позволяет мне работать над MVP.

Более подробную информацию можно найти на GitHub .

С уважением,

Йохем

Другие вопросы по тегам