Forum: Mikrocontroller und Digitale Elektronik Microcontroller mit USB-host-Funktion gesucht


von H. S. (Gast)


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.

: Verschoben durch User
von Peter II (Gast)


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?

von Hurra (Gast)


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.

von H. S. (Gast)


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?

von H. S. (Gast)


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?

von Volker (Gast)


Lesenswert?

Schau mal unter
FTDI

http://www.ftdichip.com/Products/ICs/VNC2.htm

Da gibt es auch Dev-Kits /IDEs mit Controller.

Für einfachste Anwendungen sollte das ausreichend sein.

von Pandur S. (jetztnicht)


Lesenswert?

Es gibt PIC, mit OTG Interface, das sollte fuer HID und allenfalls 
Massenspeicher reichen. fuer was anderes natuerlich nicht, da dann die 
Treiber fehlen.

von Peter II (Gast)


Lesenswert?

Heiko S. schrieb:
> Aber so arg komplex kann das nicht sein, oder?

wenn man die Protokollbeschreibung hat dann nicht.

von Kaj G. (Firma: RUB) (bloody)


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

von Matthias S. (Firma: matzetronics) (mschoeldgen)


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.

: Bearbeitet durch User
von Dennis X. (Gast)


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!

von Peter II (Gast)


Lesenswert?

Dennis X. schrieb:
> Schau dir doch mal ATmega / ATxmega und die Lufa Bibliothek an. Da sind
> viele fertige Beispiele dabei!

Mit einem ATmega / ATxmega bekommt man keine USB Host zu laufen.

von Arc N. (arc)


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

von Stefan (Gast)


Lesenswert?

Samd11 wäre noch kleiner alsder samd21, im asf findet man fertige 
aplikationen für verschiedene Usb classen.

von H. S. (Gast)


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.

von Rufus Τ. F. (rufus) Benutzerseite


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.

von H. S. (Gast)


Lesenswert?

Aaaaah! DAS ist mal eine Information!

Das verkompliziert die Geschichte natürlich weiter. Ich hatte ja solche 
USB-PS2 Mäuse noch in der Hinterhand. Wenn die jetzt alles Sterben, MUSS 
USB her.

von Andi (chefdesigner)


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.

von josh (Gast)


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.

von josh (Gast)


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

von STK500-Besitzer (Gast)


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.

von Johannes S. (Gast)


Lesenswert?

Der LPC1768 kann USB Host. In der mbed lib sind dazu Implementierungen 
für Mouse/Keyboard/MSD/Serial drin, sind allerdings noch als Betaversion 
deklariert. Für einige grössere STM32 sollte das auch funktionieren.

von Jobst M. (jobstens-de)


Lesenswert?

PIC32MZ - kann USB Device / OTG und USB Host - gleichzeitig.

Treiber sollte man doch aus dem Linux Quelltext bekommen können.


Gruß
Jobst

von grundschüler (Gast)


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.

von josh (Gast)


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.

von H. S. (Gast)


Lesenswert?

STK500-Besitzer schrieb:
> Es gibt ein USB-Host-Arduino-Shield,
Das hört sich doch schon ganz gut an.

josh schrieb:
> Man nimmt einen S7
Das ist eben ein klein wenig oversized für meine Anwendung. Ein 
kompletter MINI-PC, naja.

von josh (Gast)


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 ;-)

von H. S. (Gast)


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

von Frank K. (fchk)


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

von josh (Gast)


Lesenswert?

Sieht gar nicht schlecht aus, der PIC. Gibt sogar ein 
Config-Tool/Codegenerator. Für Standard-Klassen, aber aben auch für 
andere Devices, was für den OP vielleicht noch wichtig sein könnte, denn 
es scheint ja nicht so ganz klar, was da so alles drangestöpselt werden 
soll:
http://ww1.microchip.com/downloads/en/AppNotes/01143a.pdf

von H. S. (Gast)


Lesenswert?

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?

Oder brauche Ich doch sowas hier:
Beitrag "Kleinster und einfachster Linux Prozessor"

von Frank K. (fchk)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.