Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: USB и DMA (ПДП) в AT91SAM9261
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Morfko
Может кто уже писал или знает, возможно ли организовать прямой доступ к памяти (DMA) потока данных по USB в микроконтроллере AT91SAM9261?
aaarrr
Не предусмотрен там DMA, увы.
Morfko
А в datasheet почему-то тогда написано:

– USB 2.0 Full Speed (12 Mbits per second) Host Double Port
• Dual On-chip Transceivers
• Integrated FIFOs and Dedicated DMA Channels

Может знаете что это за зверь такой "Dedicated DMA Channels"?
aaarrr
Дык то хост, у него по определению есть DMA.
Morfko
Вот как оно...

А есть какой-нибудь микроконтроллер подобный AT91SAM9261 с USB+DMA на борту?
aaarrr
Цитата(Morfko @ Jun 3 2009, 18:01) *
А есть какой-нибудь микроконтроллер подобный AT91SAM9261 с USB+DMA на борту?

Пережевать 12мбит/с можно совершенно спокойно и без DMA, откуда такое требование?
Morfko
Для real-time приложения это нужно просто как воздух. Без DMA никак не получится.
MALLOY2
Цитата
Без DMA никак не получится.
Почему ? там ведь только мегабайт в секунду, это даже ресурсов проца особенно не займет
aaarrr
Цитата(Morfko @ Jun 4 2009, 05:36) *
Для real-time приложения это нужно просто как воздух. Без DMA никак не получится.

Ничего подобного. При правильном подходе никто отсутствия DMA даже не заметит.
Albun
Для real time приложения в данном случае вам было бы достаточно просто организовать обмен данными с USB контроллером по прерываниям. Пришли данные - возникло прерывание, вы перебросили их в память и все. Приложение даже подозревать не будет о том каким образом данные в памяти появляются.

Если предположить что скорость обмена данными будет около 1 Мбайта в секунду (что мало вероятно при общении с PC, обычно меньше), то при размере эднпоинта 64 байта прошивка должна 1000000/64 = 15625 раз в секунду проработать прерывание. Предположим что весь код прерывания у вас занимает не более 1000 тактов процессора (тоесть вход в него, определение что его вызвало, чтение в цикле регистра данных эндпоинта и запись в память и т.п.), тогда в секунду у вас при заданной скорости обмена данными примерно будет потрачено процессором 15625000 тактов, что при тактовой частоте MCU = 48МHz есть менее 30% процессорного времени. 70% времени остается для Вашего real time приложения.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.