Forum: Mikrocontroller und Digitale Elektronik USB mit Terminal ?


von Daniel Blum (Gast)


Lesenswert?

Hi !
Habe mal ne Frag zu USB. Besteht die Möglichkeit über ein Terminal 
Programm Daten über eine USB Schnittstelle zu senden?
Ich möchte gerne so eine Kommunikationsschnittstelle in Betrieb nehmen 
und versuchen "auschließlich" USB zu nutzen.
Oder brauche ich eine andere grafische Oberfläche, mit dementsprechenden 
Initialisierungen für die Umsetzung mit USB? Gbit es irgendwo Infos?

von Thomas B. (yahp) Benutzerseite


Lesenswert?

Terminal != USB

Das sind zwei ganz und gar unterschiedliche Paar Schuhe.

Wenn an dem USB aber zum Beispiel ein Konverter auf Seriell hängt, daran 
ein Gerät, was damit und mit den Daten die vom Terminalprogramm kommen 
was anfangen kann und das jeweilige Betriebssystem dann durch den 
Treiber des USB-Gerätes dem Terminalprogramm glauben machen kann, dass 
es sich um ein serielles Gerät handelt, dann ja.

Das ist allerdings nur ein einfaches Beispiel. Man kann sich sicherlich 
andere Möglichkeiten ausdenken. Jedoch gibt es auch massig USB-Geräte, 
die sicherlich nicht mit deinem Terminalprogramm reden wollen.

von Daniel Blum (Gast)


Lesenswert?

Ok, wie bekommt man den eine Verbindung zum USB hin ?
Irgendwie muss es doch eine Möglichkeit geben, eine Kommunikationsebene 
aufzubauen? Ich will "einfach" meine Daten mit USB transportieren..
Gibt es denn nicht sowas ähnliches wie ein Terminal Programm für USB mit 
dem passenden Treiber?

von Gänseblümchen (Gast)


Lesenswert?

USB ist keine Schnittstelle.

USB ist ein _u_niverseller _s_erieller _B_us, bei dem genau 
festgeschriebene Protokolle eingehalten werden müssen. Einfach ein paar 
Bytes rausschicken wie bei Parallelport oder bei RS 232 geht nicht.

USB-Verbindungen zwischen zwei PCs funktionieren nur mit einem 
Interface-Controller, weil USB als Master-Slave-Protokoll aufgebaut ist. 
Der PC ist der Host (Master), angeschlossene Geräte wie z.B. Maus, 
Tastatur etc. können nur nach Aufforderung durch den Master ihre Daten 
versenden oder empfangen. Die direkte Verbindung Host-Host ist also 
nicht möglich, es muss ein intelligentes Interface dazwischengeschaltet 
werden. Sowas gibt's aber fertig zu kaufen.

USB-Geräte kann man nur über entsprechende Treiber ansprechen. Für 
Anfänger sind z.B. folgende Seiten interessant:

http://www.b-kainka.de/usb.htm

von Daniel Blum (Gast)


Lesenswert?

Nun, danke für die Infos..
Wo kann man den so einen Interface-Controller herbekommen ?

von Dirk D. (dirkd)


Lesenswert?

> Wo kann man den so einen Interface-Controller herbekommen ?

Dort wo Du auch andere PC-Peripherie herbekommst:
"Ich bin blöd"-Markt, alternate, reichelt, k&m uvm.

Beispiel:
http://www.alternate.de/html/productDetails.html?artno=LXZD01

Aber versuch doch mal zu beschreiben was Du machen willst.

von Sebastian Eckert (Gast)


Lesenswert?

Geht es hier denn wirklich um eine Verbindung von Computer zu Computer, 
oder vielmehr eine Verbindung vom PC zu einem elektronischen Gerät?

Ich könnte mir vorstellen, daß hier eher eine USB-zu-RS232 Umsetzung 
gefragt ist. Dann kann man mit einem Terminalprogramm über eine durch 
einen entsprechenden Treiber simulierte COM-Schnittstelle mit dem 
USB-Gerät kommunizieren. Dazu gibt es entweder fertige Chips (FT232, 
FT245 von FTDI, inklusive Standardtreiber) oder eine Software-Lösung für 
Atmel-Mikrocontroller von Objective Development, hier: 
http://www.obdev.at/products/avrusb/index.html

Ist auch in der Linksammlung auf dieser Seite zu finden.

von Daniel Blum (Gast)


Lesenswert?

Hi!
Es geht um eine Verbindung von einem PC zu einem µC (ARM7 STR7) der eine 
USB Interface hat. Jetzt möchte ich gerne eine Datenübertragung über USB 
herstellen!
Ich möchte auch keine von FTDIChip RS232-Konverter sondern auschließlich 
einen Komunikationsweg über USB.
Ich hoffe, das bringt euch etwas weiter....

Es wird doch bestimmt ne Möglichkeit geben mit einer entspr. 
Softwareumgebung und einem Treiber die Daten zu transportieren?

von Thomas B. (yahp) Benutzerseite


Lesenswert?

