Читаю поле READ_BL_LEN в CSD - получается:
в карте 16MB, – 128 байт,
в карте 512MB – 512 байт,
в карте 1024MB – 8192 байт,
хотя в Product Manual Version 1.9 написано 512 only

Соответственно, карты, размер сектора которых отличается от 512 байт при считывании блока (даже когда читаешь блок указанной длины) вешаются.
С картой, размер сектора которой 512байт - все нормально.
Пробовал натравить команду CMD16 (MMC_SET_BLOCKLEN) с аргументом "512" - карта отвечает 0x01 и ничего не меняется.
Подскажите, где грабли?