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

s_black

Участник
  • Постов

    81
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о s_black

  • Звание
    Частый гость
    Частый гость
  • День рождения 01.01.1975

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Посетители профиля

2 809 просмотров профиля
  1. STM32 как хост + USB hub

    "Keep alive" "SYNC" "PID SETUP" "Address=0x01 Endpoint=0x00" "CRC OK 0x1D" "EOP" "SYNC" "PID DATA0" "bmRequestType=0xA1 Data direction=Device to host, Type=Class, Recipient=Interface" "bRequest=0x01 GET_REPORT (HID class)" "wValue=0x0100 Report type=Input, Report ID=0x00" "wIndex=0x0000 Interface=0x00" "wLength=0x0004" "CRC OK 0x805B" "EOP" "SYNC" "PID STALL" "EOP" "Keep alive"
  2. STM32 как хост + USB hub

    Нет, это же запрос и получение дескриптора репорта, а GET_REPORT - это запрос на получение самого репорта.
  3. STM32 как хост + USB hub

    Да это - то понятно. Почему она GET_REPORT не принимает? Там в дампе ближе к концу есть инициализация. Я отсоединял и присоединял мышь.
  4. STM32 как хост + USB hub

    Connection Status Device connected Current Configuration 1 Speed Low (1.5 Mbit/s) Device Address 11 Number Of Open Pipes 1 Device Descriptor USB Mouse Offset Field Size Value Description 0 bLength 1 12h 1 bDescriptorType 1 01h Device 2 bcdUSB 2 0110h USB Spec 1.1 4 bDeviceClass 1 00h Class info in Ifc Descriptors 5 bDeviceSubClass 1 00h 6 bDeviceProtocol 1 00h 7 bMaxPacketSize0 1 08h 8 bytes 8 idVendor 2 15D9h 10 idProduct 2 0A37h 12 bcdDevice 2 0100h 1.00 14 iManufacturer 1 00h 15 iProduct 1 01h "USB Mouse" 16 iSerialNumber 1 00h 17 bNumConfigurations 1 01h Configuration Descriptor 1 Bus Powered, 100 mA Offset Field Size Value Description 0 bLength 1 09h 1 bDescriptorType 1 02h Configuration 2 wTotalLength 2 0022h 4 bNumInterfaces 1 01h 5 bConfigurationValue 1 01h 6 iConfiguration 1 00h 7 bmAttributes 1 A0h Bus Powered, Remote Wakeup 4..0: Reserved ...00000 5: Remote Wakeup ..1..... Yes 6: Self Powered .0...... No, Bus Powered 7: Reserved (set to one) (bus-powered for 1.0) 1....... 8 bMaxPower 1 32h 100 mA Interface Descriptor 0/0 HID, 1 Endpoint Offset Field Size Value Description 0 bLength 1 09h 1 bDescriptorType 1 04h Interface 2 bInterfaceNumber 1 00h 3 bAlternateSetting 1 00h 4 bNumEndpoints 1 01h 5 bInterfaceClass 1 03h HID 6 bInterfaceSubClass 1 01h Boot Interface 7 bInterfaceProtocol 1 02h Mouse 8 iInterface 1 00h HID Descriptor Offset Field Size Value Description 0 bLength 1 09h 1 bDescriptorType 1 21h HID 2 bcdHID 2 0110h 1.10 4 bCountryCode 1 00h 5 bNumDescriptors 1 01h 6 bDescriptorType 1 22h Report 7 wDescriptorLength 2 0034h 52 bytes Endpoint Descriptor 81 1 In, Interrupt, 10 ms Offset Field Size Value Description 0 bLength 1 07h 1 bDescriptorType 1 05h Endpoint 2 bEndpointAddress 1 81h 1 In 3 bmAttributes 1 03h Interrupt 1..0: Transfer Type ......11 Interrupt 7..2: Reserved 000000.. 4 wMaxPacketSize 2 0004h 4 bytes 6 bInterval 1 0Ah 10 ms Interface 0 HID Report Descriptor Mouse Item Tag (Value) Raw Data Usage Page (Generic Desktop) 05 01 Usage (Mouse) 09 02 Collection (Application) A1 01 Usage (Pointer) 09 01 Collection (Physical) A1 00 Usage Page (Button) 05 09 Usage Minimum (Button 1) 19 01 Usage Maximum (Button 3) 29 03 Logical Minimum (0) 15 00 Logical Maximum (1) 25 01 Report Count (3) 95 03 Report Size (1) 75 01 Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02 Report Count (1) 95 01 Report Size (5) 75 05 Input (Cnst,Ary,Abs) 81 01 Usage Page (Generic Desktop) 05 01 Usage (X) 09 30 Usage (Y) 09 31 Usage (Wheel) 09 38 Logical Minimum (-128) 15 80 Logical Maximum (127) 25 7F Report Size (8) 75 08 Report Count (3) 95 03 Input (Data,Var,Rel,NWrp,Lin,Pref,NNul,Bit) 81 06 End Collection C0 End Collection C0
  5. STM32 как хост + USB hub

    Я не пойму как эту информацию сохранить в файл...
  6. STM32 как хост + USB hub

    Прикладываю. Dump_CHINA_mouse.ulz
  7. STM32 как хост + USB hub

    Уважаемые коллеги. Мышь заработала, когда я принудительно убрал из обмена GET_REPORT таким образом case HID_IDLE: status = USBH_OK;//USBH_HID_GetReport(phost, 0x01U, 0U, HID_Handle->pData, (uint8_t)HID_Handle->length); if (status == USBH_OK) { HID_Handle->state = HID_SYNC; } ...... Конечно это костыль((( Но костыль результативный. Разбираюсь дальше. Этой мой косяк, прошу прощения - недописАл((( Там в следующей посылке идёт интервал.
  8. STM32 как хост + USB hub

    Да, есть такой. Но почему драйвер STM32 это не учитывает в своем обмене? "bDescriptorType=0x22 HID Report Descriptor" "wDescriptorLength=0x0034" "bLength=0x07" "bDescriptorType=0x05 ENDPOINT" "bEndpointAddress=0x81 Endpoint=1, Direction=IN" "bmAttributes=0x03 Interrupt" "wMaxPacketSize=0x04 (incomplete)"
  9. STM32 как хост + USB hub

    Не получилось((( Изменил report на boot - в результате логика обмена не поменялась. Наверное нужно изменить порядок запросов на такой, как генерирует винда.
  10. STM32 как хост + USB hub

    Да, я тоже пришёл к такому выводу. Дело в том, что дескриптор мыши возвращает boot mode, а драйвер STM32 принудительно переводит его в repot. Возможно дело в этом. Буду проверять.
  11. STM32 как хост + USB hub

    Виндовый драйвер после получения дескриптора репорта долбит мышь PID IN-ами 1 раз в 10мс. А почему - я не знаю((( Пытаюсь выяснить.
  12. STM32 как хост + USB hub

    Н-да... Оказалось. что этот SET_IDLE совсем не то, что я думал( Эта функция Sets HID polling period. То есть логика правильная. В логе обмена с оптической мышью STM32 отсылает такие же посылки как и для китайской мыши, но оптическая мышь отвечает нормально, а китайская, после GET_REPORT - STALL((( Короче говоря - пока нет результата.
  13. STM32 как хост + USB hub

    И ещё осталось понять как из состояния IDLE отправляется SET_PROTOCOL... Согласно исходника этого не может быть.
  14. STM32 как хост + USB hub

    По логу нахожу дальше, что после получения дескриптора репорта, хост устанавливает SET_IDLE, как я уже указал в предыдущем посте. После SET_IDLE отправляется "bRequest=0x0B SET_PROTOCOL (HID class)" в котором вместо полученного от мыши boot устанавливается report mode - "wValue=0x0001 Protocol=Report protocol". Стало понятным, почему далее хост отправляет GET_REPORT. Теперь осталось разобраться почему хост не захотел общаться в boot mode и пытается перестроить на report.
  15. STM32 как хост + USB hub

    Раскуривая исходник дальше нахожу, что GET_REPORT отправляется только из состояния IDLE. По логу наблюдаю, что "bRequest=0x0A SET_IDLE (HID class)" идёт после получения дескриптора репорта (где расписываются кнопки и координаты в байтах ответа). А по логу обмена ноутбука с этой же мышью, после получения дескриптора репорта идут PID IN. То есть ноутбук не переводит мышь в IDLE и не запрашивает GET_REPORT.
×
×
  • Создать...