Господа, помогите, пожалуйста.
На CMD17 карта не дает данных. Пытаюсь вычитать один блок (512 байт). Команда отрабатывается MCI успешно. В ответ тишина. В регистре статуса: Data Timeout. Пытался данные вычитывать на частоте < 400 КГц, на однобитной шине. Все одно...
Уже бодаюсь не один день. Эти карты какие-то не простые, хотя в спецификации все просто...
Спасибо!
Поистине волшебный форум) Только напишешь, как проблема решается!
Подглядывая в драйвера, раздаваемые с FatFS, переписал код.
Там дается CMD17, затем модуль MCI натравливается на ожидание данных. Возникает таймаут.
Я сделал наоборот. Сначала подготовил MCI к ожиданию данных от карты. Потом дал CMD17. Данные пришли))) Правда я пока без DMA принимаю, возникает RX Overrun. Но это уже дело техники.
CODE
MCI_DATA_TMR = 5 * 6000000; // 5 sec at 6000 000 Hz
MCI_DATA_LEN = 512;
uint8_t buffer[ 512 ];
MCI_DATA_CTRL = 1 | ( 1 << 1 ) | ( 9 << 4 );
do
{
retVal = sendCmd( 17, 2048, FMCIShortResp );
if( ( retVal == FOk ) && ( ( response.resp0 & ( 0x0f << 8 ) ) == 0x900 ) )
break;
FHAL::sleep( 100 );
timeout -= 100;
}
while( timeout );
Выбор.