реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> USB интерфейс HID устройство со стороны микроконтроллера, прошу помочь разобраться
kovigor
сообщение Mar 19 2012, 13:13
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(smk @ Mar 19 2012, 15:11) *
С нуля... Вы мне льстите. Конечно я разбираю готовые проекты (Ваш и Custom_HID от ST). Собрал платку с контроллером. Какая-то жутко путаная штука этот USB. Впечатление такое, что разработчики попытались объять необъятное и теперь все вслед за ними делают тоже самое.


С нуля очень трудно. Я, когда начинал, вообще не мог понять, как работает шина. Пришлось собирать аппаратный сниффер (Для FS/LS), захватывать реальные транзакции на шине и в деталях разбираться, какие биты, почему и зачем передаются ...

Дополнение:

Вот, со времен работы со сниффером остались файлы. Посмотрите, как выглядят временные диаграммы энумерации:

http://zalil.ru/32906383
Go to the top of the page
 
+Quote Post
smk
сообщение Mar 20 2012, 08:14
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Хотелось бы себе яснее представить следующее. Со стороны ПК прием осуществляется по REPORT ID от заведомо известного устройства, передача со стороны МК ведется в конечную точку OUT. Помнится мы уже выяснили, что при длинном пакете данных он с одной стороны режется на куски, а с другой склеивается. Это делается программистом или в примерах от Keil эта ситуация уже учтена? Спасибо.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
=AK=
сообщение Mar 20 2012, 08:26
Сообщение #18


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Цитата(smk @ Mar 19 2012, 22:41) *
Какая-то жутко путаная штука этот USB. Впечатление такое, что разработчики попытались объять необъятное и теперь все вслед за ними делают тоже самое.

Начать с того, что разработал его индус. При всем моем уважении к индусам, голова у них как-то по-другому работает. Вот Зигби, например, тоже там индусы намудрили - черт ногу сломит.
Ну а потом USB продвигалось путем многолетнего коллективного творчества. Что порядка и стройности не прибавило.

Но на самом деле не так уж все плохо. В основе USB лежат довольно простые идеи. Которые, однако, никто доходчиво изложить не может, мне, по крайней мере, не встречалось. Помню меня тоже оторопь брала, когда начинал.
Go to the top of the page
 
+Quote Post
Slash
сообщение Mar 20 2012, 09:33
Сообщение #19


Местный
***

Группа: Участник
Сообщений: 202
Регистрация: 10-04-05
Из: Санкт-Петербург
Пользователь №: 4 011



Цитата(=AK= @ Mar 20 2012, 12:26) *
Но на самом деле не так уж все плохо. В основе USB лежат довольно простые идеи. Которые, однако, никто доходчиво изложить не может, мне, по крайней мере, не встречалось. Помню меня тоже оторопь брала, когда начинал.

А как, на Ваш взгляд, вот это описание:
http://microsin.ru/content/view/1107/44/

Сообщение отредактировал Slash - Mar 20 2012, 09:33
Go to the top of the page
 
+Quote Post
kovigor
сообщение Mar 20 2012, 10:02
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(smk @ Mar 20 2012, 11:14) *
Помнится мы уже выяснили, что при длинном пакете данных он с одной стороны режется на куски, а с другой склеивается. Это делается программистом или в примерах от Keil эта ситуация уже учтена? Спасибо.


Да, это чисто программный механизм. Если вы внимательно разберете примеры от Keil, то увидите, что там сообщение при передаче разбивается на блоки, а при приеме - собирается по частям ...
Go to the top of the page
 
+Quote Post
smk
сообщение Mar 20 2012, 12:02
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Цитата(kovigor @ Mar 20 2012, 12:02) *
Да, это чисто программный механизм. Если вы внимательно разберете примеры от Keil, то увидите, что там сообщение при передаче разбивается на блоки, а при приеме - собирается по частям ...

Я пытался разбирать потому и возник вопрос как на самом деле все устроено. Хорошее бы описание к тем примерам а то что ни найду - все как-то поврхностно. Кстати спасибо за ссылку выше. Почитал с интересом.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
=AK=
сообщение Mar 20 2012, 12:52
Сообщение #22


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Цитата(Slash @ Mar 20 2012, 20:03) *
А как, на Ваш взгляд, вот это описание:
http://microsin.ru/content/view/1107/44/

Бегло посмотрел, тоже не понравилось. Беда всех описаний (и этого тоже) USB состоит в том, что все валят в одну кучу, из-за этого получается огромный ком инфы, не прожуешь. И никто не дает инфу внятными легкоусваевыми кусочкам.

Я бы начал с того, что сказал: в центре USB находится хост, все остальные устройства логически присоедены к нему, образуя звезду. Устройства между собой обмениваться не могут, по своей инициативе инфу посылать не могут. Хост - полный хозяин: хост спросил - устройство ответило. Только так, и никак иначе.

