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

 
 
> STM32F103. USB 2.0 full-speed?, Реальная скорость передачи через USB.
Danis
сообщение Dec 14 2010, 11:57
Сообщение #1


Twilight Zone
***

Группа: Свой
Сообщений: 454
Регистрация: 17-02-09
Из: Челябинск
Пользователь №: 44 990



Привет, спецы!

Решил освоить USB на STM32. Для начала взял пример из библиотеки STM32_USB-FS-Device_Lib_V3.2.1, а именно Custom_HID. Контроллер здесь работает в режиме устройства. Передел проект так чтобы контроллер посылал непрерывно буфер 256 byte в ПК, настолько быстро насколько это возможно, других ресурсоемких задач нет. Для ПК создал драйвер и начал замерять скорость обмена. Посчитал, что за секунду передается 341333 byte, что примерно 2.7 Mbit.

В pdf на STM32 написано:

USB main features
● USB specification version 2.0 full-speed compliant

а это как я понимаю 12 Мбит/с,

хотя точно не уверен, в Википедии написано Full-speed, 0,5—12 Мбит/с (аудио-, видеоустройства)

Так как полученная скорость, маленькая или норма для этого проца?


--------------------
Magic Friend
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 10)
kovigor
сообщение Dec 14 2010, 12:15
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Danis @ Dec 14 2010, 15:57) *
Так как полученная скорость, маленькая или норма для этого проца?


HID - не лучший выбор, если нужна скорость. Можете попробовать поиграться с интервалом между прерываниями в дескрипторе INT - конечной точки. Почти наверняка там стоит 10 мС. Поставьте поменьше. Ну и попробуйте максимально увеличить размер пакета для INT - конечной точки.
P.S. Пишу Mass-Storage для AT91SAM9XE512 (тоже Full-Speed). Сделал на нем "флэшку" и замеряю скорость. На запись - ~608-616 КБайт в секунду. На чтение - ~396 - 400 КБайт в секунду. Беру фабричную флэшку. Чтение заметно шустрее, чем у меня. Зато запись - те же ~608-616 КБайт в секунду. Это много или мало ? Думаю, в случае с записью - почти хорошо. А вот чтение придется птимизировать ...
Go to the top of the page
 
+Quote Post
XGoblinX
сообщение Dec 14 2010, 12:31
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 13-12-10
Пользователь №: 61 586



Цитата(Danis @ Dec 14 2010, 12:57) *
341333 byte, что примерно 2.7 Mbit.

Так как полученная скорость, маленькая или норма для этого проца?

Для hid самое то скорость. Хотя бы балк взял для оценки...

Сообщение отредактировал XGoblinX - Dec 14 2010, 12:31
Go to the top of the page
 
+Quote Post
Fry__
сообщение Dec 14 2010, 12:50
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 26-03-10
Пользователь №: 56 229



Цитата(Danis @ Dec 14 2010, 15:57) *
Привет, спецы!

Решил освоить USB на STM32. Для начала взял пример из библиотеки STM32_USB-FS-Device_Lib_V3.2.1, а именно Custom_HID. Контроллер здесь работает в режиме устройства. Передел проект так чтобы контроллер посылал непрерывно буфер 256 byte в ПК, настолько быстро насколько это возможно, других ресурсоемких задач нет. Для ПК создал драйвер и начал замерять скорость обмена. Посчитал, что за секунду передается 341333 byte, что примерно 2.7 Mbit.

В pdf на STM32 написано:

USB main features
● USB specification version 2.0 full-speed compliant

а это как я понимаю 12 Мбит/с,

хотя точно не уверен, в Википедии написано Full-speed, 0,5—12 Мбит/с (аудио-, видеоустройства)

Так как полученная скорость, маленькая или норма для этого проца?


Что вы там намеряли? Для HID максимальная скорость 64000 байт за секунду. За один кадр (1mc) только одна транзакция - максимум 64 байта. Какой драйвер вы создали для ПК - для HID драйвер готовый в составе ОС.



Go to the top of the page
 
+Quote Post
Danis
сообщение Dec 14 2010, 13:56
Сообщение #5


Twilight Zone
***

Группа: Свой
Сообщений: 454
Регистрация: 17-02-09
Из: Челябинск
Пользователь №: 44 990



Цитата(Fry__ @ Dec 14 2010, 15:50) *
Что вы там намеряли? Для HID максимальная скорость 64000 байт за секунду. За один кадр (1mc) только одна транзакция - максимум 64 байта.


Может Вы и правы.
Намерил то что написано в первом посте, данные не с потолка.
Для гарантии сохранности целостности данных в буфере я использовал проверку CRC32 на всякий случай, все сходиться и ошибок не было.


Цитата(Fry__ @ Dec 14 2010, 15:50) *
Какой драйвер вы создали для ПК - для HID драйвер готовый в составе ОС.


Я знаю что имеется, мне свой написать было нужно принципиально.


--------------------
Magic Friend
Go to the top of the page
 
