Microcontroller mit USB-host-Funktion gesucht

Gast #4851628
Lesenswert?

Hallo ans Forum.

Ich möchte USB-Geräte abfragen und steuern und suche nach einer 
Möglichkeit dies zu tun. Ich kenne mich etwas mit einfacheren 
Micocontrollern und Windows-Programmierung aus, bin ansonsten aber eher 
in elektronischer Hardware unterwegs.

Gibt es einen Controller, der USB treiben kann? Möglichst mit einer 
fertigen APP, wo Ich nicht mehr viel tun muss. Das alles muss sehr klein 
sein.

Hinweis: Ist ein pures Bastelprojekt für den Modellbau.
Gast #4851630
Lesenswert?

Heiko S. schrieb:
> Gibt es einen Controller, der USB treiben kann? Möglichst mit einer
> fertigen APP, wo Ich nicht mehr viel tun muss. Das alles muss sehr klein
> sein.

selbst wenn es das gibt, dann braucht du immer noch ein Treiber für dein 
Gerät - kannst du denn den schreiben und hast du das Protokoll?
Gast #4851635
Lesenswert?

Heiko S. schrieb:
> Gibt es einen Controller, der USB treiben kann? Möglichst mit einer
> fertigen APP, wo Ich nicht mehr viel tun muss. Das alles muss sehr klein
> sein.

Du könntest es mit USB-CDC probieren, das haben viele Controller. Damit 
sollte man sowas wie einen Host implementieren können. Aber: Einfach ist 
das nicht, du musst die USB-Treiber implementieren.

Ich persönlich denke, dass ein Linux-Host besser geeignet ist, also kein 
Microcontroller. Sowas wie ein Raspberry PI. Es gibt einige kleinere 
Boards.
sowas zum Beispiel:
https://www.solid-run.com/freescale-imx6-family/imx6-som/
https://www.raspberrypi.org/blog/raspberry-pi-zero/

Der Nachteil der erstgenannten Variante ist nämlich der 
Programmieraufwand.
Bei der zweiten Variante sollte das doch sehr viel einfacher sein.
Gast #4851636
Lesenswert?

Peter II schrieb:
> elbst wenn es das gibt, dann braucht du immer noch ein Treiber für dein
> Gerät - kannst du denn den schreiben und hast du das Protokoll?


Nun ja, im einfachsten Fall wäre es mal eine Maus, ein USB-Sensor. Einen 
Treiber habe Ich für die immer nur für Win / Linux. Aber so arg komplex 
kann das nicht sein, oder?
Gast #4851637
Lesenswert?

Hurra schrieb:
> Ich persönlich denke, dass ein Linux-Host besser geeignet ist, also kein
> Microcontroller. Sowas wie ein Raspberry PI.

Das hatte Ich auch schon gedacht. Schien mir aber zu aufwändig. Wenn 
natürlich mit dem Gerät das Linux mal liefe, hätte Ich den Treiber.

Hast Du sowas schon mal gemacht?
(Firma: RUB) #4851701
Lesenswert?

Du koenntest ein externes IC nehmen, z.B. den MAX3421E. Den kannst du 
dann per SPI mit einem Mikrocontroller deiner Wahl ansteuern.
http://datasheets.maximintegrated.com/en/ds/MAX3421E.pdf

Der Atmel SAM D21 kann USB-Host. Dieser ist auf dem Arduino M0 bzw. 
Arduino M0 Pro verbaut:
M0: 
https://www.reichelt.de/index.html?ACTION=3;ARTICLE=162345;SEARCH=arduino%20zero
M0 Pro: 
https://www.reichelt.de/Einplatinen-Microcontroller/ARDUINO-M0-PRO/3/index.html?ACTION=3&LA=517&ARTICLE=155816&GROUPID=6667

Du koenntest auch noch den Atmel SAM R21 nehmen. Ist der D21 nur noch 
mit Funk. Dazu gibt es von Atmel ein Eval-Board.
http://www.atmel.com/tools/ATSAMR21-XPRO.aspx
(Firma: matzetronics) #4851733
Lesenswert?

