Добрый день!
Пытаюсь по интерфейсу SPI связать microSD карту и TMS320f2812. Для этого использую порт McBSP в режиме SPI-0. Частоту передачи настроила на 300кГц (проверяла осциллографом).
Проект программы прикреплен к записи (CodeComposerStudio 6.1).
Алгоритм программы следующий:
1) Отправляю 0xFF 80 clock cycles при CS в высоком уровне.
2) Перевожу CS в низкий уровень.
3) Отправляю GO_IDLE_STATE (CMD0) с нулевым аргументом и CRC=0x95.
Ответ: 0x01 -> Idle State.
4) Отправляю 0xFF 8 clock cycles.
5) Отправляю SEND_IF_COND (CMD8) с нулевым аргументом и CRC=0x87.
Ответ: 0x05 –> карта версии v1.
4) Отправляю 0xFF 8 clock cycles.
7) Отправляю READ_OCR (CMD58) с нулевым аргументом и CRC=0xFF.
Ответ: 0x01; OCR=0xFF -> напряжение в норме.
8) Отправляю 0xFF 8 clock cycles.
9) Отправляю APP_CMD (CMD55) с нулевым аргументом и CRC=0xFF.
Ответ: 0x01.
10) Отправляю 0xFF 8 clock cycles.
11) Отправляю SD_SEND_OP_COND (ACMD41) с нулевым аргументом и CRC=0xFF.
Ответ: 0x05 или 0x01. MicroSD карта никогда не выходит из режима Idle State
Пыталась решить проблему:
1) Отправляла 0xFF 8 clock cycles между командами при CS в высоком уровне.
2) Включала распознавание CRC при помощи команды 0x59. Ответ был 0x01 (что говорит о том, что команда распознана), однако при отправлении последующей команды с неверным CRC ответ остается преждним, как если бы команды 0х59 не было. Ожидаемой ошибки 0x09 не возникает.
Подскажите пожалуйста, что я делаю не так.
(много форумов уже просмотрено, документации изучено, но решить проблему не удается)
Спасибо!