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?
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.
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?
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
Nun, danke für die Infos.. Wo kann man den so einen Interface-Controller herbekommen ?
> 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.
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.
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?
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.
@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.
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
@ 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!
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.