Все опросы инициирует хост. Опросы происходят циклами. Длительность цикла постоянная, 1мс для LS и FS, или 125мкс для HS. Цикл начинается с того, что хост посылает никому не адресованный токен Start Of Frame (SOF). После этого хост опрашивает периферийные устройства, причем делает это в определенном порядке: сначала опрашивает контрольные пайпы, потом "прерывания" и изохронные пайпы, и напоследок, по остаточному принципу, балк пайпы. Порядок опроса определяется планировщиком хоста, который динамически реагирует на запросы и ответы и выстраивает список опроса.

Вот это самая суть. Ее надо разжевать подробнее, с картинками, и т.п. А потом вокруг этого ядра слоями наворачивать менее значимые подробности.
Go to the top of the page
 
+Quote Post
sparcmaster
сообщение Mar 20 2012, 13:03
Сообщение #23


Частый гость
**

Группа: Свой
Сообщений: 93
Регистрация: 13-01-12
Из: Гатчина
Пользователь №: 69 333



Цитата(=AK= @ Mar 20 2012, 16:52) *
И никто не дает инфу внятными легкоусваевыми кусочкам.

Вот тут боле менее кусочки. Еще помнится у nxp для какого-то lpc2xxx была отличная апликуха - пусть азы, но для въезда самое то. А вот по репортам hid я ничего внятного в сети, к сожалению, не находил.
Go to the top of the page
 
+Quote Post
Maverick
сообщение Mar 20 2012, 13:09
Сообщение #24


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(smk @ Mar 19 2012, 10:00) *
Осваиваю создание USB устройств. В качестве "железа" использую STM32F103RCT6. Среда Keil. Примеры от Keil работают. Хочу теперь изучить сам интерфейс и по этому завел тему для своих ламерских вопросов. Собственно первый вопрос. У Агурова в книге написано, что report может содержать до 65535 байт с данными. Это как? 256 ID по 256 байт? Не совсем понимаю. С конечными точками тоже туман какой-то. Как я понимаю нулевая конечная точка скорее служебная, но может содержать и полезные данные до 8 байт? Так же не понятен механизм передачи. Напимер, как я заметил обмен ведется периогдически. А если нужно передавать тогда, когда комплект данных готов? А если нужно иногда запрашивать данные у ПК? Помогите разобраться пожалуйста. Спасибо.

может это поможет - во всяком случае енумерация проходит...


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
smk
сообщение Mar 20 2012, 14:10
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Цитата(sparcmaster @ Mar 20 2012, 15:03) *
Вот тут боле менее кусочки. Еще помнится у nxp для какого-то lpc2xxx была отличная апликуха - пусть азы, но для въезда самое то. А вот по репортам hid я ничего внятного в сети, к сожалению, не находил.

Да, был для LPC2141...48.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
kovigor
сообщение Mar 20 2012, 15:07
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(smk @ Mar 20 2012, 17:10) *
Да, был для LPC2141...48.


Для старта указанный мной Гук - самое оно. Четко, кратко, правильно, да еще и с картинками. Если дружите с английским, то почитайте еще книги Jan Axelson ...

Кстати, а я вам какой исходник давал ? Для LPC ? Или для AT91 ?

P.S. А еще было описание с картинками у Cypress, его тоже многие хвалили, вот только ссылку я не припомню ...

P.P.S. Диаграммки-то гляньте, которые я выложил. Это полезнее всяких картинок
Go to the top of the page
 
+Quote Post
smk
сообщение Mar 23 2012, 14:14
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Для АТ91.

Сейчас пытаюсь на ПК получить то, что передает демо-софт ST. Чет не очень-то получается. Устройство вижу, а то что посылает - нет. Borland C Builder 6 Sp4. Кто в чем пишет под USB HID (Win) если не секрет?


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
YAM
сообщение Mar 23 2012, 16:52
Сообщение #28


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 7-07-04
Из: Ukraine
Пользователь №: 291



откатился на Borland C Builder 5.0, так как на 6.0 некорректно возвращается DevicePath USB HID устройства в запросе SetupDiGetDeviceInterfaceDetail при поиске своего...
А так все довольно просто, использую HID.DLL


--------------------
Go to the top of the page
 
+Quote Post
smk
сообщение Mar 23 2012, 19:33
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Цитата(YAM @ Mar 23 2012, 18:52) *
откатился на Borland C Builder 5.0, так как на 6.0 некорректно возвращается DevicePath USB HID устройства в запросе SetupDiGetDeviceInterfaceDetail при поиске своего...
А так все довольно просто, использую HID.DLL

Может стоило зарядить Sp4 ? А как Вы подключили эту библиотеку? Как осуществляете прием передачу в конечные точки? Глянуть бы примерчик.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
YAM
сообщение Mar 24 2012, 07:02
Сообщение #30


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 7-07-04
Из: Ukraine
Пользователь №: 291



Идем на http://www.obdev.at/products/vusb/download.html, качаем V-USB и в libs-host все есть что надо...
Просто и со вкусом.


--------------------
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 11:56
Рейтинг@Mail.ru


Страница сгенерированна за 0.01498 секунд с 7
ELECTRONIX ©2004-2016