Die STM32F4 können sowas. Zumindest externe Massenspeicher sind recht 
einfach an das USB OTG anzubinden, welches z.B. an den Discovery F4 und 
Discovery F429 Eval Boards herausgeführt ist. Habe ich erfolgreich sogar 
über kleine USB Hubs betrieben.

Auch das dicke F7 Board sollte sowas haben.
Gast #4851736
Lesenswert?

Heiko S. schrieb:
> Gibt es einen Controller, der USB treiben kann? Möglichst mit einer
> fertigen APP, wo Ich nicht mehr viel tun muss. Das alles muss sehr klein
> sein.
>
> Hinweis: Ist ein pures Bastelprojekt für den Modellbau.

Schau dir doch mal ATmega / ATxmega und die Lufa Bibliothek an. Da sind 
viele fertige Beispiele dabei!
#4851791
Lesenswert?

Heiko S. schrieb:
> Hallo ans Forum.
>
> Ich möchte USB-Geräte abfragen und steuern und suche nach einer
> Möglichkeit dies zu tun. Ich kenne mich etwas mit einfacheren
> Micocontrollern und Windows-Programmierung aus, bin ansonsten aber eher
> in elektronischer Hardware unterwegs.
>
> Gibt es einen Controller, der USB treiben kann? Möglichst mit einer
> fertigen APP, wo Ich nicht mehr viel tun muss. Das alles muss sehr klein
> sein.
>
> Hinweis: Ist ein pures Bastelprojekt für den Modellbau.

Kurzfassung: Controller mit USB-OTG/Host-Funktionalität gesucht.
Bei den heutigen Controllern ist da eher die Frage wie viele, nicht ob 
es die gibt.
32-Bitter: u.a. div. Microchip PIC32, Renesas RX, SuperH, RZ, Synergy, 
STM32L4, F4, F7, Atmel SAM, NXP LPC, Kinetis, iMX.
Softwarestack für OTG/Host-Funktionalität gibt's u.a. bei Microchip, 
Renesas, Atmel, NXP
Interessanter wird's wenn USB 2.0 HiSpeed und mehr gefragt ist.

Fertige "App": Bleibt eigentlich nur irgendwas mit größerem OS und in 
klein wie u.a.: Raspberry Pi Zero, VoCore2 1) oder z.B. LinkIt Smart 
7688 Duo 2)

1) http://vocore.io/
2) https://www.seeedstudio.com/LinkIt-Smart-7688-Duo-p-2574.html
Gast #4863670
Lesenswert?

HM, scheint aufwändiger zu werden, als Ich dachte. Das mit den Treibern 
könnte ein Problem werden, weil Ich die nicht habe und auch nicht das 
Protokoll. Bei einer USB-Maus ging es halt noch über einen Adapter, der 
PS2 kann.
Persönliche Seite #4863719
Lesenswert?

Heiko S. schrieb:
> Bei einer USB-Maus ging es halt noch über einen Adapter, der PS2 kann.

Nee, auch das nicht. Das ging nur, wenn die Maus "zweisprachig" war, 
dann hat der Adapter die Maus dazu gebracht, statt USB PS/2 zu sprechen.

Mit einer reinen USB-Maus aber haben diese Adapter nie funktioniert; wie 
sollten sie auch, die Dinger sind rein passiv und enthalten nur ein paar 
Drähte, die die beiden Anschlüsse miteinander verbinden.
Gast #5167961
Lesenswert?

Ein USB-host ist nicht trivial, je nach dem, was Du tun willst. In Linux 
ist das eigentlich gut unterstützt und auch aufzusetzen, aber Linux auf 
Microcontrollern ist wieder um eine Verrenkung.

Ich würde mich da nach was Fertigem umsehen, gfs doch in Richtung 
Arduino.
Gast #5168437
Lesenswert?

