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

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
|
|
|
|
|
 |
Ответов
(1 - 10)
|
Dec 14 2010, 12:31
|
Участник

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

|
Цитата(Danis @ Dec 14 2010, 12:57)  341333 byte, что примерно 2.7 Mbit.
Так как полученная скорость, маленькая или норма для этого проца? Для hid самое то скорость. Хотя бы балк взял для оценки...
Сообщение отредактировал XGoblinX - Dec 14 2010, 12:31
|
|
|
|
|
Dec 14 2010, 12:50
|
Участник

Группа: Участник
Сообщений: 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 драйвер готовый в составе ОС.
|
|
|
|
|
Dec 14 2010, 13:56
|

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
|
|
|
|
|
Dec 14 2010, 14:53
|
Участник

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

|
Цитата(Danis @ Dec 14 2010, 17:56)  Может Вы и правы. Намерил то что написано в первом посте, данные не с потолка. Для гарантии сохранности целостности данных в буфере я использовал проверку CRC32 на всякий случай, все сходиться и ошибок не было. Я знаю что имеется, мне свой написать было нужно принципиально. Ну если вы создали свой драйвер, то с устройства FULL SPEED реальная скорость должна быть не менее 800-900 kBps (килобайт за секунду). Более у меня не получалось. Только тогда при чем здесь HID. To kovigor. Фабричная Flash'а наверняка High Speed устройство.
|
|
|
|
|
Dec 19 2010, 13:06
|

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

|
Цитата(Fry__ @ Dec 14 2010, 21:53)  Только тогда при чем здесь HID. Извиняюсь за задержку с ответом, все нет времени в форуме посидеть…. Я создал свой драйвер для HID, чтобы устройство могло не только в винде но и в linux работать. Если использовать готовый драйвер windows система покажет устройство просто как HID совместимое устройство, как на скриншоте ниже, без указания названия и изготовителя. Мне так не интересно.
Эскизы прикрепленных изображений
--------------------
Magic Friend
|
|
|
|
|
Jan 15 2015, 16:50
|
Группа: Участник
Сообщений: 9
Регистрация: 12-08-14
Пользователь №: 82 528

|
Здравствуйте, помогите новичку, я делаю на диплом устройство которое связано по USB с компом. МК AT90USB162 может передавать на Full Speed, а на комп я так понимаю мне надо писать драйвер. подскажите где почитать про написание драйвера?
|
|
|
|
|
Jan 15 2015, 17:45
|

Гуру
     
Группа: Модератор 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-архива.
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|