Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Скорость USB
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Интерфейсы
thamjell
Здравствуйте! Собрал USB-хаб на TUSB2046B, руководствуясь схемой и советами из даташита (http://www.ti.com/lit/ds/slls413i/slls413i.pdf). Хаб, запитываемый от блока питания. После сборки подключил к компьютеру, хаб определился, подключил флешку - тоже всё определил. Однако при копировании с флешки скорость передачи недостигала и мегабайта в секунду, обычно. Хотя бывало и больше, моментами. Но больше всего беспокоит то, что передача иногда просто останавливается, на время. Посоветуйте, в чём может быть причина?
P.S. возможно дело в напряжении питания микросхемы - там 3,08-3,1 вольта, вместо рекомендуемого 3,3. И я не поставил супрессоры для портов downstream (но, как мне кажется, это отношения к скорости не имеет).
=AK=
Цитата(thamjell @ Mar 14 2015, 01:57) *
скорость передачи недостигала и мегабайта в секунду

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

Можно точнее посчитать. В балке можно передать до 19 чанков за фрейм. В чанке 64 байта, фреймы повторяются раз в миллисекунду. 19*64 = 1216 байт за миллисекунду, или 1.216 мегабайт в секунду. Это предел для фулл спид, больше не получите. А если флешка долго жует сопли, или есть битые чанки и перезапросы (скажем, из-за паршивого китайского кабеля), то получите меньше.
dsp_counter
Тема прямо по моей теме, поэтому не буду создавать новую.

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

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

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

Максимум 500 циклов за секунду, если ни устройство, ни компьютер не будут тормозить лишнего, что в реальности далеко не так, особенно со стороны компа с многозадачной системой.
dsp_counter
Мы вышли примерно на 200 циклов. УЖАС!!!
А нельзя эту волшебную константу (= 1 миллисекунда) уменьшить раз в 10?
=AK=
Цитата(dsp_counter @ Jan 27 2016, 22:11) *
Если все команды к устройству имеют размер 1 байт, и ответы от устройства то же 1 байт, сколько команд/ответов можно прогнать за секунду?

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

Поэтому никто по одному байту по USB не гоняет. Заполнили буфер и переслали несколько сотен байт, типично это тоже улетит за 1-2 мс.
dsp_counter
Цитата(=AK= @ Jan 27 2016, 18:12) *
......в лучшем случае одна транзакция займет 1-2 мс .....


Можно ли повлиять на эту константу?
=AK=
Цитата(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 кабеля).
dsp_counter
Цитата(=AK= @ Jan 27 2016, 18:44) *
... Control pipe, .... низкоуровневыми драйверами, .. WinUSB, ... Control pipe. ... Bulk pipe... транзакцию за 1-2 фрейма. ... CDC драйвером ....баги...


help.gif

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

Поищите, я давно не смотрел новые чипы. Микроконтроллеры уже давно есть, которые могут на High Speed работать. Я думаю, и бриджи должны уже быть в продаже. Попробуйте FTDI покопать. У них, кстати, драйверы виртуального COM порта свои, не такие глюкавые, как у Микрософта.
dsp_counter
Спасибо. Покопаем.
k155la3
Цитата(dsp_counter @ Jan 27 2016, 17:00) *
Спасибо. Покопаем.


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

psps - более универсальное решение есть у FTDI - FT2232D (H)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.