При вызове init_card (); функция static void mci_dma_start (U32 mode, U8 *buf), из файла MCI_LPC24xx.c отрабатывает нормально и код
Код
for (i = DMA_TOUT; i; i--) {
if (GPDMA_RAW_INT_TCSTAT & 0x01) {
/* Data transfer finished. */
break;
}
}
if (GPDMA_RAW_INT_TCSTAT & 0x01) {
/* Data transfer finished. */
break;
}
}
Выходит при i = DMA_TOUT. Та же ситуация при чтении директории с карты. Но при подключении USB кабеля выше указанный for(…) выходит при i = 0.
На РС это видится, как устройство подключено, буковка ему присвоена, но при попытке обратиться к этому диску сообщается, что диск не найден.
В приложении скриншоты с окна Keil-а. 1.PNG – при нормальной работе, 2.PNG и 3.PNG – выход с ошибкой (при подключении USB кабеля).
Вторая проблема с DMA у меня была (так пока и не разобрался) в проекте I2S (http://electronix.ru/forum/index.php?showtopic=82113), не инициализируется первый канал, с нулевым каналом всё нормально.
Есть ещё такой файл errata.lpc2478_1.1.pdf. Там описана проблема, относящаяся к I2S «I2S DMA interface is non-operational». Может в этом дело во втором случае?
Чтение документации ни чего не проясняет. Помогите разобраться.