Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Определение USB устройства
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > RS232/LPT/USB/PCMCIA/FireWire
Kruftin
Подскажите что должно быть выполнено со стороны устройства slave usb для того, чтобы данное устройство было определено ПК(какое должно быть состояние сигналов)? Т.е. есть устройство slave usb и его надо протестировать(записать, прочитать из него), какие программы для этого необходимы?
Ну или чем можно послать данные по определенному порту, если устройство usb slave не отобразилось.
Alex11
Процесс называется энумерация. При этом должно выполниться очень много чего, согласно USB протокола. Тут нельзя говорить про состояние сигналов. Сигналы - это самое начало процесса. Нужно подтянуть D+ или D- к 3.3 В (+ для full speed, - для low speed). Если устройство не подключено, то на него ничего нельзя послать. Если подключилось - то нужен в общем случае для начала драйвер. Если устройство стандартного класса - то драйвер уже есть в системе. Какая программа с ним будет общаться, зависит от класса устройства. Так что ответа в общем виде не существует. Рассказывайте подробнее.
Kruftin
Ну а например с процессора с поддержкой usb можно сэмулировать флэшку, дескриптор который вычитал программой мониторинга usb порта?
Konst_777
Цитата(Kruftin @ Jul 16 2012, 20:37) *
Ну а например с процессора с поддержкой usb можно сэмулировать флэшку, дескриптор который вычитал программой мониторинга usb порта?

Можно. Но нужно прочитать следующие книги:
П. Агуров "Интерфейс USB. Практика использования и программирования" 2004 г.
П. Агуров "Практика программирования USB" 2006 г.
Jan Axelson "USB Complete. The Developer's Guide. Fourth Edition" 2009 г.
Jan Axelson "USB Mass Storage. Designing and Programming Devices and Embedded Hosts" 2006 г.

Kruftin
Спасибо! Почитаю, правда там что-то так много всего надо заполнять я гляжу. Ну и что будет если у меня проц с интерфейсом usb определится как флешка? При попытке записи я так понимаю usb выдаст ошибку доступа.
Xenia
Цитата(Kruftin @ Jul 16 2012, 21:37) *
Ну а например с процессора с поддержкой usb можно сэмулировать флэшку, дескриптор который вычитал программой мониторинга usb порта?


Конечно можно! Причем, именно так, как вы сами сказали - вычитать дискрипторы, которыми представляется оригинальная флешка.
Работа того же типа описана в интернете в отношении джейлбрейка для приставок PlayStation (PS3), чтобы в нелицензированные игры можно было играть. sm.gif. Там тоже подсмотрели протокол и сделали эмулятор.
Вы тоже можете, подсмотрев дискрипторы, сделать так, что ваше устройство будет опознаваться, как флешка или как любое другое USB-устройство, однако проблема в том, чтобы и далее своей роли соответствовать. А то назваться-то можно и груздем, но потом придется полезать в кузов sm.gif, когда комп начнет на псевдофлешку писать. sm.gif
Kruftin
Ну т.е. я просто беру вычитываю дескриптор и нужные мне данные любого устройства, которым хочу представиться для ПК, а затем просто посылаю их без всяких задержек через процессор на ПК и все должно быть гуд? Т.е. не начнет ли ПК что-нибудь посылать по поводу драйвера и т.п. инфы. Или лучше сначала взять флешку и поставить к ней драйвер, а потом уже подключать процессор с usb?
Xenia
Цитата(Kruftin @ Jul 17 2012, 22:40) *
Ну т.е. я просто беру вычитываю дескриптор и нужные мне данные любого устройства, которым хочу представиться для ПК, а затем просто посылаю их без всяких задержек через процессор на ПК и все должно быть гуд? Т.е. не начнет ли ПК что-нибудь посылать по поводу драйвера и т.п. инфы. Или лучше сначала взять флешку и поставить к ней драйвер, а потом уже подключать процессор с usb?


