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

 
 
 
Reply to this topicStart new topic
> Скорость USB
thamjell
сообщение Mar 13 2015, 15:27
Сообщение #1


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

Группа: Участник
Сообщений: 110
Регистрация: 23-06-14
Пользователь №: 82 030



Здравствуйте! Собрал USB-хаб на TUSB2046B, руководствуясь схемой и советами из даташита (http://www.ti.com/lit/ds/slls413i/slls413i.pdf). Хаб, запитываемый от блока питания. После сборки подключил к компьютеру, хаб определился, подключил флешку - тоже всё определил. Однако при копировании с флешки скорость передачи недостигала и мегабайта в секунду, обычно. Хотя бывало и больше, моментами. Но больше всего беспокоит то, что передача иногда просто останавливается, на время. Посоветуйте, в чём может быть причина?
P.S. возможно дело в напряжении питания микросхемы - там 3,08-3,1 вольта, вместо рекомендуемого 3,3. И я не поставил супрессоры для портов downstream (но, как мне кажется, это отношения к скорости не имеет).
Go to the top of the page
 
+Quote Post
=AK=
сообщение Mar 13 2015, 23:59
Сообщение #2


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Цитата(thamjell @ Mar 14 2015, 01:57) *
скорость передачи недостигала и мегабайта в секунду

Непонятно, чего еще вы ждете от full speed устройства. Бодовая скорость 12 Mbps, минус накладные расходы, как раз и получится примерно мегабайт.

Можно точнее посчитать. В балке можно передать до 19 чанков за фрейм. В чанке 64 байта, фреймы повторяются раз в миллисекунду. 19*64 = 1216 байт за миллисекунду, или 1.216 мегабайт в секунду. Это предел для фулл спид, больше не получите. А если флешка долго жует сопли, или есть битые чанки и перезапросы (скажем, из-за паршивого китайского кабеля), то получите меньше.
Go to the top of the page
 
+Quote Post
dsp_counter
сообщение Jan 27 2016, 11:41
Сообщение #3


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

Группа: Участник
Сообщений: 82
Регистрация: 27-08-05
Пользователь №: 8 009



Тема прямо по моей теме, поэтому не буду создавать новую.

Пытаемся осваивать USB вместо старого, проверенного RS-232. Повелись на крутые МегаБоды в режиме FullSpeed.

На сегодня есть устройство с FT245RL. Подключили к компьютеру.

Вопрос:
Если все команды к устройству имеют размер 1 байт, и ответы от устройства то же 1 байт, сколько команд/ответов можно прогнать за секунду?
Go to the top of the page
 
+Quote Post
gerber
сообщение Jan 27 2016, 11:53
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088



Цитата(dsp_counter @ Jan 27 2016, 14:41) *
Вопрос:
Если все команды к устройству имеют размер 1 байт, и ответы от устройства то же 1 байт, сколько команд/ответов можно прогнать за секунду?

Максимум 500 циклов за секунду, если ни устройство, ни компьютер не будут тормозить лишнего, что в реальности далеко не так, особенно со стороны компа с многозадачной системой.


--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
Go to the top of the page
 
+Quote Post
dsp_counter
сообщение Jan 27 2016, 12:10
Сообщение #5


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

Группа: Участник
Сообщений: 82
Регистрация: 27-08-05
Пользователь №: 8 009



Мы вышли примерно на 200 циклов. УЖАС!!!
А нельзя эту волшебную константу (= 1 миллисекунда) уменьшить раз в 10?
Go to the top of the page
 
+Quote Post
=AK=
сообщение Jan 27 2016, 12:12
Сообщение #6


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Цитата(dsp_counter @ Jan 27 2016, 22:11) *
Если все команды к устройству имеют размер 1 байт, и ответы от устройства то же 1 байт, сколько команд/ответов можно прогнать за секунду?

Зависит от многих привходящих факторов. Расчитывайте на то, что в лучшем случае одна транзакция займет 1-2 мс, или больше. Значит, команда 1-2 мс, ответ 1-2 мс. А если команды задаются из-под Виндовс, то может быть намного дольше, порядка 20-50 мс.

Поэтому никто по одному байту по USB не гоняет. Заполнили буфер и переслали несколько сотен байт, типично это тоже улетит за 1-2 мс.
Go to the top of the page
 
+Quote Post
dsp_counter
сообщение Jan 27 2016, 12:25
Сообщение #7


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

Группа: Участник
Сообщений: 82
Регистрация: 27-08-05
Пользователь №: 8 009



Цитата(=AK= @ Jan 27 2016, 18:12) *
......в лучшем случае одна транзакция займет 1-2 мс .....


Можно ли повлиять на эту константу?
Go to the top of the page
 
+Quote Post
=AK=
сообщение Jan 27 2016, 12:44
Сообщение #8


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Цитата(dsp_counter @ Jan 27 2016, 22:55) *
Можно ли повлиять на эту константу?

В Full Speed фреймы идут с периодом 1 мс, в High Speed - с периодом 125 мкс.

Может ли хост обработать более одной транзакции за фрейм? Теоретически может, особенно для высокоприоритетных пайпов. Можно попробовать Control pipe, вдруг прокатит. Однако это зависит от того, как сделан хост, прежде всего - как сделан его программный стек.

На практике вы наверняка не будете ковыряться с низкоуровневыми драйверами, вроде WinUSB, которые позволили бы работать через Control pipe. Возьмете стадартный виртуальный COM порт, т.е. драйвер класса CDC, а он гоняет данные через Bulk pipe. И получите одну транзакцию за 1-2 фрейма. Плюс к этому вместе со стандартным Микрософтовским CDC драйвером получите присущие ему уже много лет баги, а именно: баг в реализации кольцевого буфера 8 Кбайт и баг полной потери виртуального ком порта из-за помех и глюков Винды (случается нечасто, раз в несколько дней, зато ничем не лечится, только передергиванием USB кабеля).
Go to the top of the page
 
+Quote Post
dsp_counter
сообщение Jan 27 2016, 12:51
Сообщение #9


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

Группа: Участник
Сообщений: 82
Регистрация: 27-08-05
Пользователь №: 8 009



Цитата(=AK= @ Jan 27 2016, 18:44) *
... Control pipe, .... низкоуровневыми драйверами, .. WinUSB, ... Control pipe. ... Bulk pipe... транзакцию за 1-2 фрейма. ... CDC драйвером ....баги...


help.gif

Уважаемый =АК=, понял, что надо перейти на High Speed. А заменой чипа это получится?

Сообщение отредактировал dsp_counter - Jan 27 2016, 12:52
Go to the top of the page
 
+Quote Post
=AK=
сообщение Jan 27 2016, 12:54
Сообщение #10


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Цитата(dsp_counter @ Jan 27 2016, 23:21) *
перейти на High Speed. А заменой чипа это получится?

Поищите, я давно не смотрел новые чипы. Микроконтроллеры уже давно есть, которые могут на High Speed работать. Я думаю, и бриджи должны уже быть в продаже. Попробуйте FTDI покопать. У них, кстати, драйверы виртуального COM порта свои, не такие глюкавые, как у Микрософта.
Go to the top of the page
 
+Quote Post
dsp_counter
сообщение Jan 27 2016, 13:00
Сообщение #11


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

Группа: Участник
Сообщений: 82
Регистрация: 27-08-05
Пользователь №: 8 009



Спасибо. Покопаем.
Go to the top of the page
 
+Quote Post
k155la3
сообщение Jan 28 2016, 15:38
Сообщение #12


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

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(dsp_counter @ Jan 27 2016, 17:00) *
Спасибо. Покопаем.


год назад выбирал себе.
В пределах доступности оказался Cypress CY7C68013 ( параллельный fifo 8/16 мост в USB2.0 HS - 480Мбит/с)
Закачивать данные в него можно до 24 Mhz.
Юзаю и сейча - работает хорошо.
Настраиваемый, удобно стыкуется с CPLD/FPGA.

psps - более универсальное решение есть у FTDI - FT2232D (H)

Сообщение отредактировал k155la3 - Jan 28 2016, 15:41
Go to the top of the page
 
+Quote Post

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

 


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


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