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

 
 
> 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
Ответов
VslavX
сообщение Mar 18 2013, 18:32
Сообщение #2


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(megajohn @ Mar 15 2013, 19:37) *
в памяти, куда был настроен DMA вижу весь свой сектор но кроме 32байт, и они лежат в фифо MCI
и не понимаю почему они не забираются DMA

Не сталкивался с таким, у меня на LPC1788 все работает, DMA настраиваю так:
CODE

MCI_DATA_CTRL = 0;
//
// Запрещаем и подготавливаем канал 1 модуля GP DMA
//
DMA_CH1_CFG = 0;
DMA_INT_TC_CLR = bDMA_TC_INT1;
DMA_INT_ERR_CLR = bDMA_ERR_INT1;

DMA_CH1_SRC = (DWORD)buf;
DMA_CH1_DEST = (DWORD)&MCI_FIFO[0];
DMA_CH1_LLI = NULL;
DMA_CH1_CTRL = IO_SDMMC_BLOCK_SIZE/sizeof(DWORD) // число не байтов
| bDMA_SBSIZE_8 // а трансферов
| bDMA_DBSIZE_8 // на стороне источника
| bDMA_SWIDTH_32
| bDMA_DWIDTH_32
| bDMA_SI
| bDMA_I;

Go to the top of the page
 
+Quote Post
megajohn
сообщение Mar 19 2013, 06:28
Сообщение #3


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

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



Цитата(VslavX @ Mar 18 2013, 22:32) *
Не сталкивался с таким, у меня на LPC1788 все работает, DMA настраиваю так:

у вас пример MEM2MCI. Покажите плз еще обратно.
На данный момент подправил TranfreSize но так и остались не все завершенные трансферы.


На данный момент добился нормальной работы через DMA только задавая MCI->DATALENGTH = 512 + 32
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post
VslavX
сообщение Mar 19 2013, 07:06
Сообщение #4


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(megajohn @ Mar 19 2013, 08:28) *
у вас пример MEM2MCI. Покажите плз еще обратно.

CODE

//
// Запрещаем и подготавливаем канал 1 модуля GP DMA
//
DMA_CH1_CFG = 0;
DMA_INT_TC_CLR = bDMA_TC_INT1;
DMA_INT_ERR_CLR = bDMA_ERR_INT1;
DMA_CH1_SRC = (DWORD)&MCI_FIFO[0];
DMA_CH1_DEST = (DWORD)buf;
DMA_CH1_LLI = NULL;
DMA_CH1_CTRL = IO_SDMMC_BLOCK_SIZE/sizeof(DWORD) // число не байтов
| bDMA_SBSIZE_8 // а трансферов
| bDMA_DBSIZE_8 // на стороне источника
| bDMA_SWIDTH_32
| bDMA_DWIDTH_32
| bDMA_DI
| bDMA_I;

Там то же самое. Причем работают как варианты с одиночным сектором, так и с непрерывным чтением.

Специально сейчас после окончания транзакции распечатал DMA_CH1_CTRL - в поле счетчика светится 0, все данные корректно переданы в буфер. А то я уже сомневаться начал - с 1788 еще прикладники плотно не работали, может там ошибка. Но вроде нет, все нормально. Этот же код успешно работает на 2368/88.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 10:52
Рейтинг@Mail.ru


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