То, что "сначала сидело" в USB-гнезде никакой роли не играет. Новое устройство обязательно проходит свой процесс енумерации и привязки к соответствующему ему драйверу. Опять же для флешек, начиная с WinXP, отдельные драверы не практикуются - практически все флешки работают под управлением стандартного драйвера USBSTOR.SYS.
редактор
Цитата
а затем просто посылаю их без всяких задержек через процессор на ПК и все должно быть гуд?

Совсем НЕ ГУД. Каждому дескриптору свое время и строго по запросу от ПК.
Ноль с переносом
Вопрос к знатокам, может кто знает? Не по теме, но на всякий случай. Не люблю я новые темы создавать

Как под Windows скоростное устройство USB 2.0 заставить работать на медленной скорости как по USB 1.1 ?

Только, пожалуйста, не нужно доказывать, что мне это не надо. Ещё как надо, и надо всем: половина 3G модемов глючат из-за скоростного USB, а когда втыкаешь в медленный USB, работают нормально.

Заранее спасибо!
Konst_777
Цитата(Ноль с переносом @ Aug 3 2012, 12:24) *
...Как под Windows скоростное устройство USB 2.0 заставить работать на медленной скорости как по USB 1.1 ?...

Использовать внешний USB хаб, поддерживающий только USB 1.1
Xenia
Цитата(Konst_777 @ Aug 3 2012, 14:07) *
Использовать внешний USB хаб, поддерживающий только USB 1.1


Но ведь флешка-то на USB2.0 нормально работает в порту USB1.1 без всяких промежуточных хабов. Разве не так? sm.gif
Ноль с переносом
Всё так. Глючат только модемы. Хабы USB 1.1 уже не сохранились, не достанешь. Порты 1.1 тоже не в моде.

Говорят, на некоторых биосах можно выставить режим USB 1.1, но не у всех такие биосы. Поэтому нужен чисто программный способ.
Xenia
Цитата(Ноль с переносом @ Aug 4 2012, 09:46) *
Всё так. Глючат только модемы. Хабы USB 1.1 уже не сохранились, не достанешь. Порты 1.1 тоже не в моде.
Говорят, на некоторых биосах можно выставить режим USB 1.1, но не у всех такие биосы. Поэтому нужен чисто программный способ.


Что касается устройства, то любое из расчитанных на 2.0 может работать, как 1.1. Только частоту PLL оно у себя должно другую выставить и в дескрипторе, когда тот попросят, указать USB_SPECIFICATION не 0x200, а 0x110.

Плохо только то, что устройство не может знать, к какому порту его присоединили, потому что именно ему дают команду представиться, запросив посылку, где кроме PID/VID должно указать еще и USB_SPECIFICATION. Т.е. процедура такова, что компьютер должен подстраиваться к устройству, а не наоборот. При большом желании, конечно, можно рычажок или джампер поставить, по состоянию замкнутости которого МК будет активировать разные скорости USB, только вряд ли кто захочет этим делом заморачиваться.
Konst_777
Цитата(Ноль с переносом @ Aug 4 2012, 08:46) *
...Хабы USB 1.1 уже не сохранились, не достанешь.... Поэтому нужен чисто программный способ.

В Диспетчере устройств в ветке "Контроллеры USB" отключите "Стандартный расширенный PCI - USB хост-контроллер". После этого все USB порты компьютера будут поддерживать только протокол обмена USB 1.1, соответственно только скорости обмена Full Speed (12 Мбит/сек) и Low Speed (1.5 Мбит/сек).
dim3740
Здравствуйте! Рассчитываю на помощь, очень далекому от программирования. Мне нужно сделать свич - т.е. коммутировать флешку через туммлер между компом и синтезатором. Тумблер пробовал и на 4 группы переключающихся контактов, и на 2- только данные. Также с промежуточным положением. Надежность определения флешки компом порядка 50 % (синтом-99%). Кабель 1,5 м, толстый.... Тумблер, правда, не экранирован... Где копать? Типа резисторы на плюс? Причем, ели флешку ручками, то нормально, а с тумблера - сбоит.... Дребезг контактов? Порядок подключения, длина лемелей контактов....?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.