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

 
 
> LPC1778 DMA не вычитывает последние данные из FIFO MCI
megajohn
сообщение Mar 15 2013, 17:37
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143



вообщем, переделываю исходники чана для LPC23 на свой LPC1778 + делаю под TNkernel и на DMA.
Вот с чем столкнулся. Карта иннициализируется нормально
настраиваю DMA на прием 512 байт
SRC_BURST_SIZE_1 + DST_BURST_SIZE_1 + SRC_32 + DST_32 + DST_INC и включаю канал

настраиваю
MCI_DATA_LEN=512
MCI_DATA_TMR=дофига
MCI_CLEAR = 0x72A; // далее все как у чана
MCI_MASK0 = 0x72A;
MCI_DATA_CTRL

шлю карте команду CMD17 и жду прерывания от MCI
приходит со статусом
00000000 00100000 10100101 01000000
где выставлено, типо все завершено но в фифо есть данные

в памяти, куда был настроен DMA вижу весь свой сектор но кроме 32байт, и они лежат в фифо MCI
и не понимаю почему они не забираются DMA

на данный момент, пересмотрел исходники чана, томаса, IAR NXP и Nemuisan и там не вижу чтобы ручками вычитывали данные.

Может под конец рабочего дня уже всё перегрелось: и я и MCU


--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
jcxz
сообщение Mar 20 2015, 06:07
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(megajohn @ Mar 15 2013, 23:37) *
вообщем, переделываю исходники чана для LPC23 на свой LPC1778 + делаю под TNkernel и на DMA.

А зачем их (исходники Чана) переделывать??? Их же как раз трогать не надо, надо только прописать низкоуровневую прослойку абстрагирования от аппаратуры (HAL-драйвер - hardware abstraction level).

Про работу через MCI сказать ничего не могу - не пользовал. Но я сам недавно прописывал HAL для связки FatFS+SPI+LPC1788+uCOS.
Мой HAL-драйвер помимо работы через DMA, поддерживает одновременную работу через функции FatFS и низкоуровенвое обращение на чтение/запись к массиву данных SD-карты
(можно работать одновременно двум задачам прикладного уровня не мешая друг другу).
Никаких проблем не обнаружил - всё работает чётко. Чтение SD в обход FatFS через низкоуровневое API == ~1.3МБ/сек.

Могу только посоветовать проверить, что Вы пишете в CONTROL-регистр DMA-канала: размер пакета - соответствует-ли выбранной периферии (MCI)? А также размерности пересылки и выравнивания.

Цитата(megajohn @ Mar 18 2013, 20:15) *
Из-за багов в чипе (DMA останавливается раньше, чем вычитает весь FIFO) пришлось читать 120 двойных слов через DMA и потом остатки из FIFO выгребать вручную.
Далее, DMA реально останавливается, когда FIFO ещё не пустое - видать, при разводке чипа DMA прицепили к сигналу "FIFO наполовину заполнено". Вот он и не дочитывает. И подобного геммороя у NXP полно, странно то, что они не перевыпускают свои даташиты с исправлениями.

Уже много лет работаю с МК от NXP. LPC23xx, LPC17xx, LPC178x. Больше десятка разных устройств, работал с большей частью встроенной периферии - ну ни разу не натыкался на серьёзные баги, ну или что-то существенное, что запомнилось-бы.
И в то же время периодически слышу о багах в них у кого-то.... Вот почему такое??? Неужто мне так везёт, что я каждый раз использую только ту периферию, в которой нет багов, и только те её режимы, которые не глючат????? laughing.gif

PS: Всегда стараюсь следовать правилу - 99% вероятности, что проблема у меня. И только после этого начинаю грешить на железо.
Go to the top of the page
 
+Quote Post



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

 


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


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