SDHC карта на CMD17 отправляет сектор (он фиксирован и равен 512 байт). Вычитываю регистр MCI_FIFO в прерывании RxFifoHalfFull. Более 64 байт не читается. Все остальные - нули.
Читал в DMA, теперь читаю в рукопашную (вроде у DMA в свзяке с MCI есть баг). Результат один. Сектор считан в WinHEX. Совпадают только 64 байта...
Смущает, что FIFO в MCI не одним регистром сделан, а имеет 16 последовательно расположенных адресов. В USART тоже FIFO, но там физически один регистр для чтения и записи. Почему здесь отличие?
Я его как-то непрвильно считываю? Получается совпадение: 16 регистров FIFO по 4 байта (32 бита) как раз равно 64 байтам.
Читаю FIFO так
CODE
// RxFifoHalfFull ISR
for( int i = 0; i < 8; i++ )
{
uint32_t val = MCI_FIFO;
// Здесь уже val побайтно раскидываю в байтовый буфер (сектор 512 байт)
}
for( int i = 0; i < 8; i++ )
{
uint32_t val = MCI_FIFO;
// Здесь уже val побайтно раскидываю в байтовый буфер (сектор 512 байт)
}
Можно сказать, что проц не успевает, что я неправильно читаю FIFO. Но как я уже сказал, читал и DMA и вручную. Результат стаблильно один...
Есть идеи, коллеги?

Уже замаялся... В errata ошибок по MCI | DMA нет...
Спасибо, товарищи!
