Полная версия этой страницы:
USB с чего начать
Alex_1811
Jun 23 2008, 20:18
Народ, может кто знает где найти доступную(с подробним описанием) литературу которая поможет
с освоением USB интерфейса.
В наличии есть плата с AT91SAM7S256 и желание разобраться

.
MiklPolikov
Jun 24 2008, 03:20
Цитата(Alex_1811 @ Jun 24 2008, 00:18)

Народ, может кто знает где найти доступную(с подробним описанием) литературу которая поможет
с освоением USB интерфейса.
В наличии есть плата с AT91SAM7S256 и желание разобраться

.
Книга "Практика программирования USB" Павел Агуров
А если речь идёт об обмене между ПК и Вашим устройством и большие скорости не нужны , вообще ни в чём разбиратся не нужно, так как есть микросхемы FTDI
Уриман
Jun 24 2008, 21:07
Для начала рекомендую: Агуров Интерфейс USB Практика использования и программирования
У меня есть в электронном виде + диск( martrob@yandex.ru )
Все излошено лучше, чем в спецификации...
Странно мне кажется книга не удачная. Информация разрознена. Куски кода где-то для делфи где-то для си. Хотя к спецификации не обращался. Но для начала наверно книга все таки пойдет. У меня плата AT91SAM7S64, в свобоодное от работы время тоже хочу освоить USB. Пока нахожусь на стадии освоения самого контроллера.
Alex_1811
Jun 25 2008, 06:44
Предлагаю сюда выкладывать свои нароботки, мысли, коментарии по поводу начальной инициализации
USB до обмена данными с ПК.
Тема я думаю актуальная и многим пригодится.
Информации по USB хватает но ничего конкретного и доступного для понимая я не нашел.
Да, по поводу разрозненности информации в книге, это точно. Но для того, чтобы хотябы понять как происходит обмен, она мне кажется пойдёт. Я делал девайс с USB, разбирался в начале по книге, потом смотрел в спецификации. Делал тоже на AT91SAM7. Можно посмотреть в примерах IAR и Keil. В IAR по моему без прерываний пример, а у Кейла есть пример с прерываниями.
altlogic
Jun 25 2008, 07:24
Работал с USB в своё время. Агуров хорош для начала, но спецификация конечно надёжней. Ещё есть замечательная книга на английском языке "USB System Architecture (USB 2.0).pdf"
evg123
Jun 25 2008, 08:57
Далее, чтобы не писать под Винду USB-драйвер собственноручно, берите готовый. WinDriver8.11 и выше найти можно. Я его пользовал. Вещь достойная.
aaarrr
Jun 25 2008, 09:07
Цитата(Alex_1811 @ Jun 25 2008, 10:44)

Информации по USB хватает но ничего конкретного и доступного для понимая я не нашел.
Посмотрите даташиты на Cypess'овские EzUSB - у них в свое время было очень доступное и качественное описание работы USB.
HARMHARM
Jun 25 2008, 10:44
Неплохая книга Addison Wesley - USB System Architecture, 2nd edition.
Еще залил Axelson J.USB Complete.Everything you need to develop custom USB peripherals
Залил в /upload/DOCs/Books/USB
Я извиняюсь - а автора не хочет уточнить с какой стороны он хочет изучить USB - с электрической или программной? Если читать USB System Architecture то можно много чего нового узнать. Но это теория. Если автору действительно хочется понять программный принцип взамодействия между USB устройствами, то надо брать исходники Linux ядра или какие-нибудь библиотеки и смотреть как там всё устроено. Ну может ядро Линукса сразу сложно будет, а вот скажем MyUSB библиотека очень простая и понятная. Тем более, в ней есть ряд реализованных устройств (CDC, mouse, kbd..). Затем покупаешь плату Olimex AVR-USB-162 за 1т.р. и моргаешь лампочками, цепляешь устройства и прочее..
USB - достаточно сложная система, в двух словах ее не объяснишь и с наскоку не освоишь. Именно поэтому книги и описания кажутся маловразумительными. Однако несколько слов скажу на тему, которая как правило мало акцентирована в описаниях и потому ускользает от восприятия начинающими.
Все обмены в USB организованы в фреймы. Для Full Speed длительность фрейма равна 1 мс. В течении этого периода хост контроллер производит обмены со всеми (или почти всеми) устройствами. Это значит, что у хоста есть список устройств, в этом списке обозначен и тип устройства, и его текущее состояние, и надо/не надо с ним сейчас общаться (в зависимости от запросов драйверов), и т.п.
Внутри фрейма хост ведет обмен в определенном порядке: сначала идет обмен по Control Pipes, потом - по изохронным пайпам и пайпам прерывания, в конце, "по остаточному принципу" - по Bulk Pipes. Это задает и приоритет пайпов: Control Pipes - самые важные, Bulk Pipes - самые неважные, если нет времени общаться в текущем фрейме, обмен по Bulk Pipes может подождать до какого-то из следующих фреймов, когда траффик будет поменьше.
Все периферийные устройства обязаны уметь разговаривать по Control Pipe 0. Все остальные пайпы - факультативные, необязательные. При подключении устройства оно докладывает хосту о себе через Control Pipe 0: что за тип устройства, кто изготовитель, сколько тока питания от USB ему требуется, какие у устройства есть пайпы помимо Control Pipe 0, и т.п. Хост ищет драйвер для вновь подключенного устройства, выделяет ему бюджет питания (если есть достаточно тока), планирует обмены по заявленным устройством пайпам (если есть такая возможность), и т.п.
Так что USB радикально отличается от простых интерфейсов, таких как RS232 и пр. И хотя USB может до какой-то степени имитировать функциональность RS232, в реальности обмен по USB сильно отличается, и не все протоколы RS232 хорошо ложатся поверх "эмулированного RS232". Важная особенность - наличие в USB фреймов.
Alex_1811
Jun 29 2008, 17:18
Цитата(hwdev @ Jun 28 2008, 22:34)

Я извиняюсь - а автора не хочет уточнить с какой стороны он хочет изучить USB - с электрической или программной?
Нужно разобраться с программной реализацией. Разобраться с тем что посылает хост устройству и что нужно ему отвечать, ну и как организувать обмен данными.
Цитата(Alex_1811 @ Jun 29 2008, 21:18)

Нужно разобраться с программной реализацией. Разобраться с тем что посылает хост устройству и что нужно ему отвечать, ну и как организувать обмен данными.
Ну если надо разбираться с хостом, то как тут АРМ7 поможет? У него же только функция device реализована. Или вы хотите смотреть как к устройству приходят пакеты? Ну тогда еще раз прошу обратить внимание на библиотеку MyUSB к которой есть описание функций, документация. Лежит тут:
http://www.fourwalledcubicle.com/MyUSB.phpЕще проще - тяжело придумать. Если хотите могу заслать книжку USB Complete, но там в основном рассказывают как со стороны Виндов работает USB-host. Для понимания можно почитать. Полегче будет, чем USB System Arch..
aaarrr
Jun 29 2008, 19:48
Цитата(hwdev @ Jun 29 2008, 23:41)

Ну если надо разбираться с хостом, то как тут АРМ7 поможет? У него же только функция device реализована.
Боюсь показаться занудой, но ARM7 - это ядро. Процессоры с ядром ARM7 и USB host'ом среди периферии в природе тоже встречаются.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.