+Quote Post
Fry__
сообщение Dec 14 2010, 14:53
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 26-03-10
Пользователь №: 56 229



Цитата(Danis @ Dec 14 2010, 17:56) *
Может Вы и правы.
Намерил то что написано в первом посте, данные не с потолка.
Для гарантии сохранности целостности данных в буфере я использовал проверку CRC32 на всякий случай, все сходиться и ошибок не было.
Я знаю что имеется, мне свой написать было нужно принципиально.


Ну если вы создали свой драйвер, то с устройства FULL SPEED реальная скорость должна быть не менее 800-900 kBps (килобайт за секунду). Более у меня не получалось. Только тогда при чем здесь HID.

To kovigor. Фабричная Flash'а наверняка High Speed устройство.
Go to the top of the page
 
+Quote Post
kovigor
сообщение Dec 14 2010, 15:59
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Fry__ @ Dec 14 2010, 18:53) *
Фабричная Flash'а наверняка High Speed устройство.


Так и есть, но у меня порт FS, так что ей остается только работать на FS sm.gif
Go to the top of the page
 
+Quote Post
Danis
сообщение Dec 19 2010, 13:06
Сообщение #8


Twilight Zone
***

Группа: Свой
Сообщений: 454
Регистрация: 17-02-09
Из: Челябинск
Пользователь №: 44 990



Цитата(Fry__ @ Dec 14 2010, 21:53) *
Только тогда при чем здесь HID.


Извиняюсь за задержку с ответом, все нет времени в форуме посидеть….
Я создал свой драйвер для HID, чтобы устройство могло не только в винде но и в linux работать. Если использовать готовый драйвер windows система покажет устройство просто как HID совместимое устройство, как на скриншоте ниже, без указания названия и изготовителя. Мне так не интересно.


Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Magic Friend
Go to the top of the page
 
+Quote Post
alex6441161
сообщение Jan 15 2015, 16:50
Сообщение #9





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



Здравствуйте, помогите новичку, я делаю на диплом устройство которое связано по USB с компом. МК AT90USB162 может передавать на Full Speed, а на комп я так понимаю мне надо писать драйвер. подскажите где почитать про написание драйвера?
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Jan 15 2015, 17:36
Сообщение #10


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Цитата(alex6441161 @ Jan 15 2015, 11:50) *
Здравствуйте, помогите новичку, я делаю на диплом устройство которое связано по USB с компом. МК AT90USB162 может передавать на Full Speed, а на комп я так понимаю мне надо писать драйвер. подскажите где почитать про написание драйвера?


Смотря как передавать. Если имплементация на AT90USB162 CDC compliant (по русски: если USB прикинется что он COM порт), то там такой уже есть.


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
Xenia
сообщение Jan 15 2015, 17:45
Сообщение #11


Гуру
******

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



Цитата(alex6441161 @ Jan 15 2015, 19:50) *
Здравствуйте, помогите новичку, я делаю на диплом устройство которое связано по USB с компом. МК AT90USB162 может передавать на Full Speed, а на комп я так понимаю мне надо писать драйвер. подскажите где почитать про написание драйвера?


Драйвер писать не надо - если это CDC, то подходит стандартный "usbser.sys", но inf-файл нужно приложить, чтобы комп знал, что для вашего устройства именно usbser.sys годится, а не какой-то другой.

Обычно берешь inf-файл от какого-то другого CDC-устройства (лучше для Атмеловского) и переправляешь в нем VID и PID на свои (этот файл текстовый). Или при программировании AT90USB162 уставливаешь ему такие VID и PID, какие указаны в чужом inf-файле.

А еще лучше взять inf-файл от демки самого AT90USB162 - из архива at90usb162-cdc-1_0_1.zip , т.к. он именно usbser.sys использует. Но только он устарел маленько (2007 год), а потому для Win7 и Win8, возможно, не годится.

P.S. Если оно только ради диплома надо, то можно не горбатиться, а взять целиком пример из at90usb162-cdc-1_0_1.zip , таким, каков он есть, дописав к нему передачу ваших данных. Стандартно тот код всё, что принимает от UART, передает в USB. А то что принимает от USB, передает в UART. Т.е. работает, как USB/COM-конвертер. Разорвать эту цепь очень просто, если UART вам не нужен.

P.P.S. В свежем "Atmel Software Framework (ASF)" версии 3.21.0 (08.01.2015) есть универсальный USB-драйвер для всех атмеловских примеров:
"Windows 2000, XP, Vista, 7 and 8 (x32 and x64) setup file for Atmel CDC Devices" - этот для всех версий Windows подойдет.
Выкладываю только inf-файл, т.к. здесь по-прежнему используется драйвер usbser.sys из дистрибутива Windows. Перед использованием распаковать из rar-архива.
Прикрепленные файлы
Прикрепленный файл  atmel_devices_cdc.inf.rar ( 1.41 килобайт ) Кол-во скачиваний: 16
 
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 09:36
Рейтинг@Mail.ru


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