|
Посоветуйте по изучению USB, каким путём лучше идти |
|
|
|
Feb 5 2013, 08:12
|
Частый гость
 
Группа: Участник
Сообщений: 90
Регистрация: 7-10-11
Из: Москва
Пользователь №: 67 593

|
Всем ДВС! Хотел бы спросить у уважаемого сообщества совета по изучению USB, так сказать чтобы указали направление, а дальше сам. Сейчас на столе лежит некое устройство, скажем, телеметрии. Оно должно собирать инфо с сенсоров в кучу и отправлять всё это дело в ПК + возможность настройки устройства через оболочку на ПК. В связи с тем, что стандартного HID класса ввиду ограниченности размера посылки может не хватить, хочу забацать свой собственный. И вот тут начинаются вопросы и трудности. Сам я после чтения Агурова и ресурсов, посвященных сабжу, изучения библ от STM более-менее разобрался и как я понял главное это правильный дескриптор и настройка ендпоинтов. Как я понял, для моих задач потребуется тип передачи interrupt, 4 ендпоинта (EP0, control EP, TxEP, RxEP), т.е. концепция более-менее понятна. В какую сторону дальше копать и какой контроллер лучше взять для того, чтобы пощупать работу USB? Правильно ли я понимаю, что потребуется custom class? Сейчас имеется stm32f417, но судя по многочисленным обсуждениям его движок USB очень тяжёл для начала. Делать USB-COM не хочу принципиально  Что посоветуете, опытные гуру?
|
|
|
|
|
Feb 5 2013, 08:52
|
Гуру
     
Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295

|
Цитата(NaughtyFreak @ Feb 5 2013, 12:12)  Что посоветуете, опытные гуру? Каков объем данных в секунду ? Если объем невелик, то достаточно FS, HS не нужна. Если хватит FS, то не нужен и STM. Возьмите NXP или ATMEL, они гораздо проще, и документация к ним гораздо удачнее, а примеры вполне разбираемы даже для тех, кто раньше с USB не работал. Нужна ли высокая надежность ? Если нужна, откажитесь от USB, это будет постоянный источник проблем. Свой класс, наверное, не стоит изобретать. Кстати, можно реализовать тот же Mass-storage, и обращаться к дивайсу как к обычному диску. То-то ваши программисты обрадуются . P.S. Агурова не читайте, там вагон ошибок, самого разного калибра. Почитайте лучше Гука "Шины PCI, USB и FireWire" (например; а вообще у него нет книг, которые не стоило бы прочесть): http://rutracker.org/forum/viewtopic.php?t=2466185
|
|
|
|
|
Feb 5 2013, 09:02
|

Гуру
     
Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287

|
Цитата(NaughtyFreak @ Feb 5 2013, 10:12)  Всем ДВС! Двигатель Внутреннего Сгорания? И Вам того же. Цитата Что посоветуете, опытные гуру? Бежать от USB, как от чумы. Если имеется хоть единственная альтернатива.
|
|
|
|
|
Feb 5 2013, 09:30
|
Частый гость
 
Группа: Свой
Сообщений: 118
Регистрация: 9-12-12
Из: Курск
Пользователь №: 74 767

|
Если Вы хотите копать USB то вот этот вариант наилучший.
Сообщение отредактировал telix - Feb 5 2013, 10:28
--------------------
улыбаемся ...
|
|
|
|
|
Feb 5 2013, 09:47
|

Гуру
     
Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514

|
Цитата(telix @ Feb 5 2013, 13:30)  или их же драйвер, совсем необязательно. LibUsb прекрасно справляется (конечно, если не использовать загрузку прошивки при включении по USB) Кстати, в последней редакции есть подписи под Win7 x64, что есть плюс Цитата(telix @ Feb 5 2013, 13:30)  Для Вас, если важно что то свое наваять, не вникая в железо, а только софт, то вот этот вариант наилучший. LibUsb отлично встраивается, а библиотеки практически под все популярные среды программирования есть. А для CDC можно и свой inf под usbser сделать
|
|
|
|
|
Feb 5 2013, 09:52
|
Частый гость
 
Группа: Участник
Сообщений: 90
Регистрация: 7-10-11
Из: Москва
Пользователь №: 67 593

|
Цитата(Herz @ Feb 5 2013, 13:02)  Двигатель Внутреннего Сгорания? И Вам того же. Я тоже кружок шутки юмора на досуге посещаю. ДВС = "Доброго Времени Суток" Цитата(Herz @ Feb 5 2013, 13:02)  Бежать от USB, как от чумы. Если имеется хоть единственная альтернатива. Обоснуйте?.. Объём невелик, FS хватит за глаза. Я почему-то так и думал что всё сведется к Atmel/NXP. Ок, спасибо за наводочку, скорее всего NXP. Сразу вопрос: какой? Я их ранее никогда в руках не держал. Простенького Cortex-M3 хватит (LPC17xx)? Я сам себе прогаммер, поэтому радоваться буду сам  Цель изучения скорее самообразование на переспективу владения и умения. На Cypress тоже смотрел, но пока дальше чтения сайта не углублялся. Откровенно говоря вещь не самая массовая, поэтому больше склоняюсь к тому же Atmel/NXP/ST. С HID не очеень хочу заморачиваться, всё-таки склоняюсь к кастом-устройству + свой драйвер на Windows Driver Kit.
|
|
|
|
|
Feb 5 2013, 10:36
|

Местный
  
Группа: Свой
Сообщений: 327
Регистрация: 24-06-06
Из: Томск
Пользователь №: 18 328

|
Цитата(NaughtyFreak @ Feb 5 2013, 16:52)  В связи с тем, что стандартного HID класса ввиду ограниченности размера посылки может не хватить, хочу забацать свой собственный.
...
С HID не очеень хочу заморачиваться, всё-таки склоняюсь к кастом-устройству + свой драйвер на Windows Driver Kit. Вы думаете, что свое устройство+драйвер будет резко проще чем HID устройство? О какой ограниченности посылки вы говорите. HID-репорт может быть до 64кБ размером. И никто не мешает передавать данные в несколько приемов. Зато никаких головняков с драйверами.
|
|
|
|
|
Feb 5 2013, 10:52
|
Частый гость
 
Группа: Участник
Сообщений: 90
Регистрация: 7-10-11
Из: Москва
Пользователь №: 67 593

|
Цитата(shreck @ Feb 5 2013, 14:36)  Вы думаете, что свое устройство+драйвер будет резко проще чем HID устройство? О какой ограниченности посылки вы говорите. HID-репорт может быть до 64кБ размером. пока не думаю, пока изучаю  А разве не 64 байта?
|
|
|
|
|
Feb 5 2013, 11:15
|
Гуру
     
Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295

|
Цитата(NaughtyFreak @ Feb 5 2013, 13:52)  А разве не 64 байта? Нет, конечно. Я же говорю, Гука почитайте ... P.S. Не все так просто. Длинную посылку для FS придется передавать блоками по 64 байта: http://www.jungo.com/st/support/documentat...sfer_types.htmlВыдержка из этого документа: Цитата "3.6.3 Interrupt Transfer Interrupt Transfer is intended for devices that send and receive small amounts of data infrequently or in an asynchronous time frame. This transfer type can be used for low-, full- and high-speed devices. Interrupt transfer type guarantees a maximum service period and that delivery will be re-attempted in the next period if there is an error on the bus. The interrupt pipe, like the isochronous pipe, is unidirectional and periodical. The maximum packet size for interrupt endpoints can be 8 bytes or less for low-speed devices; 64 bytes or less for full-speed devices; and 1,024 bytes or less for high-speed devices."
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|