Renesas Synergy, ab S3 aufwärts kann das. Aber genau schauen was die 
USB-Peripherie der einzelnen Derivate wirklich kann und ob man man mit 
der Ausstattung (RAM) das auch zum Laufen bekommt.
Teuer sind die Dinger auch, man bezahlt halt über das Silizium den 
ganzen IDE, RTOS, Framework, Treiber-Kram letztendlich doch mit.
Release Notes lesen, in manchen Framework-Releases gibts Einschränkungen 
bei manchen Treibern. Ich hab aber den Eindruck dass das mehr auf die 
einfacheren Sachen wie z.B. SPI zutrifft als auf die komplexeren wie USB 
oder Ethernet.
Aber ist ja auch klar: So ein Webserver mit Dateien auf USB-Stick muss 
halt laufen, schon um ne schöne Demo zu haben, da sind die Basics nicht 
so wichtig ;-). Die kann man sich ja eh auch selber fummeln.

Hier wäre z.B. eine Anleitung für HID:
https://www.renesas.com/en-eu/doc/products/renesas-synergy/apn/r11an0145eu0100-synergy-ux-device-class-hid-hal-mod-guide.pdf

Glyn hat ein S3-Boardfür rund 70€, was günstigeres ist mir nicht 
bekannt: 
http://www.glyn.de/News-Events/Newsletter/Newsletter-2016/electronica-2016/Fuer-RENESAS-Synergy-Plattform-br-GLYN-bringt-Arduino-kompatibles-Board-fuer-Synergy-S3
(Da bekommt man auch die µCs zu halbwegs anständigen Preisen, was 
woanders verlangt wird ist teilweise heftigst abschreckend)
Es gibt noch für den S5 & S7 von Renesas selbst Boards, in der preislich 
gleichen Ecke aber besser ausgestattet.

Die Boards haben einen Segger J-Link drauf (kann man wohl auch so 
hinfummeln dass die zumindest mit gleichem Target auch als Debugger für 
eigene PCBs laufen). Nur flashen geht aber auch über USB oder RS232.
Gast #5168600
Lesenswert?

Muss mich korrigieren, der Link geht zu ner Anleitung für USB-Device 
Treiber, nicht Host. Es scheint aber jedenfalls zu gehen:
https://renesasrulz.com/synergy/f/synergy---forum/8272/usbx-hid-host

Mittlerweile scheints auch günstigere "Target Boards" zu geben so um 
30€, leider ohne USB-Host-Anschluss. Die µCs darauf sind eher etwas 
abgespeckte Versionen. Der S3A6 soll USB-Host Funktionalität eingebaut 
haben, ob man die mit seinen 32k RAM (im krassen Gegensatz zu den 192k 
des A7) mit den Standard-Treibern zum laufen bringt, wage ich zu 
bezweifeln. Mit dem S5D5 müsste es aber auf jeden Fall gehen.
https://www.digikey.de/products/de?keywords=YSTBS
Gast #5168624
Lesenswert?

Peter II schrieb:
> Mit einem ATmega / ATxmega bekommt man keine USB Host zu laufen.

Auch, wenn die Diskussion schon älter ist:
Es gibt ein USB-Host-Arduino-Shield, mit dem sogar ein ATmega Host 
spielen kann. Das lkäuft zwar über einen externen Maxim-Chip, aber es 
geht.
Ich betreibe daran momentan testweise ein Gamepad.

Wenn man herausfindet, zu welcher Klasse der USB-Sensor (z.B. HID, CDC) 
gehört, kann man den USB-Host auch auf einem arm implementieren.
Die Klasse könnte man im Windows_Gerätemanager herausfinden.
ICh könnte mir vorstellen, dass es sich um ein CDC-Gerät handelt, da 
sich solche Treibergeschichten bei den meisten Geräte eigentlich nicht 
lohnt.

Keil liefert in der µVision-PRO-Version sogar eine fertige Bibliothek 
mit (wie das bei anderen System ist, weiß ich nicht).

