Ошибка «card did not respond to voltage select» появляется в мониторе порта при инициализации SD-карты на ESP32, Arduino или другом микроконтроллере и означает, что карта не ответила на команду выбора рабочего напряжения на этапе стартового рукопожатия. Хост отправляет карте команду ACMD41 (в режиме SD) или эквивалентную последовательность инициализации и ждёт подтверждения, что карта приняла условия питания — ответа не приходит, и монтирование файловой системы обрывается.
Проблема почти всегда носит аппаратный характер: питание, контакты, линии данных или сама карта. Программная часть (библиотека SD.h, SD_MMC) здесь лишь сообщает о результате неудачного обмена. Ниже разберём, что именно проверять и в каком порядке, чтобы не тратить время на перепрошивку там, где виноват резистор или «просевшее» питание.
Что означает эта ошибка на уровне протокола
При подаче питания SD-карта стартует в режиме 3,3 В и ждёт от хоста последовательность инициализации: сброс (CMD0), проверка условий работы (CMD8), затем команда выбора напряжения и запуска инициализации. Фраза «did not respond to voltage select» говорит о том, что на одном из этих шагов карта промолчала — хост не дождался корректного ответа в отведённый таймаут.
Причины молчания делятся на четыре группы: карта физически не получает питание, линии связи (CLK, CMD, DAT или MISO/MOSI в SPI-режиме) не доходят до карты, карта неисправна или не поддерживается, либо нарушены тайминги из-за слишком высокой частоты шины на старте.
💡Ошибка voltage select — это симптом неудачного рукопожатия на старте, а не ошибка файловой системы. Искать нужно в питании, проводке и частоте шины, а не в форматировании.