Как и когда можно подавать комманду чтения блока?
Потому что у меня блок не читается.
Остановился на следующем:
Подал комманду CMD16 с аргументом 1024 (для проверки)
Карточка выдала 0x40 - неверный аргумент
Потом подаю CMD16 c аргументом 512.
Ответ - 0x00, т.е все ок.
Далее подаю комманду CMD17: и все виснет
получаю одни 0xFF, response r1 нету и в помине.
Не говоря уже о признаке начала блока 0xFE.

Потому что у меня блок не читается.
Остановился на следующем:
Подал комманду CMD16 с аргументом 1024 (для проверки)
Карточка выдала 0x40 - неверный аргумент
Потом подаю CMD16 c аргументом 512.
Ответ - 0x00, т.е все ок.
Далее подаю комманду CMD17: и все виснет
получаю одни 0xFF, response r1 нету и в помине.
Не говоря уже о признаке начала блока 0xFE.

1. Что касается команды CMD16, то BLOCKLEN обычно может быть от 1 до 512, карточки с возможной длиной более 512 не встречал.
2. Команду CMD17 подаётся в состоянии tran, вы правильно подаёте её, т.к вы находитесь в этом состоянии (иначе бы команда и CMD16 не работала). Проблема видимо в получении данных по линии DAT0-3(или DAT0 если 1-битный режим). Убедитесь что работает правильно код получения даныых по линии данных.