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

 
 
> Не стартует DMA в LPC2148.
Vova_Minsk
сообщение Sep 25 2007, 08:05
Сообщение #1





Группа: Новичок
Сообщений: 9
Регистрация: 8-03-07
Пользователь №: 25 975



Передача организована в bulk режиме. Без использования DMA все передается нормально. При инициализации DMA ошибок не выдает, но переходит в IDLE MODE и ничего не отсылает. Использую кейловский стек, драйвер генерировал в DriverStudio 2.7.

Dd.BufAdr = (DWORD)DataBuf;
Dd.BufLen = 512;
Dd.MaxSize = USB_MAX_PACKET0; // 64 байта
Dd.Cfg.Val = 0;
USB_DMA_Setup (USB_ENDPOINT_IN(5), &Dd))
USB_DMA_Enable(USB_ENDPOINT_IN(5));
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
3m-soft
сообщение Sep 25 2007, 11:31
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 39
Регистрация: 24-08-07
Пользователь №: 30 026



Файл: Project.sct

; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************

LR_IROM1 0x00000000 0x00080000 { ; load region
ER_IROM1 0x00000000 { ; load address = execution address
*.o (RESET, +First)
* (+RO)
}
RW_IRAM1 0x40000000 0x00008000 { ; RW data
* (+RW +ZI)
}
RW_USBRAM 0x7FD00000 0x00002000 {
*.o (USB_RAM)
}
}

А это например в проге:

#pragma arm section zidata="USB_RAM"
PUSB_DMA_DESCRIPTOR UDCA[USB_EP_COUNT]; // Массив указателей на DMA дескрипторы для всех (32) конечных точек
BYTE dma_buffer[DMABUFFER_SIZE];
USB_DMA_DESCRIPTOR in_dd;
#pragma arm section zidata

Сообщение отредактировал 3m-soft - Sep 25 2007, 11:54
Go to the top of the page
 
+Quote Post
Vova_Minsk
сообщение Sep 25 2007, 12:30
Сообщение #3





Группа: Новичок
Сообщений: 9
Регистрация: 8-03-07
Пользователь №: 25 975



Цитата(3m-soft @ Sep 25 2007, 14:31) *
Файл: Project.sct

; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************

LR_IROM1 0x00000000 0x00080000 { ; load region
ER_IROM1 0x00000000 { ; load address = execution address
*.o (RESET, +First)
* (+RO)
}
RW_IRAM1 0x40000000 0x00008000 { ; RW data
* (+RW +ZI)
}
RW_USBRAM 0x7FD00000 0x00002000 {
*.o (USB_RAM)
}
}

А это например в проге:

#pragma arm section zidata="USB_RAM"
PUSB_DMA_DESCRIPTOR UDCA[USB_EP_COUNT]; // Массив указателей на DMA дескрипторы для всех (32) конечных точек
BYTE dma_buffer[DMABUFFER_SIZE];
USB_DMA_DESCRIPTOR in_dd;
#pragma arm section zidata


Все заработало. Спасибо за ценные советы. a14.gif
Go to the top of the page
 
+Quote Post



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

 


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


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