www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Welche USB Klasse?


Autor: Nils (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich bin gerade dabei ein Protokoll über USB zu tunneln. Im Moment nehme 
ich ein MCB2140 Board, das als HID Gerät erkannt wird. Von einem 
"Experten" habe ich erfahren, das die Art wie ich es im Moment mache 
sehr unschön und nicht dem USB Gedanken entsprechend ist. Also beim 
lesen bitte nicht zu schockiert sein :)

Ich baue also einen Tunnel über die Input/Putput Reports auf (bis jetzt 
nur einem in jede Richtung). 16 Byte gehen rein und 4 kommen zurück. 
Mein Protokoll zerstückel ich einfach in 4 bzw. 16 Byte große Häpchen 
und dann versende ich sie. Wenn das USB Board keine Daten zum senden 
hat, dann schickt er einfach 0 0 0 0.

Hat einer von euch eine bessere Idee, wie man das machen könnte? Andere 
Klasse verwenden? Treiber schreiben? ...

Bin für jeden Tipp dankbar.

Grüße Nils

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn du in der Lage bist einen Treiber zu schreiben würde ich das tun.
Ansonsten schau mal nach libusb das gibts auch für Windows.
Die Kommunikation würde ich über Controllrequests (Vendor) abwickeln.
Bei größeren Datenmengen ev auch über Bulk.
HID halte ich für langsam und umständlich. Der einzige Vorteil ist halt 
dass kein Treiber notwendig ist.
Ein Treiber der in der Lage ist über IOCTL Control Requests abzuwickeln 
ist relativ schnell geschrieben. Bespiele dazu gibt es in den DDKs.
Vieleicht auch eine Alternative www.thesycon.de

Thomas

Autor: Nils (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eigentlich wollte ich libusb nicht verwenden, da das Gerät später mal in 
Produktion gehen soll und da sollte es sich dann auch als richtiges USB 
Gerät anmelden. Soviel ich weiss tauscht ja libusb einen Teil des Win 
Usb Stack aus und greift ohne einen Treiber direkt auf das Gerät zu 
oder?

Es gibt doch Klassen, die BULK können. Wie siehts zB mit der 
Data-Interface Klasse aus? Kennt die jemand?

Grüße Nils

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Nils,

ich weiss nicht ob ich mich als Experte bezeichnen kann, aber:
Wenn Dir die Transferrate von einem HID genügt dann bleibe unbedingt bei 
dieser Klasse. Der Vorteil, dass man keinen Treiber braucht ist einfach 
immens. Und mit dem DDK ist gar nichts (Funktionierendes) schnell 
geschrieben! Es erfordert sehr fundierte Kentnisse (und BTW: den Besitz 
desselben) die man sich erst mal aneignen muss. Ich habe selbst viel 
Zeit damit verbracht meine Geräte zum HID zu machen und jedesmal wenn 
ich diese an einen neuen PC anschließe bin froh, dass ich keinen Treiber 
installieren muss.

Martin

Autor: Nils (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Martin:
Vielen Dank für deine Antwort. Einen eigenen Treiber will ich wirklich 
nicht programmieren, aber es kann sein, dass die Firma da nicht drum rum 
kommt (dann aber erst nach meiner Bachelor Arbeit).

Den eigenen Treiber lassen wir also mal ausser acht, ich bin aber gerade 
dabei mir die anderen USB Klassen anzusehen und die "Data Interface 
Class" sieht doch ganz ok aus, für das was ich vorhab. Dafür müsste es 
doch auch schon Treiber geben, oder?

HID reicht leider auf die dauer nicht mehr aus für die Geräte, da in 
naher zukunft auch Messdaten übertragen werden sollen und da es um 
Sicherheitstechnik geht, sollte da schon was schnelles her.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Nils,

ich weiss nich welches Buch Du hast, in meinem "USB Complete" gibt es 
keine "Data Interface Class" oder ich hab sie auf die Schnelle nicht 
entdeckt.

Für Dich kommt vielleicht die "Test and measurement class" in Frage aber 
die hat kein garaniertes Timing...

Bei all meinen Bemühungen habe ich erst einaml den Treiber vom 
Chiphersteller des Devicechips benutzt. Nachdem ich damit Erfahrung 
gesammelt habe, habe ich das umgebaut zum HID. Die Nutzung dieser Klasse 
scheint mir immer "höherwertiger" solange die Transferrate reicht, egal 
wie die Daten zerstückelt werden müssen.

MfG

Martin

Autor: Nils (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Morgen Martin,

vielleicht hab ich mich da auch vertan, ist wohl ein teil der 
communication-device-class, wurde aber in meinem buch (usb2.0 / 
H.J.Kelm) nicht so wirklich drauf eingegangen, deswegen kannst du recht 
haben.

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.
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.

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