Перейти к содержанию
    

USB + новичек.

Доброго времени суток товарищи.

 

Вопрос такого плана. как работать с USB/

т.е где почитать просам принцип.

 

воткнули разьем. что должно происходить?

 

т.е. что меня спросит хост? или что мне ему сказать?

 

в какой момент времени...?

 

нужно ли постоянно просматривать буфер или по прерыванию работает?

 

вообщем азы.

 

вот с как с ком портом например: воткнул передал. забыл ))

Если кому не трудно. опишите процесс. заранее благодарен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добавалю только, что когда-то давно работа с USB была хорошо и доходчиво расписана в доках на контроллеры фирмы Cypress. Можно начать с них, а затем плавно перейти к изучению родной документации.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хуже, чем описание работы 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 сами черпают из буфера, если там еще что-то неотправленное осталось. После этого моя программа перестала быть понятной другим :), зато оставалась понятна мне.

 

И вот, странное дело! - Открываю я снова книги Агурова, читаю и вдруг обнаруживаю, что всё (или почти всё) мне в ней стало понятно :). Такова участь большинства инструкций, которые обладают хитрой особенностью сохранять непонятность тогда, когда мы остро нуждаемся в понимании, и быть абсолютно ясными, когда понимание уже за плечами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Госпада, вот просвятите, есть куча примеров реализации USB на микроконтролеры PIC... Но все почемуто реализованы стандартным CDC класом и, используються как виртуальный COM на хосте....

Так вот вопрос: А ВСТРЕЧАЛ КТО В НЕТЕ ПРИМЕР НАСТОЯЩЕГО USB КАК USB (именно на PIC), так что б драйверок свой нужно было склепать на хост, свое приложенице (т.е. что б действительно ето был USB а ни чeрти какой COM)....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так вот вопрос: А ВСТРЕЧАЛ КТО В НЕТЕ ПРИМЕР НАСТОЯЩЕГО USB КАК USB (именно на PIC), так что б драйверок свой нужно было склепать на хост, свое приложенице (т.е. что б действительно ето был USB а ни чeрти какой COM)....

 

А что свет клином сошелся именно на PIC ?

 

Берем AT90USB162 за 120 рупий. Берем даташит на атмеловский кит STK526 и на основе его схем "ваяем" более упрощен-

ную модель... Монтируем всё это хозяйство на "нулевке" . И можно начинать.

Прелесть атмеловских USB-контроллеров, что в них с завода зашит бутлоадер который позволяет программировать МК пря-

мо через USB. Бесплатная программа FLIP. Правда до фьюз не добраться, но на первых порах хватит.

Примеры + библиотеки с атмеловского сайта просты и понятны.

Т.е. за 200-300 рублей можно начинать изучать USB без особых заморочек. Кстати Агурова, как ни ругают, но почитать

тоже не помешает. :)

 

P.S. Для начала рекомендую начать с HID, винда сама устройство определяет и драйвер стандартный. 60 кб/с для начала

вполне достаточно...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Xenia, очень понравился твой методичный подход. Но расскажи поподробнее, как организован обмен данными со стороны хоста? Драйвер был тоже демонстрационный? А библиотеки какие использовала? :)

 

У меня есть демо-firmware с HID устройством - мышью (макет для с8051 с usb фирмы SiLabs).

Пока без надобности выкидывать ничего из прошивки не стану, просто направлю необходимые данные в буфер "мыши".

Со стороны хоста-компа тогда нужно написать некое оконное приложение, выводящее данные, полученные от устройства.

У мыши тип передачи interrupt, но для небольших объемов данных ( с тех же АЦП) это вполне приемлемо.

Как сказал manul78, и драйвер стандартный, только бы научиться как его использовать. Ещё я нашел библиотеку libusb-win32..

Вообщем, приступаю к работе, надеясь на Вашу поддержку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

спасибо . а на русском нигде ничего?

USB in a NutShell - путеводитель по стандарту USB

 

off top: Аватар прикольный - работаете с PSoC Cypress? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кстати.

Какие бы VID / PID подделать, чтобы WinXP (и WinVista / Win7 хорошо б) самостоятельно установила драйвера на стандартный CDC ?

 

Сейчас приходится пользователям ещё и inf - файл давать.

 

Вроде б и нет таких, но вот тут активно рекламируется прошивка, к которой драйвер уже готов.

http://microsin.ru/content/view/1178/44/

Попытка украсть оттуда идентификаторы VID_16C0/PID_05E1 результата не дала (вроде б и не надо больше ничего?..).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...