|
USB интерфейс HID устройство со стороны микроконтроллера, прошу помочь разобраться |
|
|
|
Mar 19 2012, 09:04
|
Гуру
     
Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295

|
Цитата(smk @ Mar 19 2012, 12:00)  Осваиваю создание USB устройств. В качестве "железа" использую STM32F103RCT6. Среда Keil. Примеры от Keil работают. Хочу теперь изучить сам интерфейс и по этому завел тему для своих ламерских вопросов. Собственно первый вопрос. У Агурова в книге написано, что report может содержать до 65535 байт с данными. Это как? 256 ID по 256 байт? Не совсем понимаю. С конечными точками тоже туман какой-то. Как я понимаю нулевая конечная точка скорее служебная, но может содержать и полезные данные до 8 байт? Так же не понятен механизм передачи. Напимер, как я заметил обмен ведется периогдически. А если нужно передавать тогда, когда комплект данных готов? А если нужно иногда запрашивать данные у ПК? Помогите разобраться пожалуйста. Спасибо. 1. Агурова не читайте. Там очень халтурно описана работа как USB, так и собственно HID. Почитайте того же Гука, Jan Axelson, ну и спецификации (USB и HID). 2. Да, нулевая точка - управляющая, по умолчанию длина пакета - 8 байт, если при энумерации устройство не заявит о другой длине. Через эту точку можно передавать и данные. Так, например, в клавиатуру передаются команды на зажигание лампочек (посредством SetReport). Таким же путем (посредством SetReport) можно получать от нее и данные о нажатиях клавиш, но это неудобно, и поэтому для этой цели используется канал Interrupt In. 3. Так нельзя. Инициатор почти всех транзакций - хост. Для HID в большинстве случаев прерывания следуют каждые 10мС. Но вы можете запросить и другую частоту - до 1мС (для FS) или до 125 мС (насколько я помню) для HS. Быстрее и чаще не выйдет. 4. А чем обусловлен выбор именно HID ?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|