реклама на сайте
подробности

 
 
> MCI FIFO LPC2478, Не могу вычитать более 64 байт
haker_fox
сообщение Jan 31 2013, 02:57
Сообщение #1


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Добрый день!

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 байт)
}


Можно сказать, что проц не успевает, что я неправильно читаю FIFO. Но как я уже сказал, читал и DMA и вручную. Результат стаблильно один...

Есть идеи, коллеги? rolleyes.gif

Уже замаялся... В errata ошибок по MCI | DMA нет...

Спасибо, товарищи! rolleyes.gif


--------------------
Выбор.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 00:07
Рейтинг@Mail.ru


Страница сгенерированна за 0.01347 секунд с 7
ELECTRONIX ©2004-2016