av-master 0 14 октября, 2009 Опубликовано 14 октября, 2009 · Жалоба Доброго времени суток товарищи. Вопрос такого плана. как работать с USB/ т.е где почитать просам принцип. воткнули разьем. что должно происходить? т.е. что меня спросит хост? или что мне ему сказать? в какой момент времени...? нужно ли постоянно просматривать буфер или по прерыванию работает? вообщем азы. вот с как с ком портом например: воткнул передал. забыл )) Если кому не трудно. опишите процесс. заранее благодарен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 14 октября, 2009 Опубликовано 14 октября, 2009 · Жалоба Лучше RTFM в оригинале. Без сказок и пересказов. Брать там -> www.usb.org Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 14 октября, 2009 Опубликовано 14 октября, 2009 · Жалоба Добавалю только, что когда-то давно работа с USB была хорошо и доходчиво расписана в доках на контроллеры фирмы Cypress. Можно начать с них, а затем плавно перейти к изучению родной документации. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
av-master 0 14 октября, 2009 Опубликовано 14 октября, 2009 · Жалоба спасибо . а на русском нигде ничего? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 14 октября, 2009 Опубликовано 14 октября, 2009 · Жалоба На русском разве что довольно сомнительной полезности книжка Агурова. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Xenia 45 15 октября, 2009 Опубликовано 15 октября, 2009 · Жалоба Хуже, чем описание работы USB, ничего на свете нету :). Купила обе книги Агурова - "Интерфейс USB" и "Практика программирования USB", пыталась это читать. Но разве это читать можно? :) Жуть сплошная. Чем дальше читаешь, тем непонятнее становиться :). А когда дошла до описания протоколов и форматов структур, мне и вовсе поплохело :). Поэтому я пошла другим путем, близким к тому, что рекомендовал здесь aaarrr - взяла документацию на свой "родной" AT90USB647 (это МК архитектуры AVR со встроенным USB) и принялась разбираться в демонстрационной программе USB-COM конвертора, попутно разбираясь в назначениях USB-регистров по даташиту. Через некоторое время я сократила эту программу от всего того, что мне не было нужно (например от HOST-режима, обслуживания других задач и пр.), оставив три функции: 1) инициализацию USB, т.е. те действия, которые необходимо провести всего однажды, чтобы USB заработало. 2) функцию отправления байта по USB (тут на самом деле они сначала кладутся в буфер, а отправляются группой) и 3) функцию, которая вызывается по прерыванию, когда по USB приходит передача. Вообще-то ничего кроме этого мне не было нужно. Помимо этих необходимых мне функций пришлось оставить механизм обработки USB-прерываний, в котором приходится отвечать на всякие каверзные запросы хоста, т.к. без этого с моим USB-устройством никто бы не захотел разговаривать. В процессе такого разбирательства мне неоднократно приходилось обращаться к книге Агурова "Практика программирования USB", но лишь затем, чтобы выяснить назначения тех или иных констант, записанных в структурах, которые передаются в ответ на запросы. Т.е. тут я уже дошла до того, что некоторые поля подправила под себя - увеличила длину буфера на передачу, убрала "лишнюю" endpoint, запросила больше тока питания, придумала своему устройству красивое имя и т.п. После всего этого сотворила двойную (или уже тройную?) буферизацию, организовав кольцевой буфер размером 256 байт в памяти, откуда данные отсылаются по USB-прерываниям. Тут дело в том, что USB мне нужно, чтобы отсылать данные от "говорливых" АЦП. И здесь у меня нет времени, чтобы ждать, когда USB отправит данные. А я просто кидаю байты в свой буфер, не заботясь об их отправке, а "голодные" прерывания от USB сами черпают из буфера, если там еще что-то неотправленное осталось. После этого моя программа перестала быть понятной другим :), зато оставалась понятна мне. И вот, странное дело! - Открываю я снова книги Агурова, читаю и вдруг обнаруживаю, что всё (или почти всё) мне в ней стало понятно :). Такова участь большинства инструкций, которые обладают хитрой особенностью сохранять непонятность тогда, когда мы остро нуждаемся в понимании, и быть абсолютно ясными, когда понимание уже за плечами. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mustelus 0 11 ноября, 2009 Опубликовано 11 ноября, 2009 · Жалоба Госпада, вот просвятите, есть куча примеров реализации USB на микроконтролеры PIC... Но все почемуто реализованы стандартным CDC класом и, используються как виртуальный COM на хосте.... Так вот вопрос: А ВСТРЕЧАЛ КТО В НЕТЕ ПРИМЕР НАСТОЯЩЕГО USB КАК USB (именно на PIC), так что б драйверок свой нужно было склепать на хост, свое приложенице (т.е. что б действительно ето был USB а ни чeрти какой COM).... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 11 ноября, 2009 Опубликовано 11 ноября, 2009 · Жалоба Просто отломайте от примера CDC-часть, в чем проблема? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
manul78 4 11 ноября, 2009 Опубликовано 11 ноября, 2009 · Жалоба Так вот вопрос: А ВСТРЕЧАЛ КТО В НЕТЕ ПРИМЕР НАСТОЯЩЕГО USB КАК USB (именно на PIC), так что б драйверок свой нужно было склепать на хост, свое приложенице (т.е. что б действительно ето был USB а ни чeрти какой COM).... А что свет клином сошелся именно на PIC ? Берем AT90USB162 за 120 рупий. Берем даташит на атмеловский кит STK526 и на основе его схем "ваяем" более упрощен- ную модель... Монтируем всё это хозяйство на "нулевке" . И можно начинать. Прелесть атмеловских USB-контроллеров, что в них с завода зашит бутлоадер который позволяет программировать МК пря- мо через USB. Бесплатная программа FLIP. Правда до фьюз не добраться, но на первых порах хватит. Примеры + библиотеки с атмеловского сайта просты и понятны. Т.е. за 200-300 рублей можно начинать изучать USB без особых заморочек. Кстати Агурова, как ни ругают, но почитать тоже не помешает. :) P.S. Для начала рекомендую начать с HID, винда сама устройство определяет и драйвер стандартный. 60 кб/с для начала вполне достаточно... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BrotherRabbit 0 8 мая, 2010 Опубликовано 8 мая, 2010 · Жалоба Xenia, очень понравился твой методичный подход. Но расскажи поподробнее, как организован обмен данными со стороны хоста? Драйвер был тоже демонстрационный? А библиотеки какие использовала? :) У меня есть демо-firmware с HID устройством - мышью (макет для с8051 с usb фирмы SiLabs). Пока без надобности выкидывать ничего из прошивки не стану, просто направлю необходимые данные в буфер "мыши". Со стороны хоста-компа тогда нужно написать некое оконное приложение, выводящее данные, полученные от устройства. У мыши тип передачи interrupt, но для небольших объемов данных ( с тех же АЦП) это вполне приемлемо. Как сказал manul78, и драйвер стандартный, только бы научиться как его использовать. Ещё я нашел библиотеку libusb-win32.. Вообщем, приступаю к работе, надеясь на Вашу поддержку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Student Pupkin 0 11 мая, 2010 Опубликовано 11 мая, 2010 · Жалоба спасибо . а на русском нигде ничего? USB in a NutShell - путеводитель по стандарту USB off top: Аватар прикольный - работаете с PSoC Cypress? :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
domowoj 0 12 мая, 2010 Опубликовано 12 мая, 2010 · Жалоба Xenia молодец! И свои пять копеек usb_rus0.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 7 23 июня, 2010 Опубликовано 23 июня, 2010 · Жалоба Кстати. Какие бы VID / PID подделать, чтобы WinXP (и WinVista / Win7 хорошо б) самостоятельно установила драйвера на стандартный CDC ? Сейчас приходится пользователям ещё и inf - файл давать. Вроде б и нет таких, но вот тут активно рекламируется прошивка, к которой драйвер уже готов. http://microsin.ru/content/view/1178/44/ Попытка украсть оттуда идентификаторы VID_16C0/PID_05E1 результата не дала (вроде б и не надо больше ничего?..). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться