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

 
 
> at90usb1287 - малая скорость передачи по USB, Передача данных в режиме CDC USB
Mty
сообщение Nov 23 2010, 09:14
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 151
Регистрация: 19-12-04
Из: Москва
Пользователь №: 1 560



Привет!

Необходимо за 0.1 сек передать с at90usb1287 в комп массив данных из 600 чисел типа int
Я пользуюсь для этого printf()

Код
    
while( buffindex < buffmax ){
printf( "%x %x\r\n", databuff[ buffindex ], databuff[ buffindex + 1 ] );  
buffindex += 2;
}


И получаю очень малую скорость - порядка 100 байт за 0.1 секунды.
А нужно порядка 20 килобайт в секунду.
Посоветуйте, как можно увеличить скорость, что я делаю не так?

За основу я взял AT90USBxxx CDC demonstration с сайта Atmel.
Функцию вывода буффера я поместил в функцию cdc_task()

Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Xenia
сообщение Nov 25 2010, 00:02
Сообщение #2


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



А вы еще "double bank mode" включите (это в конфигурации конечных точек), если до сих пор этого не сделали. Еще быстрее станет.

А то в демонструхе установлен ONE_BANK мод.
Это функция usb_user_endpoint_init() в файле usb_specific_request.c
там надо заменить ONE_BANK на TWO_BANK для точек TX_EP и RX_EP (2-ой и 3-ий вызовы usb_configure_endpoint()), а точку INT_EP оставить, как была (1-ый вызов usb_configure_endpoint()).

После этого прогоните свой тест снова. Напишите, что изменилось. Возможно, что тогда при 80байтах буфер перестанет дробиться.
Go to the top of the page
 
+Quote Post
Mty
сообщение Nov 25 2010, 08:36
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 151
Регистрация: 19-12-04
Из: Москва
Пользователь №: 1 560



Цитата(Xenia @ Nov 25 2010, 03:02) *
А вы еще "double bank mode" включите (это в конфигурации конечных точек), если до сих пор этого не сделали. Еще быстрее станет.

После этого прогоните свой тест снова. Напишите, что изменилось. Возможно, что тогда при 80байтах буфер перестанет дробиться.


Спасибо за идею, в моей версии библиотек (USBKEY_STK525-series6-cdc-2_0_3-doc.zip) похоже уже включен double bank mode.


Код
  usb_configure_endpoint(TX_EP,         \
                         TYPE_BULK,     \
                         DIRECTION_IN,  \
                         SIZE_64,       \
                         TWO_BANKS,     \
                         NYET_ENABLED);



Цитата(shrek @ Nov 25 2010, 10:08) *
Получается за кадр, период которого 1 мс, full-speed девайс может передать максимум 64 байта и это получается 64 килобайта в секунду или 512000 бит в секунду в одну сторону.


А как получается что mass storage работает на скоростях гораздо больше 60кб/сек? Там используется BULK?
Насколько я помню USB флешки на USB 1.1 выдают скорость около мегабайта в секунду.
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Nov 25 2010, 08:48
Сообщение #4


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

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Цитата(Mty @ Nov 25 2010, 12:36) *
А как получается что mass storage работает на скоростях гораздо больше 60кб/сек? Там используется BULK?
Насколько я помню USB флешки на USB 1.1 выдают скорость около мегабайта в секунду.


Это всё получается потому, что для BULK-передач отводится всё свободное время на шине. Если нет SETUP/ISO/INTERRUPT-передач и есть заполненные BULK EPs то USB-host будет считывать данные из них постоянно по мере их заполнения. За 1 мС BULK EP может быть заполненной и считанной несколько раз. Помогает повышению скорости двойная буфферизация.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Mty   at90usb1287 - малая скорость передачи по USB   Nov 23 2010, 09:14
- - Xenia   А приём-то у вас работает? А то как-то странно: pr...   Nov 23 2010, 09:28
|- - Mty   Цитата(Xenia @ Nov 23 2010, 12:28) А приё...   Nov 23 2010, 09:43
|- - shrek   Цитата(Mty @ Nov 23 2010, 12:43) Да, рабо...   Nov 23 2010, 18:20
|- - Mty   Цитата(shrek @ Nov 23 2010, 21:20) А вы б...   Nov 24 2010, 08:55
||- - zhevak   Цитата(Mty @ Nov 24 2010, 13:55) Попробов...   Nov 24 2010, 09:19
|- - mempfis_   Цитата(shrek @ Nov 23 2010, 22:20) Сам ст...   Nov 24 2010, 09:23
|- - shrek   Цитата(mempfis_ @ Nov 24 2010, 12:23) Это...   Nov 25 2010, 07:08
- - kovigor   Цитата(Mty @ Nov 23 2010, 13:14) А нужно ...   Nov 23 2010, 09:33
- - zhevak   Цитата(Mty @ Nov 23 2010, 14:14) И получа...   Nov 23 2010, 10:11
|- - Xenia   Цитата(zhevak @ Nov 23 2010, 13:11) К ста...   Nov 23 2010, 11:57
||- - demiurg_spb   Передавайте бинарный массив сразу без всяких print...   Nov 23 2010, 12:00
|||- - MrYuran   Цитата(demiurg_spb @ Nov 23 2010, 15:00) ...   Nov 23 2010, 12:09
|||- - Mty   Цитата(demiurg_spb @ Nov 23 2010, 15:00) ...   Nov 23 2010, 13:14
|||- - zhevak   Цитата(Mty @ Nov 23 2010, 18:14) Спасибо....   Nov 23 2010, 13:59
||- - zhevak   Цитата(Xenia @ Nov 23 2010, 16:57) Есть г...   Nov 23 2010, 12:24
||- - Xenia   Цитата(zhevak @ Nov 23 2010, 15:24) Знает...   Nov 23 2010, 12:45
|- - Mty   Цитата(zhevak @ Nov 23 2010, 13:11) Отдел...   Nov 23 2010, 12:44
- - ARV   а вы не рассматривали такую возможность: в WinAVR ...   Nov 24 2010, 09:51
|- - Mty   Цитата(ARV @ Nov 24 2010, 12:51) а вы не ...   Nov 24 2010, 20:37
- - Mty   Цитата(mempfis_ @ Nov 25 2010, 11:48) Это...   Nov 25 2010, 10:28
- - shrek   Цитата(mempfis_ @ Nov 25 2010, 11:48) Это...   Nov 25 2010, 13:02
- - mempfis_   Цитата(shrek @ Nov 25 2010, 17:02) С друг...   Nov 25 2010, 13:32
- - shrek   Цитата(mempfis_ @ Nov 25 2010, 16:32) С a...   Nov 25 2010, 13:37
- - mempfis_   Цитата(shrek @ Nov 25 2010, 17:37) Ну воо...   Nov 25 2010, 13:53


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

 


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


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