Sowas gibt nes dann auch noch:
http://www.hobbytronics.co.uk/usb-host-board-v2?keyword=USB
basiert azf einem Microchip PICxxx.
Gast #5168678
Lesenswert?

Es gibt jede Menge MCUs, die usb können. Das Problem sind die Treiber. 
Schon der Zugriff auf einen usb-stick stellt vor nhahezu unüberwindliche 
Schwierigkeiten. Es fehlt jemand wie elm chan, der
echt Ahnung hat und sich die Entwicklung von usb-Treibern für uns 
minderbemittelte Programmierer antut:

Beitrag "Re: stm32f103 mit usb-stick"


Such irgendeine Lösung unterhalb von usb oder oberhalb der mcus.
Gast #5168754
Lesenswert?

Man nimmt einen S7 (für mich läuft der jedenfalls noch unter MCU), 
stöpselt sich grafisch die USB Host- und Device, FAT und Konsolen 
-Treiber zusammen, wenn man will noch Ethernet, SDC, CAN, UART.
Dann bastelt man sich mit der Konsole ein paar DOS-Befehle und das Ding 
fühlt sich so ähnlich an wie ein alter PC, auf einem Terminal das am 
Device-USB hängt oder über LAN. Oder lässt ihn gleich ein TFT treiben 
und stöpselt über einen HUB noch ne Tastatur dran. Übers SSI kann man 
ihn dann noch La Paloma pfeifen lassen.
Selbst irgendein Kamera-Interface haben die Dinger, Featuritis³.
Und sogar 640kB RAM. Sollte für jeden reichen ;-) (OK, nicht wirklich, 
für ein grösseres Display kommt man wohl um externes RAM nicht herum.)

Sowas kann man natürlich mit einem RasPi schneller und billiger haben.
Interessant werden die Teile da wo man RasPi und Konsorten nicht nehmen 
kann.
Gast #5193352
Lesenswert?

Ich werde diesen Ansatz nie verstehen:
-das Ding darf nicht viel mehr können/haben als es muss
-bevor ich auch nur 50Cent zuviel ausgebe bastel ich lieber 100 Stunden 
mehr
(aber OK, wenn man Stückzahlen anstrebt)
-ein babylonischer Shield-Turm ist dann aber wieder OK ;-)
Gast #5197617
Lesenswert?

Ich wäre durchaus bereit, etwas auszuzugeben, um Arbeit zu sparen. Es 
muss aber auch klein sein und passen. Sowas wie ein Arduionsteckboard 
ist da wohl noch das Beste, weil Ich dann die Daten auch 
weiterverarbeiten kann.

Für die Anwendung, die Ich im Auge habe, möchte und kann Ich keine 
eigenen Platinen entwerfen (lassen).
#5198069
Lesenswert?

H. S. schrieb:

> Für die Anwendung, die Ich im Auge habe, möchte und kann Ich keine
> eigenen Platinen entwerfen (lassen).

Musst Du ja auch nicht:

http://www.microchip.com/wwwproducts/en/PIC32mx270f256b

Hat USB Full Speed Host/Device/OTG Port, gibts im 28 Pin SDIP-Gehäuse, 
kannst Du auf eine kleine Lochrasterplatine packen, dazu den Microchip 
USB-Stack, und los gehts. Du musst halt C können und etwas Grips im 
Schädel haben.

Geht alles.

fchk
#5198861
Lesenswert?

H. S. schrieb:
> Hallo Frank, das klingt sehr gut. Kennst Du Dich mit dem System aus?
>
> Denkst Du, dass man dort auch fremde Mäuse und Tastaturen mit deren
> eigenen Treiber dranbekommt?

Solange das alles normales HID ist, sollte das funktionieren. 
Ausprobiert habe ich bislang nur Mass Storage, das ich mal in einem 
Projekt gebraucht habe.

Notfalls musst Du eben den Klassentreiber ändern. Das ist aber kein 
prinzipielles Problem, weil alles im Quellcode vorliegt.

fchk

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren