Danis 0 14 декабря, 2010 Опубликовано 14 декабря, 2010 · Жалоба Привет, спецы! Решил освоить 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 Мбит/с (аудио-, видеоустройства) Так как полученная скорость, маленькая или норма для этого проца? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kovigor 5 14 декабря, 2010 Опубликовано 14 декабря, 2010 · Жалоба Так как полученная скорость, маленькая или норма для этого проца? HID - не лучший выбор, если нужна скорость. Можете попробовать поиграться с интервалом между прерываниями в дескрипторе INT - конечной точки. Почти наверняка там стоит 10 мС. Поставьте поменьше. Ну и попробуйте максимально увеличить размер пакета для INT - конечной точки. P.S. Пишу Mass-Storage для AT91SAM9XE512 (тоже Full-Speed). Сделал на нем "флэшку" и замеряю скорость. На запись - ~608-616 КБайт в секунду. На чтение - ~396 - 400 КБайт в секунду. Беру фабричную флэшку. Чтение заметно шустрее, чем у меня. Зато запись - те же ~608-616 КБайт в секунду. Это много или мало ? Думаю, в случае с записью - почти хорошо. А вот чтение придется птимизировать ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
XGoblinX 0 14 декабря, 2010 Опубликовано 14 декабря, 2010 (изменено) · Жалоба 341333 byte, что примерно 2.7 Mbit. Так как полученная скорость, маленькая или норма для этого проца? Для hid самое то скорость. Хотя бы балк взял для оценки... Изменено 14 декабря, 2010 пользователем XGoblinX Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Fry__ 0 14 декабря, 2010 Опубликовано 14 декабря, 2010 · Жалоба Привет, спецы! Решил освоить 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 драйвер готовый в составе ОС. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Danis 0 14 декабря, 2010 Опубликовано 14 декабря, 2010 · Жалоба Что вы там намеряли? Для HID максимальная скорость 64000 байт за секунду. За один кадр (1mc) только одна транзакция - максимум 64 байта. Может Вы и правы. Намерил то что написано в первом посте, данные не с потолка. Для гарантии сохранности целостности данных в буфере я использовал проверку CRC32 на всякий случай, все сходиться и ошибок не было. Какой драйвер вы создали для ПК - для HID драйвер готовый в составе ОС. Я знаю что имеется, мне свой написать было нужно принципиально. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Fry__ 0 14 декабря, 2010 Опубликовано 14 декабря, 2010 · Жалоба Может Вы и правы. Намерил то что написано в первом посте, данные не с потолка. Для гарантии сохранности целостности данных в буфере я использовал проверку CRC32 на всякий случай, все сходиться и ошибок не было. Я знаю что имеется, мне свой написать было нужно принципиально. Ну если вы создали свой драйвер, то с устройства FULL SPEED реальная скорость должна быть не менее 800-900 kBps (килобайт за секунду). Более у меня не получалось. Только тогда при чем здесь HID. To kovigor. Фабричная Flash'а наверняка High Speed устройство. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kovigor 5 14 декабря, 2010 Опубликовано 14 декабря, 2010 · Жалоба Фабричная Flash'а наверняка High Speed устройство. Так и есть, но у меня порт FS, так что ей остается только работать на FS :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Danis 0 19 декабря, 2010 Опубликовано 19 декабря, 2010 · Жалоба Только тогда при чем здесь HID. Извиняюсь за задержку с ответом, все нет времени в форуме посидеть…. Я создал свой драйвер для HID, чтобы устройство могло не только в винде но и в linux работать. Если использовать готовый драйвер windows система покажет устройство просто как HID совместимое устройство, как на скриншоте ниже, без указания названия и изготовителя. Мне так не интересно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alex6441161 0 15 января, 2015 Опубликовано 15 января, 2015 · Жалоба Здравствуйте, помогите новичку, я делаю на диплом устройство которое связано по USB с компом. МК AT90USB162 может передавать на Full Speed, а на комп я так понимаю мне надо писать драйвер. подскажите где почитать про написание драйвера? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
A. Fig Lee 0 15 января, 2015 Опубликовано 15 января, 2015 · Жалоба Здравствуйте, помогите новичку, я делаю на диплом устройство которое связано по USB с компом. МК AT90USB162 может передавать на Full Speed, а на комп я так понимаю мне надо писать драйвер. подскажите где почитать про написание драйвера? Смотря как передавать. Если имплементация на AT90USB162 CDC compliant (по русски: если USB прикинется что он COM порт), то там такой уже есть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Xenia 35 15 января, 2015 Опубликовано 15 января, 2015 · Жалоба Здравствуйте, помогите новичку, я делаю на диплом устройство которое связано по 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться