Цитата(aaarrr @ Jun 1 2009, 22:39)

Так, а карта не SDHC случаем?
Последовательность инициализации такая:
1. 74 или больше "пустых" клоков.
2. CMD0
3. CMD8. Если есть ответ, значит имеем дело с SD 2.0
4. ACMD41. Если нет ответа, значит имеем дело с MMC
5. Читаем OCR, проверяем на предмет Standard или High Capacity.
Проблема решена!
1. 74 или больше "пустых" клоков.
2. CMD0 (ответ 01)
3. CMD8 (ответ 05) Если есть ответ, значит имеем дело с SD 2.0 и для инициализации используем ACMD41
(Этот пункт можно пропустить, если предполагается использование только 1.0)
4. СMD1 (ответ 01) Ответа не было в п3.
5. Читаем 255 байт с карты (не принципиально! от числа будет зависит количество циклов) анализируем, на всякий случай,
должно быть FF иначе какая то ошибка.
6. Повторяем п.4, число повторений зависит от карты и НЕ прямопропорционально емкости, как логично было бы
предположить (для 1G около 20, 2G -всего 5, 512M -8).
Думаю можно сделать вывод:
для выполнения инициализации некоторые карты требуется тактировать!
Для эксперимента подавал CMD1 (ответ 01), не выполняя чтения между командами, около 10000 раз
карту не смог инициализировать.
Пока разбирался с инициализации написал подсчет CRC7 на ASM (могу поделиться)
Спасибо.
Сообщение отредактировал svchost - Jun 1 2009, 20:06