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

 
 
> 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 23 2010, 09:28
Сообщение #2


Гуру
******

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



А приём-то у вас работает? А то как-то странно: printf обычно передает по UART, а не по USB.
Go to the top of the page
 
+Quote Post
Mty
сообщение Nov 23 2010, 09:43
Сообщение #3


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

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



Цитата(Xenia @ Nov 23 2010, 12:28) *
А приём-то у вас работает? А то как-то странно: printf обычно передает по UART, а не по USB.


Да, работает.
Где-то видимо putch переназначен для работы через USB. Не искал где.

Цитата(kovigor @ Nov 23 2010, 12:33) *
Просто ради интереса посмотрел, какая предельная скорость передачи у моего фабричного переходничка на ИС вроде FT232. Написано, что 128000 Бит/сек. А 20 КБайт - это 200000 Бит/Сек. Чувствуете разницу ?


Не совсем близкая параллель. FT232 это конвертер в RS232 насколько я помню, а у at90usb1287 на борту хардверный USB контроллер на 12mbit/s. На www.avrfreaks.net видел сообщения что реально у людей он работал до 7 мбит в одну сторону и до 4 в дуплексе. Правда с правкой родных библиотек от Atmel.
Go to the top of the page
 
+Quote Post
shrek
сообщение Nov 23 2010, 18:20
Сообщение #4


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

Группа: Участник
Сообщений: 125
Регистрация: 1-12-08
Из: г. Орел
Пользователь №: 42 126



Цитата(Mty @ Nov 23 2010, 12:43) *
Да, работает.
Где-то видимо putch переназначен для работы через USB. Не искал где.



Не совсем близкая параллель. FT232 это конвертер в RS232 насколько я помню, а у at90usb1287 на борту хардверный USB контроллер на 12mbit/s. На www.avrfreaks.net видел сообщения что реально у людей он работал до 7 мбит в одну сторону и до 4 в дуплексе. Правда с правкой родных библиотек от Atmel.


А вы бы не могли бы по подробнее про последнее написанное)))
Сам столкнулся с ограничением USB to Serial максимум 64 килобайта в секунду из-за ограничения спецификацией USB на конечные точки с BULK типом передачи данных. Для команд скорость вполе годится, для сыплющихся данных маловато)))
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Nov 24 2010, 09:23
Сообщение #5


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

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



Цитата(shrek @ Nov 23 2010, 22:20) *
Сам столкнулся с ограничением USB to Serial максимум 64 килобайта в секунду из-за ограничения спецификацией USB на конечные точки с BULK типом передачи данных. Для команд скорость вполе годится, для сыплющихся данных маловато)))


Это где в спецификации usb 1.1 такое ограничение указано? Может Вы спутали с ограничениями связанными с классами устройств?
ЕР типа INTERRUPT с размером в 64 байта (применяются в HID-устройствах) могут опрашиваться раз в 1 мС поэтому там скорость ограничена 64 кбайт/с.
ЕР типа BULK по 64 байта используются в таких классах устройств как mass storage и там реально можно получить скорость 700-800 кбайт/с (старый mp3 usb1.1 работал на такой скорости).
Go to the top of the page
 
+Quote Post
shrek
сообщение Nov 25 2010, 07:08
Сообщение #6


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

Группа: Участник
Сообщений: 125
Регистрация: 1-12-08
Из: г. Орел
Пользователь №: 42 126



Цитата(mempfis_ @ Nov 24 2010, 12:23) *
Это где в спецификации usb 1.1 такое ограничение указано? Может Вы спутали с ограничениями связанными с классами устройств?
ЕР типа INTERRUPT с размером в 64 байта (применяются в HID-устройствах) могут опрашиваться раз в 1 мС поэтому там скорость ограничена 64 кбайт/с.
ЕР типа BULK по 64 байта используются в таких классах устройств как mass storage и там реально можно получить скорость 700-800 кбайт/с (старый mp3 usb1.1 работал на такой скорости).


The USB defines the allowable maximum bulk data payload sizes to be only 8, 16,
32, or 64 bytes for full-speed endpoints and 512 bytes for high-speed endpoints.

Получается за кадр, период которого 1 мс, full-speed девайс может передать максимум 64 байта и это получается 64 килобайта в секунду или 512000 бит в секунду в одну сторону.
С изохорными передачами устройство по теории может выдать в одну сторону 4 мегабита в секунду.
В CDC классе тоже используются конечные точки типа BULK. У Агурова в примере с пецификации на CDC класс и конкретно для моего девайса (AT91SAM7A3) в библиотеках производителя также две конечные точки типа BULK на прием и передачу и еще одна по прерыванию.
at90usb1287 так же как и AT91SAM7A3 имеет на борту контроллер USB full-speed.

Сообщение отредактировал shrek - Nov 25 2010, 07:12
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Mty   at90usb1287 - малая скорость передачи по USB   Nov 23 2010, 09:14
|- - Mty   Цитата(shrek @ Nov 23 2010, 21:20) А вы б...   Nov 24 2010, 08:55
||- - zhevak   Цитата(Mty @ Nov 24 2010, 13:55) Попробов...   Nov 24 2010, 09:19
- - 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
- - Xenia   А вы еще "double bank mode" включите (эт...   Nov 25 2010, 00:02
- - Mty   Цитата(Xenia @ Nov 25 2010, 03:02) А вы е...   Nov 25 2010, 08:36
- - mempfis_   Цитата(Mty @ Nov 25 2010, 12:36) А как по...   Nov 25 2010, 08:48
- - 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 Текстовая версия Сейчас: 23rd July 2025 - 04:21
Рейтинг@Mail.ru


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