|
STM32f103 USB speed |
|
|
|
Jan 23 2014, 03:18
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 29-12-13
Из: St.Petersburg
Пользователь №: 79 852

|
Есть задача - передать поток данных от ADC через USB на комп. Два ADC генерируют по больше 20 мбит. Вопрос в том сколько может пропустить USB.
Правильно ли я понял что ограничения такие: 1 фрейм за 1 милисек за 1 фрейм можно передать один буфер из EndPoint. Максимальный размер буфера = 512 -0x18 (BTAB) - 2 * 0x40 (END0 buff) = ~ 350 байт
Т.е. максимальная скорость STM32 USB будет 3,5 мбайта?
--------------------
Скудность мысли порождает легионы единомышленников.
|
|
|
|
|
 |
Ответов
|
Jan 23 2014, 11:32
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
стандарт говорит The USB limits the maximum data payload size to 1,023 bytes for each full-speed isochronous endpoint. High-speed endpoints are allowed up to 1024-byte data payloads. A high speed, high bandwidth endpoint specifies whether it requires two or three transactions per microframe.
вот, дальше в стандарте таблички, и получается что для Full Speed, если пихаеш 1023 байта, то максимум 1 транзакция в кадр, который раз в миллисекунду. а вот если пихать по 64 байта, то можно сделать до 20 посылок во фрайм 128 байт - 10 посылок 256 байт - 5 посылок и получить скорость 1280 байт в кадр. вот так и получается 12 МБит обещанные в секунду.
для балка максимальный размер данных 64 байта, максимальное число посылок 19 и скорость 1216. Но как вам правильно сказали выше, хрен вы эти 19 запросов получите. Балк - это режим передачи при котором пакеты не должны теряться, потому если хост не готов их принять, он приостановит передачу, так же как и вы, если кончатся данные. и реальность будет ниже ожидаемых 19 запросов.
|
|
|
|
|
Jan 23 2014, 13:54
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 29-12-13
Из: St.Petersburg
Пользователь №: 79 852

|
Golikov A. Спасибо! Изохронный больше подойдет мне. Буду копать его реализацию в STM32.
--------------------
Скудность мысли порождает легионы единомышленников.
|
|
|
|
|
Jan 23 2014, 15:13
|
Группа: Новичок
Сообщений: 2
Регистрация: 23-01-14
Пользователь №: 80 174

|
Цитата(Utyff @ Jan 23 2014, 17:54)  Golikov A. Спасибо! Изохронный больше подойдет мне. Буду копать его реализацию в STM32. Столкнулся с такой же проблемой реализации USB изохронной передачи на STM32. Как то не понятно, как через 512 байтный буфер (где еще должны размещаться другие буферы эндпоинтов) передать 1023. Был бы благодарен если бы кто то вывалил пример кода в котором передавалось бы 1023 байта за Фрейм.
|
|
|
|
|
Jan 23 2014, 16:45
|

Профессионал
    
Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202

|
QUOTE (Rikoesev @ Jan 23 2014, 08:13)  Как то не понятно, как через 512 байтный буфер (где еще должны размещаться другие буферы эндпоинтов) передать 1023. Я с этим чипом не знаком близко, но если максимальный размер памяти под endopoint 512 байт, то никак. Это странное ограничение в современном мире, но встречается. Так что тут максимальная производительность будет с bulk и скорость - какая уж получится. QUOTE (Utyff @ Jan 23 2014, 02:42)  А можешь объяснить или дать ссылку - как сделать больше одного запроса за кадр? Это от хоста зависит. Самый простой способ ему намекнуть - просто запросить сразу много байт переслать. Я обычно запрашиваю 64кБ. QUOTE (Utyff @ Jan 23 2014, 02:42)  Мне нужна конкретная реализация на STM32F103 идеально если есть пример. C STM не работал, примеров нет. QUOTE (Utyff @ Jan 23 2014, 02:42)  Абстрактные ограничения протокола или драйверов Win это вторично если до этого дойдет. Дойдет сразу. Если вам тут сейчас дадут пример, то как вы его испытывать будете?
|
|
|
|
|
Jan 23 2014, 17:16
|
Знающий
   
Группа: Свой
Сообщений: 716
Регистрация: 27-05-05
Из: Kyiv
Пользователь №: 5 454

