kovigor 5 19 марта, 2012 Опубликовано 19 марта, 2012 · Жалоба С нуля... Вы мне льстите. Конечно я разбираю готовые проекты (Ваш и Custom_HID от ST). Собрал платку с контроллером. Какая-то жутко путаная штука этот USB. Впечатление такое, что разработчики попытались объять необъятное и теперь все вслед за ними делают тоже самое. С нуля очень трудно. Я, когда начинал, вообще не мог понять, как работает шина. Пришлось собирать аппаратный сниффер (Для FS/LS), захватывать реальные транзакции на шине и в деталях разбираться, какие биты, почему и зачем передаются ... Дополнение: Вот, со времен работы со сниффером остались файлы. Посмотрите, как выглядят временные диаграммы энумерации: http://zalil.ru/32906383 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 20 марта, 2012 Опубликовано 20 марта, 2012 · Жалоба Хотелось бы себе яснее представить следующее. Со стороны ПК прием осуществляется по REPORT ID от заведомо известного устройства, передача со стороны МК ведется в конечную точку OUT. Помнится мы уже выяснили, что при длинном пакете данных он с одной стороны режется на куски, а с другой склеивается. Это делается программистом или в примерах от Keil эта ситуация уже учтена? Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=AK= 17 20 марта, 2012 Опубликовано 20 марта, 2012 · Жалоба Какая-то жутко путаная штука этот USB. Впечатление такое, что разработчики попытались объять необъятное и теперь все вслед за ними делают тоже самое. Начать с того, что разработал его индус. При всем моем уважении к индусам, голова у них как-то по-другому работает. Вот Зигби, например, тоже там индусы намудрили - черт ногу сломит. Ну а потом USB продвигалось путем многолетнего коллективного творчества. Что порядка и стройности не прибавило. Но на самом деле не так уж все плохо. В основе USB лежат довольно простые идеи. Которые, однако, никто доходчиво изложить не может, мне, по крайней мере, не встречалось. Помню меня тоже оторопь брала, когда начинал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Slash 0 20 марта, 2012 Опубликовано 20 марта, 2012 (изменено) · Жалоба Но на самом деле не так уж все плохо. В основе USB лежат довольно простые идеи. Которые, однако, никто доходчиво изложить не может, мне, по крайней мере, не встречалось. Помню меня тоже оторопь брала, когда начинал. А как, на Ваш взгляд, вот это описание: http://microsin.ru/content/view/1107/44/ Изменено 20 марта, 2012 пользователем Slash Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kovigor 5 20 марта, 2012 Опубликовано 20 марта, 2012 · Жалоба Помнится мы уже выяснили, что при длинном пакете данных он с одной стороны режется на куски, а с другой склеивается. Это делается программистом или в примерах от Keil эта ситуация уже учтена? Спасибо. Да, это чисто программный механизм. Если вы внимательно разберете примеры от Keil, то увидите, что там сообщение при передаче разбивается на блоки, а при приеме - собирается по частям ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 20 марта, 2012 Опубликовано 20 марта, 2012 · Жалоба Да, это чисто программный механизм. Если вы внимательно разберете примеры от Keil, то увидите, что там сообщение при передаче разбивается на блоки, а при приеме - собирается по частям ... Я пытался разбирать потому и возник вопрос как на самом деле все устроено. Хорошее бы описание к тем примерам а то что ни найду - все как-то поврхностно. Кстати спасибо за ссылку выше. Почитал с интересом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=AK= 17 20 марта, 2012 Опубликовано 20 марта, 2012 · Жалоба А как, на Ваш взгляд, вот это описание: http://microsin.ru/content/view/1107/44/ Бегло посмотрел, тоже не понравилось. Беда всех описаний (и этого тоже) USB состоит в том, что все валят в одну кучу, из-за этого получается огромный ком инфы, не прожуешь. И никто не дает инфу внятными легкоусваевыми кусочкам. Я бы начал с того, что сказал: в центре USB находится хост, все остальные устройства логически присоедены к нему, образуя звезду. Устройства между собой обмениваться не могут, по своей инициативе инфу посылать не могут. Хост - полный хозяин: хост спросил - устройство ответило. Только так, и никак иначе. Все опросы инициирует хост. Опросы происходят циклами. Длительность цикла постоянная, 1мс для LS и FS, или 125мкс для HS. Цикл начинается с того, что хост посылает никому не адресованный токен Start Of Frame (SOF). После этого хост опрашивает периферийные устройства, причем делает это в определенном порядке: сначала опрашивает контрольные пайпы, потом "прерывания" и изохронные пайпы, и напоследок, по остаточному принципу, балк пайпы. Порядок опроса определяется планировщиком хоста, который динамически реагирует на запросы и ответы и выстраивает список опроса. Вот это самая суть. Ее надо разжевать подробнее, с картинками, и т.п. А потом вокруг этого ядра слоями наворачивать менее значимые подробности. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sparcmaster 0 20 марта, 2012 Опубликовано 20 марта, 2012 · Жалоба И никто не дает инфу внятными легкоусваевыми кусочкам. Вот тут боле менее кусочки. Еще помнится у nxp для какого-то lpc2xxx была отличная апликуха - пусть азы, но для въезда самое то. А вот по репортам hid я ничего внятного в сети, к сожалению, не находил. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 20 марта, 2012 Опубликовано 20 марта, 2012 · Жалоба Осваиваю создание USB устройств. В качестве "железа" использую STM32F103RCT6. Среда Keil. Примеры от Keil работают. Хочу теперь изучить сам интерфейс и по этому завел тему для своих ламерских вопросов. Собственно первый вопрос. У Агурова в книге написано, что report может содержать до 65535 байт с данными. Это как? 256 ID по 256 байт? Не совсем понимаю. С конечными точками тоже туман какой-то. Как я понимаю нулевая конечная точка скорее служебная, но может содержать и полезные данные до 8 байт? Так же не понятен механизм передачи. Напимер, как я заметил обмен ведется периогдически. А если нужно передавать тогда, когда комплект данных готов? А если нужно иногда запрашивать данные у ПК? Помогите разобраться пожалуйста. Спасибо. может это поможет - во всяком случае енумерация проходит... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 20 марта, 2012 Опубликовано 20 марта, 2012 · Жалоба Вот тут боле менее кусочки. Еще помнится у nxp для какого-то lpc2xxx была отличная апликуха - пусть азы, но для въезда самое то. А вот по репортам hid я ничего внятного в сети, к сожалению, не находил. Да, был для LPC2141...48. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kovigor 5 20 марта, 2012 Опубликовано 20 марта, 2012 · Жалоба Да, был для LPC2141...48. Для старта указанный мной Гук - самое оно. Четко, кратко, правильно, да еще и с картинками. Если дружите с английским, то почитайте еще книги Jan Axelson ... Кстати, а я вам какой исходник давал ? Для LPC ? Или для AT91 ? P.S. А еще было описание с картинками у Cypress, его тоже многие хвалили, вот только ссылку я не припомню ... P.P.S. Диаграммки-то гляньте, которые я выложил. Это полезнее всяких картинок Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 23 марта, 2012 Опубликовано 23 марта, 2012 · Жалоба Для АТ91. Сейчас пытаюсь на ПК получить то, что передает демо-софт ST. Чет не очень-то получается. Устройство вижу, а то что посылает - нет. Borland C Builder 6 Sp4. Кто в чем пишет под USB HID (Win) если не секрет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
YAM 0 23 марта, 2012 Опубликовано 23 марта, 2012 · Жалоба откатился на Borland C Builder 5.0, так как на 6.0 некорректно возвращается DevicePath USB HID устройства в запросе SetupDiGetDeviceInterfaceDetail при поиске своего... А так все довольно просто, использую HID.DLL Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 23 марта, 2012 Опубликовано 23 марта, 2012 · Жалоба откатился на Borland C Builder 5.0, так как на 6.0 некорректно возвращается DevicePath USB HID устройства в запросе SetupDiGetDeviceInterfaceDetail при поиске своего... А так все довольно просто, использую HID.DLL Может стоило зарядить Sp4 ? А как Вы подключили эту библиотеку? Как осуществляете прием передачу в конечные точки? Глянуть бы примерчик. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
YAM 0 24 марта, 2012 Опубликовано 24 марта, 2012 · Жалоба Идем на http://www.obdev.at/products/vusb/download.html, качаем V-USB и в libs-host все есть что надо... Просто и со вкусом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться