STM32 USB HID - wMaxPacketSize immer bei 4 Bytes statt 64 Bytes

OP #6036684
Lesenswert?
• ▲
▼
Hallo zusammen

Ich versuche hier ein HID-Device mit einem STM32F103 zum laufen zu 
bekommen. Habe dazu CubeMX zur konfiguration verwendet. Grundsätzlich 
funktioniert das ganze auch. Das heisst, das Device wird vom PC erkannt 
und enumeriert und im Device Manager als HID angezeigt. Jedoch meldet 
sich der STM immer mit wMaxPacketSize = 4 an, anstelle von 64.

Hatte jemand bereits ähnliche Probleme?

Habe Wireshark zu Überprüfung verwendet.




Descriptor [usbd_desc.c]
1
__ALIGN_BEGIN uint8_t USBD_FS_DeviceDesc[USB_LEN_DEV_DESC] __ALIGN_END =
2
{
3
  0x12,                       /*bLength */
4
  USB_DESC_TYPE_DEVICE,       /*bDescriptorType*/
5
  0x00,                       /*bcdUSB */
6
  0x02,
7
  0x00,                       /*bDeviceClass*/
8
  0x00,                       /*bDeviceSubClass*/
9
  0x00,                       /*bDeviceProtocol*/
10
  64,                         /*bMaxPacketSize*/
11
  LOBYTE(USBD_VID),           /*idVendor*/
12
  HIBYTE(USBD_VID),           /*idVendor*/
13
  LOBYTE(USBD_PID_FS),        /*idProduct*/
14
  HIBYTE(USBD_PID_FS),        /*idProduct*/
15
  0x00,                       /*bcdDevice rel. 2.00*/
16
  0x02,
17
  USBD_IDX_MFC_STR,           /*Index of manufacturer  string*/
18
  USBD_IDX_PRODUCT_STR,       /*Index of product string*/
19
  USBD_IDX_SERIAL_STR,        /*Index of serial number string*/
20
  USBD_MAX_NUM_CONFIGURATION  /*bNumConfigurations*/
21
};


Angehängt ist ein Bild von Wireshark.

Danke schonmal.
Angehängte Dateien:
OP #6036729
Lesenswert?
• ▲
▼
Vielen Dank für deine Antwort.
Ich habe das Problem gefunden.

Hintergrund:
Ich wollte diesen Code
https://github.com/chandong83/stm32_i2c_to_usb_hid_multitouch

Mit dem neuen CubeMX verwenden.
Nach dem erzeugen des Codes mit dem neuen CubeMX funktionierte der 
TouchScreen jedoch nicht mehr korrekt. Das analysieren mit Wireshark hat 
besagten Unterschied im Descriptor gezeigt.

Weitere Analysen haben nun gezeigt, dass in der Datein usbd_hid.c ein 
Abschnitt HID_MULTI_TOUCH_ReportDesc fehlt. Dieser Abschnitt ist in 
besagtem Projekt vorhanden.

nach dem Austauschen der Dateien usbd_hid.c und .h im Ordner 
Middlewares/ST/STM*".../Class/HID/Src und Inc, funktioniert der Touch 
nun wieder und der Descriptor meldet nun auch wieder die 64 Bytes.

Weiss jemand, ob HID_MULTI_TOUCH_ReportDesc von ST in der HID Klasse 
enthalten war/ist, oder ob dies vom ersteller des Github projektes 
hinzugefügt wurde? Leider gibt es beim Projekt keine vernünftige 
Code-History. Daher lässt sich dies nicht direkt nachschauen.

Danke.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.