|
Цитата Я с этим чипом не знаком близко, но если максимальный размер памяти под endopoint 512 байт, то никак. Это странное ограничение в современном мире, но встречается. Прием синхронизируется по стартовым синхро-битам. При увеличении размера посылки растет вероятность рассинхронизации. По этому размер ограничен. В стандарте FULL устройств была максимально допустимая посылка 64 байта, для HIGH увеличили до 512. Для передачи больших данніх используют дробление на короткие посылки и двойную буферизауцию Цитата Так что тут максимальная производительность будет с bulk и скорость - какая уж получится. На FULL прокачивается 1 мегабайт. Только нужно качать "большим куском". Если если работать в режиме запрос/ответ то скорость значительно упадет. При прокачке программа зависает. Если нужно чтобы прграммма реагировала на управление, нужно или отдельную нить запускать или использовать OVERLAPPED метод обмена. Цитата Это от хоста зависит. Самый простой способ ему намекнуть - просто запросить сразу много байт переслать. Я обычно запрашиваю 64кБ. Я бы сказал от операционной системы. Хост все равно посылает/принимае пакеты не более 512 байт. Windows XP позволяет закачивать частями по 128кБайт Вот проект для SAM7 которым я изучал http://njnmnp.narod.ru/proj/usb_bulk_sam7/usb_bulk_sam7.htmlСейчас я пользуюсь libusb. Работает устойчиво, скорость я не измерял.
|
|
|
|
|
Jan 23 2014, 18:57
|

Профессионал
    
Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202

|
QUOTE (misyachniy @ Jan 23 2014, 10:16)  Для передачи больших данніх используют дробление на короткие посылки и двойную буферизауцию Для максимальной производительности на Iso нужен полный буффер на 1023 байта. Комментарий был про это ограничение. QUOTE (misyachniy @ Jan 23 2014, 10:16)  Сейчас я пользуюсь libusb.Работает устойчиво, скорость я не измерял. Опять-же на винде libusb не поддерживает изохронную передачу.
|
|
|
|
|
Jan 23 2014, 19:17
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
Цитата(Taradov Alexander @ Jan 23 2014, 22:57)  Для максимальной производительности на Iso нужен полный буффер на 1023 байта. Комментарий был про это ограничение. не соглашусь с вами. полный буфер 1023 байта, позволяет передавать только 1 микрофрайм согласно стандарту USB 2.0, в то время как 256 позволяет передать 5, 128 - 10, 64 - 20 микрофраймов. Отсюда скорость максимальной будет как раз на буферах 64-182-256. Даже буфер 512 позволяет передавать только 2 микрофрайма, больше 1023, но меньше 1280 что получается с меньшими буферами. Это согласно стандарта, про конкретную реализацию в процессоре не говорю
|
|
|
|
Сообщений в этой теме
Utyff STM32f103 USB speed Jan 23 2014, 03:18 Golikov A. Для устройств USB 2.0 регламентировано три режима ... Jan 23 2014, 05:16 Taradov Alexander QUOTE (Golikov A. @ Jan 22 2014, 22:16) п... Jan 23 2014, 07:34  Utyff Цитата(Taradov Alexander @ Jan 23 2014, 11... Jan 23 2014, 09:42   Golikov A. Цитата(Utyff @ Jan 23 2014, 13:42) А може... Jan 23 2014, 10:28    Utyff Цитата(Taradov Alexander @ Jan 23 2014, 11... Jan 23 2014, 10:52 Golikov A. вот потому максимум и будет в изохроне%
15*64 Кба... Jan 23 2014, 08:07 Taradov Alexander QUOTE (Golikov A. @ Jan 23 2014, 01:07) б... Jan 23 2014, 08:15   Utyff Цитата(Rikoesev @ Jan 23 2014, 19:13) Сто... Jan 23 2014, 16:56 Golikov A. Цитирую официальный документ
стандарт USB 2.0
The... Jan 23 2014, 22:12 Taradov Alexander QUOTE (Golikov A. @ Jan 23 2014, 15:12) Ц... Jan 23 2014, 22:29 Golikov A. таблица приведенная для FS, для HS идет таблица да... Jan 23 2014, 23:38 Taradov Alexander QUOTE (Golikov A. @ Jan 23 2014, 16:38) н... Jan 23 2014, 23:48 Golikov A. USB establishes a 1 millisecond time base called a... Jan 24 2014, 05:29 Taradov Alexander "(micro)frame" - это microframe в HS и f... Jan 24 2014, 07:47  Golikov A. Цитата(Taradov Alexander @ Jan 24 2014, 11... Jan 24 2014, 13:39   aaarrr Цитата(Golikov A. @ Jan 24 2014, 17:39) а... Jan 24 2014, 16:40 Rikoesev Фигня какая то получается. Тогда у STM32 нету реал... Jan 24 2014, 11:16 Taradov Alexander QUOTE (Rikoesev @ Jan 24 2014, 04:16) Фиг... Jan 24 2014, 17:07 Alex11 ЦитатаHS сам по себе содержит 8 микрокадров в кадр... Jan 24 2014, 11:44 aaarrr Цитата(Alex11 @ Jan 24 2014, 15:44) В win... Jan 24 2014, 13:04 Golikov A. тогда я ничего не понимаю окончательно
что такое
h... Jan 24 2014, 16:43 aaarrr Цитата(Golikov A. @ Jan 24 2014, 20:43) т... Jan 24 2014, 16:56  Golikov A. Цитата(aaarrr @ Jan 24 2014, 20:56) Есть,... Jan 24 2014, 18:45
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|