www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik expandio-usb HID programmierung


Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Tag zusammen!

Ich habe mir eine USB-I2C-Bruecke mit dem expandio-USB chip von 
www.hexwax.com gebaut um I2C slaves zu testen. Funktioniert soweit ganz 
gut, mit dem mitgelieferten Windows Konfigurationstool kann ich auch 
Daten zum I2C Bus vom PC aus schreiben und lesen. Jetzt wuerde ich das 
ganze gerne unter Linux probieren, betrete da aber Neuland und braeuchte 
von euch ein paar Denkanstoesse.
cat /proc/bus/usb/devices liefert folgendes:

T:  Bus=03 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#=  3 Spd=12  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  2
P:  Vendor=0b40 ProdID=0132 Rev= 0.04
S:  Manufacturer=expandIO-USB
S:  Product=Firmware Factory Ltd
S:  SerialNumber=No GUID
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=03(HID  ) Sub=00 Prot=00 Driver=usbhid
E:  Ad=81(I) Atr=03(Int.) MxPS=  64 Ivl=1ms
E:  Ad=01(O) Atr=03(Int.) MxPS=  64 Ivl=1ms
C:  #Ifs= 1 Cfg#= 2 Atr=80 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=03(HID  ) Sub=00 Prot=00 Driver=
E:  Ad=81(I) Atr=03(Int.) MxPS=  64 Ivl=1ms
E:  Ad=01(O) Atr=03(Int.) MxPS=  64 Ivl=1ms

Der Chip wurde also erkannt. Nur wie mache ich jetzt weiter? Die Befehle 
an den Chip werden byte-weise geschrieben, also etwa sowas wie 'A0 00 A2 
02 00 00'. Koennte ich sowas einfach in ein device schreiben wie bei der 
seriellen Schnittstelle (tty*)?
Wie gesagt, stehe am Anfang, habe natuerlich schon gegoogelt aber nichts 
gefunden was mir einen brauchbaren Einstieg ermoeglicht.

Vielen Dank fuer eure Hilfe!

Jan

Autor: guest (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich Dich richtig verstehe, dann liegt Dein Problem auf PC-Seite? 
Versuchs mal mit LIBUSB.

Gruß

Autor: Guido Körber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Generic HID brauchen unter Linux einen eigenen Treiber. Der 
Protokollstack von Linux versucht auch Generic HID Device zu übernehmen 
und deren Daten in Eingangsrichtung zu interpretieren, was natürlich 
nicht so gut klappt.

Desshalb haben wir für unsere IO-Warrior schon seit Jahren einen Treiber 
in der Standard-Distribution von Linux.

Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen!

D.h. ich muss einen generic HID Treiber fuer mein expandIO schreiben? Da 
hab ich mir wohl etwas viel vorgenommen :-( Was fertiges bzw. eine 
modifizierbare Vorlage gibt es da nicht, oder?

Danke und Gruss,

Jan

Autor: Guido Körber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
LibUSB, oder in den Linux-Sourcen den Treiber für die IO-Warrior 
angucken.

Oder den hier nehmen, der hat Treiber und API für Linux und ist 
handlich:
http://www.codemercs.com/index.php?id=256&L=0

Beispielcode für Linux haben wir allerdings nicht so üppig, aber das API 
ist identisch mit dem für Windows und da sind etliche Beispiele dabei.

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.