Теперь, если я «включу проверку CRC7» с помощью CMD59, я получаю ошибки с некоторыми SD-картами. Но если я «отключу проверку CRC7» с помощью CMD59, я смогу читать и записывать файлы на все виды SD-карт, поддерживающих SPI.
Ну, мое первоначальное предположение заключалось в том, что это произошло из-за расчета CRC7. С SD-картами, которые выдают ошибки, я все равно могу без проблем инициализировать их с помощью «включенной проверки CRC7», а также прочитать и записать несколько файлов. Но обычно всего около 10-15 файлов, прежде чем возникает ошибка.
Ошибка проявляется следующим образом:
После CMD17 я получаю R1 = 0x00. Но тогда я читаю только 0xFF. Токен данных никогда не приходит. Также нет токена ошибки данных. Только 0xFF. Я читаю 100 раз (100 байт), но как минимум в течение 200 мс (стандарт SD-карты определяет, что таймаут может быть принят через 100 мс, поэтому я должен быть на всякий случай, чтобы не пропустить токен). Но я получаю только 0xFF. Когда я снова читаю статус с помощью CMD13, я получаю R1 = 0x00 и R2 = 0x00. Так что никакой ошибки. С этого момента ни писать, ни читать не получается. Я могу без ошибок выполнить все команды в R1 или R2 (также CMD17,18,24,25), но при последующем чтении получаю только 0xFF; жетоны никогда не приходят. Но всегда без индикации ошибок.
Если кому-то интересно, процесс инициализации SD-карты происходит так:
- скорость передачи данных
Подробнее здесь: https://stackoverflow.com/questions/797 ... on-of-crc7