SDK-карта Sandisk зависает после CMD41 - PullRequest
2 голосов
/ 21 мая 2019

Я использую кабель FTDI C232HM USB-> SPI с использованием Windows10

Проблема заключается в следующем: после отправки CMD41 на карту памяти microSD SanDisk 4 ГБ, он воспроизводится с «1», а затем не воспроизводится ни на один другойкоманда

команды инициализации:

  1. Установить CS-вывод HIGH (отмена выбора ведомого)
  2. Переключить часы 80 раз
  3. Установить CS-вывод LOW(выбирает подчиненное устройство)
  4. Отправить CMD0: 0x40,0x00,0x00,0x00,0x00,0x95 (ответ: 0x01)
  5. Отправить CMD8: 0x48,0x00,0x00,0x01,0xAA,0x87 (ответ 0x01; 0x000001AA)
  6. Отправить CMD55: 0x77,0x00,0x00,0x00,0x00,0x00 (ответ: 0x01)
  7. Отправить ACMD41: 0x69,0x40,0x00,0x00,0x00,0x00 (ответ: 0x01)
  8. Отправить CMD55:0x77,0x00,0x00,0x00,0x00,0x00 (ответ: 0xFF) цикл навсегда

Есть идеи?

Спасибо, Рой

Добавлен DUMMY 0XFF перед любой командой Отправить SPI
Добавлена ​​DUMMY 0XFF + 0xFF перед любой командой Send SPI

SD_PowerOn();
Sleep(100);
SD_SendCmd(CMD0, 0);

if (SD_SendCmd(CMD0, 0) == 1) 
{ 
    Timer1 = 100;

    if (SD_SendCmd(CMD8, 0x1AA) == 1) 
    { 
        do {
            if (SD_SendCmd(CMD55, 0) <= 1)
            {
                n = SD_SendCmd(CMD41, 1UL << 30);
                if(n == 0)
                    break; /* ACMD41 with HCS bit */
             }
         } while (Timer1--);

         if (Timer1 && SD_SendCmd(CMD58, 0) == 0) 
         { 
             for (n = 0; n < 4; n++)
             {
                 ocr[n] = SPI_RxByte();
             }
             type = (ocr[0] & 0x40) ? 6 : 2;
         }
    }
...