SDHC SPI проблемы с записью
Некоторое время я пытался создать интерфейс SD-карты с периферийным устройством LPC1766 SPI, и сейчас я застрял в проблеме, которая нигде не могла найти ответ.
Проблема в том, что SDHC-карты не отвечают на команды записи и чтения, как ожидалось.
Все отлично работает при инициализации, которая была основана на блок-схеме Чана и на примечании к приложению NXP. Я могу различать версии карт, читать OCR, CID, CSD и определять их размеры.
После этого шага я начинаю писать отдельные блоки каждую секунду и читать их обратно, чтобы проверить целостность данных. На карте Kingston SDHC 4 ГБ класса 4 я могу отправить первую команду записи, но на второй карта даже не отвечает (0x00 или 0x01) на CMD24. С картой памяти SanDisk 4 ГБ класса 4 результаты разные, карта отвечает на каждую команду, но при чтении данных я получаю только нули (я уверен, что я не пишу нули). Если я использую карты SDSC, все работает нормально.
Я знаю, что SDHC имеют адрес с блочной адресацией, а не адрес байта, и что мне нужно отправить ACMD41 с включенным CCS для SDHC. Я также знаю, что тактовая частота не является проблемой (использование 400 кГц для запуска и затем 20 МГц для записи / чтения), потому что я просто включил проверку CRC, и все карты принимают команды и данные. Если я перестаю рассчитывать CRC, все карты отклоняют команды и данные.
1 ответ
Как вы подключаете свою SD-карту? В зависимости от режима / состояния для карты SD(HC) требуется внешний подтягивающий резистор. Без этого вы читаете ноль, так что это может быть вашей проблемой.