Я пытаюсь инициализировать SD-карту, используя шину SPI и плату обнаружения STM32F4. Я в основном полагаюсь на реализацию Elm Chan функции disk_initialize в примере кода, чтобы основать свою собственную реализацию. К сожалению, я столкнулся с проблемой, когда отправка CMD58 на SD-карту во время процесса инициализации возвращает результат 0x01, что означает, что SD-карта простаивает. Тем не менее, я все еще вижу следующие четыре байта с SD-карты как 0x00, 0xFF, 0x80, 0x00, которые находятся в правильном формате для ответа R3. Тем не менее, я не уверен, могу ли я доверять этим четырем байтам в качестве своего OCR.
На данный момент я пытался не обращать внимания на то, что SD-карта работает на холостом ходу, и просто пытался использовать следующие четыре байта в качестве OCR, но, похоже, код не работает в других точках во время процесса монтирования относительно типа карты. предполагается из OCR.
if (Timer1 && SD_SendCmd(CMD58, 0) == 0) {
for (n = 0; n < 4; n++) {
ocr[n] = SPI_RxByte();
}
type = (ocr[0] & 0x40) ? 6 : 2;
}
В приведенном выше фрагменте кода я впервые вижу пустой ответ. SD_SendCmd - это то место, куда я отправляю CMD58 на SD-карту и где я получаю 0x01 как самый левый байт пятибайтового ответа. Поскольку я не получаю 0x00, что свидетельствует о том, что на SD-карте нет проблем с переданной ей командой, код прерывается в процессе инициализации и возвращает ошибку. Я был бы очень признателен за любую помощь в этом вопросе, так как в течение некоторого времени я был озадачен этим возвращаемым значением 0x01. Спасибо!