mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik USB HID Descriptor Spotify-Steuerung STM32


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Ferdinand B. (ferry)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich möchte eine kleine Box bauen mit der ich bei z.B. Spotify Lieder 
einfach über springen kann. Diese Box möchte ich per USB an meinem 
Rechner anschließen. Grade arbeite ich mit dem "BluePill" 
(STM32F103C8T6).

Einfache Dinge wie einen Mausklick habe ich bereits hinbekommen.
Es gibt online auch ein paar Projekte zu diesem Thema, aber ich möchte 
nicht einfach nur kopieren sondern wirklich in der Lage sein später 
eigene HID Geräte zu entwickeln.

Alles in allem habe ich eine genaue, spezifische und umfangreiche 
Dokumentation bezüglich des Descriptors vermisst und so sind mir viele 
Dinge noch schleierhaft, da ich alles was ich bis jetzt gemacht habe aus 
Projekten "kopiert" habe.

Zu meinen Fragen gehören zum Beispiel:
- was machen "report_count" und "report_size"?

- 0x09, 0xB6, /*Usage (Scan Previous Track)*/" habe ich in einem Projekt 
gefunden. Wie finde ich solche Eigenschaften außerhalb von Projekten?/ 
Wo werden diese definiert?

- Warum wird 0x09, 0xB6, /*Usage (Scan Previous Track)*/" in einem Usage 
benutzt?

Da ich viele solcher Fragen habe und wahrscheinlich noch mehr aufkommen 
werden wollte ich wissen ob es eine gute und verständliche Dokumentation 
dazu gibt. Wenn ja kann mir diese bitte jemand zukommen lassen?

Grüße Ferdinand

: Bearbeitet durch User
Autor: Thomas (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Ferdinand,
du solltest dir die USB HID spec ansehen. Ich hab mir mal ein 
(unvollständiges) header file geschrieben das den Umgang mit den 
Tabellen erleichtert.
0x09 -> HID_LOCAl | 1           // USAGE  1 byte
0xB6 -> FEATURE   | _VAR | _REL // feature report
vieleicht hilft das zum Eintieg. Hid ist aber ziemlich komplex. Ohne die 
Spec von USB org koomst du sicher nicht sehr weit.

Thomas

Autor: Clemens L. (c_l)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Pit (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Ferdinand,

das mit dem HID ist eigentlich ganz einfach.

Schau mal auf ahidlib.com. Das ist zwar ein kommerzieller HID Teiber für 
Windows. Aber wie das auf Geräte-Seite aussieht wird anhand eines 
Beispiels auch ganz gut erklärt:
http://ahidlib.com/pages/fundamentals.php?lang=de

Gruß Pit

Autor: Guido Körber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dafür braucht man ein Interface das die Media Controls von HID umsetzt.

Also das Interface als HID ohne Subclass und ohne Boot Protocol 
definieren. Den Report Descriptor mit Usage Page Consumer, Usage General 
Consumer Device deklarieren. Report Size 1, Report count 1. Dann die 
Usages sepzifizieren, die Du verwenden willst.

Das ergibt dann ein Bitfeld in dem der jeweilige Key als Flag gesetzt 
wird.

Autor: Ferdinand B. (ferry)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

vielen Dank für all die Informationen!

Die genaue Definition die ich gesucht habe, habe ich in den beiden PDFs 
die ich angehängt habe gefunden.

Aktuell bin ich noch dabei mich hier druch zu arbeiten, aber bei 
Versuchen mit dem descriptor tool 
(https://www.usb.org/document-library/hid-descriptor-tool) einen 
vernünftigen Descriptor zu erstellen bin ich bisher leider immer 
gescheitert. Windows meint es hätte ein Problem mit dem Treiber.

- Weis jemand warum das so ist bzw. wie man das beheben kann?
- Hat zufällig jemand einen Beispiel Descriptor der eine ähnliche 
Aufgabe wie meine erfüllt?
- Muss ich etwas bestimmtes beachten beim einstellen des Discriptors? 
Auch was die beiden anderen Arrays, die CubeMX erstellt, angeht?

Danke und Grüße
Ferdinand

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und warum zeigt du nicht einfach mal deine Deskriptoren? Was sagt den 
USBView zu einem Gerät? Und von welchen anderen Tabellen redest du?
Thomas

Autor: Guido Körber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
db   $05, $0C  ; Usage Page (Consumer)
  db   $09, $01  ; Usage (General Consumer Device)
  db   $A1, $01  ; Collection (Application)
  db   $15, $00  ; logical minimum (0)
  db   $25, $01  ; logical maximum (1)
  db   $75, $01  ; Report Size (1)
  db   $95, $01  ; report count (1)
  db   $09, $B8  ; Usage (Eject)
  db   $81, $06  ; Input (Data, Variable, Relative)
  db   $09, $E9  ; Usage (Volume Increment)
  db   $81, $02  ; Input
  db   $09, $EA  ; Usage (Volume Decrement)
  db   $81, $02  ; Input
  db   $09, $E2  ; Usage (Mute)
  db   $81, $06  ; Input
  db   $09, $CD  ; Usage (Play/Pause)
  db   $81, $06  ; Input
  db   $09, $B5  ; Usage (Scan Next Track)
  db   $81, $06  ; Input
  db   $09, $B6  ; Usage (Scan Previous Track)
  db   $81, $06  ; Input
  db   $09, $B3  ; Usage (Fast Forward)
  db   $81, $22  ; Input
  db   $09, $B4  ; Usage (Rewind)
  db   $81, $22  ; Input
  db   $09, $B7  ; Usage (Stop)
  db   $81, $06  ; Input
  db   $C0   ; End Collection

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.