Beim EZ-USB (Cypress AN21**) und folgende, also ein 
USB-Devicecontroller mit 8051-Kern, gab es reichlich Material vom 
Hersteller. Generischer Treiber, eine Testsoftware zur Übertragung von 
Programmen (RAM-basierter Controller), verschiedene Quelltexte und 
Dokumentationen.

So etwas sollte es doch auch für den von dir verwendeten Controller 
geben. Der Punkt ist doch der, dass keine handelsübliche Software 
("Terminalprogramme" etc.) per se mit deinem Controller reden kann. Wie 
dieser die Daten versteht hängt doch ausdrücklich von deinem 
implentieren Code im µC ab?! Trotzdem würde ich erstmal PC-seitig einen 
generischen Treiber vom Hersteller des µC erwarten. Eine Applikation, 
die Daten schickt ist dann das kleinere Übel. Zum Testen ist da ein 
kleines Progrämmle relativ schnell gemacht, denn der Gerätazugriff 
erfolgt über den Treiber und standardisierte Schnittstellen des 
Betriebssystems.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

@Daniel:

Suche Dir eine USB-Geräteklasse aus, implementiere die auf dem ARM und 
verwende dann den Standardgerätetreiber für die gewählte Geräteklasse.

Als Standardgeräteklassen stehen zur Verfügung

  HID - human input device (Maus, Tastatur etc.)
  MSD - mass storage device (Festplatte, USB-Stick, Kartenleser etc.)
  Audio (USB-Soundkarten, USB-Headsets etc.)
  Communications (USB-Modems, USB-RS232-Adapter etc.)

Alternativ kannst Du natürlich auch ein nicht von diesen 
Standardgeräteklassen implementiertes USB-Protokoll verwenden, dann aber 
musst Du auch noch einen Devicetreiber für Dein Betriebssystem schreiben 
(oder libusb oder ähnliches verwenden).


Der Ansatz von Anchorchips (Ez-USB, jetzt Cypress) stellt bei 
Controllern mit USB-Schnittstelle eine Ausnahme dar, der Controller 
enthält bereits ein fertig programmiertes ROM, das einen USB-Stack 
enthält und mit einem vom Hersteller gelieferten Treiber kommuniziert. 
Dadurch ist ein Download über USB möglich.

Das ist bei anderen Controllern durchaus nicht üblich, und in so einem 
Fall kann es auch keinen generischen Treiber geben.

von Dirk D. (dirkd)


Lesenswert?

ok, also suchst Du doch keinen Interface-Controller...

Für Deine Zwecke ist eine Standardgeräteklasse vermutlich das beste

Von denen die Rufus aufgezählt hat wäre wahrscheinlich die 
Communications-Klasse die sinnvollste.

Dann machst Du im Prinzip das was die FTDI-Chips in HW machen.

Eine Beispielimplementierung für die CDC-Klasse kannst Du bei den ATMEL 
SAM7 Code-Beispielen finden. Anderer Chip und damit anderes 
USB-Interface aber den prinzipiellen Ablauf kannst Du Dir dort ansehen.

Hier findest Du ein Beispiel:

http://gandalf.arubi.uni-kl.de/avr_projects/arm_projects/index_at91.html#at91_usb1

von Daniel Blum (Gast)


Lesenswert?

@ all :
Danke für eure Beiträge
@  Rufus T. Firefly:
Ich habe bereits die MSD - mass storage device als USB Stick aktiviert.
Das funktioniert auch wunderbar... Nur wenn ich jetzt gerne vom Host 
über USB Daten übertragen möchte. Da fehlt mir das notwendige Know How 
!!

Als Beispiel wäre vielleicht, wenn ich meinen µC mit dem USB updaten 
möchten um eine neue Software zu implementieren, oder einfach mal einen 
bestimmten Speicherbereich auslesen möchte!

Da soll mein Lösungsansatz hingehen ! RS232 möchte ich nicht mehr 
verwenden!

von Dirk D. (dirkd)


Lesenswert?

Dann wirst Du Dir wohl ein eigenes Protokoll entwerfen müssen.

Ctrl-Transfers zur Steuerung und wenn ich schnell gehen soll 
Bulk-Transfers zur Übertragung der Daten.

Dazu benötigst Du auf der Host-Seite entweder einen eigenen 
Device-Treiber (etwas aufwendiger) oder Du verwendest die libusb (gibt 
es für Linux und Windows).

Damit kannst Du dann einfache User-Mode Programme schreiben die mit 
Deinem Device kommunizieren

Den Window-Port findest Du unter:
http://libusb-win32.sourceforge.net/

Zum Thema Firmware-Update über USB haben ich auch schon ein paar Leute 
Gedanken gemacht.

Dazu gibt es auch eine eigene Geräteklasse DFU (device firmware update).

Eine generische Applikation auf Host-Seite kenne ich allerdings nicht.

von Dirk D. (dirkd)


Lesenswert?

Noch etwas:
Infos zu USB findest Du z. B. unter
http://www.beyondlogic.org/
http://www.lvr.com/usbc.htm (Autor eines USB Buchs)

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.