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

 
 
 
Reply to this topicStart new topic
> LPC214x, USB 2.0 - Virtual COM port, макс. скорость передачи = 15кБайт/сек, где может быть ограничение скорости?
Alex2172
сообщение Mar 28 2006, 09:02
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 242
Регистрация: 25-08-04
Пользователь №: 537



Есть пример для LPC214x от Keil реализующий передачу с виртуального COM-порта в UART.
Сделаем простой эксперимент... удалим передачу из VCOM в UART, и будем передавать данные обратно в VCOM - т.е. реализуем простое эхо.

Тогда максимальная скорость передачи составляет всего лишь ~15кБайт/сек (независимо от выбранной скорости виртуального COM-порта - будь то 9600, или 921600), и это при том что мы имеем на борту USB 2.0.
Откуда это ограничение? В драйвере от Keil...? В размере буфера bulk-only EP - 64 байт...?
Прошу Вас, помогите разобраться.
Go to the top of the page
 
+Quote Post
Abo
сообщение Mar 28 2006, 09:32
Сообщение #2


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

Группа: Свой
Сообщений: 101
Регистрация: 9-01-06
Пользователь №: 12 967



Что то этого примера на кейле я не нашел. А пример реализует стандартный класс устройства, или там все по свое, в том числе и драйвер для винды?
Go to the top of the page
 
+Quote Post
Alex2172
сообщение Mar 28 2006, 09:38
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 242
Регистрация: 25-08-04
Пользователь №: 537



Цитата(Abo @ Mar 28 2006, 13:32) *
Что то этого примера на кейле я не нашел. А пример реализует стандартный класс устройства, или там все по свое, в том числе и драйвер для винды?


http://www.standardics.philips.com/support.../?scope=LPC2000
см. "Sample Code for AN10420 USB Virtual COM Port on LPC214x"
"AN10420 USB Virtual COM Port on LPC214x"
Go to the top of the page
 
+Quote Post
Alex2172
сообщение Mar 28 2006, 14:55
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 242
Регистрация: 25-08-04
Пользователь №: 537



Привожу пример для приблизительной оценки скорости с использованием HyperTerminal:
1. После установки 2ух драйверов VirtualCOM, и подключения к LPC214x через USB предположим Вы имеете два дополнительных порта COM5 и COM6
2. Открываем два HyperTerminal'а для COM5 и COM6, аппаратный контроль отключаем, остальное "по барабану"
3. В одном HT выбираем принять файл, например через XModem 1k, во втором соответственно передать

Во вложенном проекте для Keil изменения только в файле VCOMuser.c - принимаем с EP2 передаем в EP5, и наоборот - принимаем в EP5, передаем в EP2 (с UART обмен обрезан)

Оценка скорости таким способом будет несколько занижена с 15кБ до 10кБ/сек, но зато не требует специального ПО.

С уважением, Александр
Прикрепленные файлы
Прикрепленный файл  VirtualCOM.zip ( 31.81 килобайт ) Кол-во скачиваний: 133
 
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 28 2006, 15:15
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



HyperTerminal даже для приблизительной оценки скорости использовать нельзя -
очень глючная и тормозная софтина. Могу порекомендовать TeraTerm для этих
целей.
И еще: для оценки скорости данные лучше гнать в одну сторону - скорости передачи
и приема могуг отличаться в разы (и даже на порядки, как в стандартном виндовом CDC).
Go to the top of the page
 
+Quote Post
Alex2172
сообщение Mar 28 2006, 15:34
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 242
Регистрация: 25-08-04
Пользователь №: 537



Кстати, если оценить скорость чтения из виртуального USB Mass Storage Device (также пример от Keil), то скорость составит примерно 30 кБ/сек.
Go to the top of the page
 
+Quote Post
Alex2172
сообщение Mar 29 2006, 11:46
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 242
Регистрация: 25-08-04
Пользователь №: 537



Цитата(aaarrr @ Mar 28 2006, 19:15) *
HyperTerminal даже для приблизительной оценки скорости использовать нельзя -
очень глючная и тормозная софтина. Могу порекомендовать TeraTerm для этих
целей.
И еще: для оценки скорости данные лучше гнать в одну сторону - скорости передачи
и приема могуг отличаться в разы (и даже на порядки, как в стандартном виндовом CDC).


Оценка скорости в HyperTerminal вполне сопоставима с оценкой скорости полученной средствами Win32 CommAPI.

Сообщение отредактировал Alex2172 - Mar 29 2006, 11:51
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 29 2006, 12:16
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Alex2172 @ Mar 29 2006, 15:46) *
Оценка скорости в HyperTerminal вполне сопоставима с оценкой скорости полученной средствами Win32 CommAPI.


Вполне возможно: глючность сказывается на скоростях в десятки-сотни килобайт в
секунду. Но гипертерминал это не оправдывает.
Go to the top of the page
 
+Quote Post
Alex03
сообщение Mar 30 2006, 06:48
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 359
Регистрация: 9-12-05
Пользователь №: 12 034



Может драйвер.
Если передаётся в каждую сторону только по одному BULK пакету в мс. (или даже в 2 мс.)
Go to the top of the page
 
+Quote Post
Alex2172
сообщение Mar 30 2006, 10:55
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 242
Регистрация: 25-08-04
Пользователь №: 537



Цитата(Alex03 @ Mar 30 2006, 10:48) *
Может драйвер.
Если передаётся в каждую сторону только по одному BULK пакету в мс. (или даже в 2 мс.)


Bulk-Only режим, максимальный размер пакета 64 байта, период фрейма 1 мс
LPC2148 формирует прерывание по приему данных в используемый EndPoint с периодом 1 мс.
Поэтому теоретический предел - 64кБ/сек.
При тесте виртуального COM-порта максимальная скорость приема/передачи ~ 15кБ (в тесте использовались пакеты длителностью 16 байт), т.е.
Speed = 64кБ/сек / (64/16) = 16 кБ - все сходиться.

Но! как заставить передавать в одном фрейме несколько пакетов?
Такая же проблема с USB-MEM - в примере используется Bulk-Only 64 байта.
Go to the top of the page
 
+Quote Post
Alex03
сообщение Mar 30 2006, 12:22
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 359
Регистрация: 9-12-05
Пользователь №: 12 034



Я про это и имел ввиду.
И насколько понимаю дело в драйвере, именно он submit-ит URB.


Сам недавно столкнулся с этой проблемой используя libusb.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 25th June 2025 - 17:39
Рейтинг@Mail.ru


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