Hallo, für ein Projekt stehen ich vor folgendem Problem: 1. Ich möchte mit einem Controller Binärdaten als Dateien (File-System) auf eine SD-Karte schreiben. 2. Wenn ich das Gerät per USB-Kabel an den PC anschließe, sollen diese Dateien sichtbar und auf den Rechner kopierbar sein. Auch wenn ich das alles noch nie gemacht habe, würde ich mir Punkt 1 unter Zuhilfenahme einer fertigen Library noch irgendwie zutrauen. Ich habe aber keine Idee, wie ich Punkt 2 angehen könnte. Für Denkanstöße/Schlagworte, in welche Richtung es gehen könnte, wäre ich sehr dankbar. Beste Grüße, Alex
2. Du musst ein MassStoregeDevice erstellen. Demos gibt es sicher irgendwo im Netz, passend zu Deinem µC.
:
Bearbeitet durch User
Alexander H. schrieb: > 2. Wenn ich das Gerät per USB-Kabel an den PC anschließe, sollen diese > Dateien sichtbar und auf den Rechner kopierbar sein. Wenn Du mit "Gerät" deine µC-Schaltung meinst, dann ist dass eine sehr sportliche Aufgabe. Neben dem implementieren des USB-Protokolls muss dein µC dann noch UMS (USB mass storage - USB Massenspeicher) fähig sein, damit das für das PC-Betriebssystem ohne Umstände auslesbar wird. Je nachdem wieviel Voraussetzungen Dein µC mitbringt, ist der Aufwand unterschiedlich. Was jedoch - das behaupte ich jetzt mal - nicht realistisch ist, dass mit einem 8-bit-Mikrocontroller àla mega8 & co umzusetzen.
Also zumindest Teile dieser Aufgabe sind bereits erledigt. Guck mal auf http://mikrocontroller.bplaced.net/wordpress/?page_id=744 Dort Findest du fertige Projekte für den STM32, u.a. mit einem Beispiel zu SDIO und FatFS. Es gibt außerdem Beispiele zu USB, u.a. für den Anschluss eines USB Sticks und Anschluss des Microcontrollers als HID Gerät. In den STM Demos habe ich aber auch schon Mass Storage Beispiele gefunden (ich glaube im Demopackage für das STM32F4 Discovery Board). Mit den Beispielen etc. sollte das recht gut machbar sein. Guck einfach mal :) Liebe Grüße, Jan
Alexander H. schrieb: > 1. Ich möchte mit einem Controller Binärdaten als Dateien (File-System) > auf eine SD-Karte schreiben. > > 2. Wenn ich das Gerät per USB-Kabel an den PC anschließe, sollen diese > Dateien sichtbar und auf den Rechner kopierbar sein. Warum nicht die SD-Karte in einen PC stecken und direkt auslesen? MfG Klaus
Hallo, das ging ja schnell. @Klaus: das wäre die Alternative. Per USB wäre das Optimum, weil dann die Karte nicht immer aus dem Gerät genommen werden muss mit alldem, was das so mit sich bringt (schlechteres Handling, Verlust etc.). @all Ich hatte schon befürchtet, dass es nicht mal so schnell erledigt ist. Und ich hatte schon an etwas wie einen 8-Bit Controller gedacht, weil der Rest der Schaltung nicht so komplex ist. Gibt es nicht Controller mit USB-Schnittstelle, wo man ansetzten könnte? Die Software, die die Daten später verarbeitet, kommt auch von mir. Vielleicht könnte man ja irgend etwas weniger allgemeines als Mass Storage Device machen, etwas proprietäres quasi? Grüße, Alex
>Die Software, die die Daten später verarbeitet, kommt auch von mir.
Wofür brauchst du dann überhaupt ein FS und USB mass-storage. Da kannst
du die Daten gleich "roh" speichern und dann mit eigenem Protokoll an
deine PC-Applikation senden.
Grüsse
Alexander H. schrieb: > Und ich hatte schon an etwas wie einen 8-Bit Controller gedacht, weil > der Rest der Schaltung nicht so komplex ist. Gibt es nicht Controller > mit USB-Schnittstelle, wo man ansetzten könnte? Gibt es, sogar von ATMEL. Wobei die IMO knausrig bei Flash sind, wo man bei USB schon ein paar KB braucht. Wir haben was ähnliches mal mit einem C8051F340 von Silabs gemacht, das ist ein 8051-kompatibler.
Der Einwand von Gebhard ist gut. Ich könnte die Daten übertragen und mit der Software auf dem Rechner Dateien erzeugen. Hab ich so noch gar nicht gesehen. Da brächte man zwar immer die Software auf dem Rechner, aber das ist, denke ich, verschmerzbar. Grüße, Alex
Dann dürfte schreiben auf einen USB Stick auch eine Option sein. Ich weiß nicht wie viel Zeit du für die Entwicklung der Lösung planst, aber für arbeiten mit einem USB Stick gibt es ein direkt, d.h. in 5min, lauffähiges Projekt: http://mikrocontroller.bplaced.net/wordpress/?page_id=1333 LG Jan
Alexander H. schrieb: > Ich hatte schon befürchtet, dass es nicht mal so schnell erledigt ist. > Und ich hatte schon an etwas wie einen 8-Bit Controller gedacht, weil > der Rest der Schaltung nicht so komplex ist. Gibt es nicht Controller > mit USB-Schnittstelle, wo man ansetzten könnte? Das ist ein Vorurteil. Schau Dir mal den hier an: http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en557425 Der Hardwareaufwand für diesen 28-Pinner ist nicht wesentlich größer als der für einen Atmega8, mit dem Unterschied, dass Du halt 128k Flash und 32k RAM und 50MHz hast anstelle 8K Flash, 0.5K RAM und 16 MHz. Und Hardware USB OTG (also Host UND Device) ist auch drin. fchk
kopfkratz Wenn die Daten NUR von Deinem Gerät via USB in Deine Software müssen, dann kannst Du auch einfach HID nehmen und Dein Gerät z.B. als Scanner/Tastatur o.ä. deklarieren. Wenn's in beide Richtungen gehen soll würde ich mir eher einen SD-Adapter mit Kabel bauen und da Dein Gerät dranhängen. Kartenleser hat inzwischen sogut wie jeder Rechner und die USB-Card-Reader bekommt man ja auch hintergeworfen.
Jan Berg schrieb: > u.a. für den Anschluss eines > USB Sticks und Anschluss des Microcontrollers als HID Gerät. Und in welchem Zusammenhang steht jetzt eine Mensch-Maschienenschnittstelle mit der einfachen geforderten Datenübertragung zu PC?
Roland ... schrieb: > Und in welchem Zusammenhang steht jetzt eine > Mensch-Maschienenschnittstelle mit der einfachen geforderten > Datenübertragung zu PC? Für die Kommunikation mit einem USB-HID-Device brauchst Du keinen Treiber (also keine Treiberinstallation und keine Adminrechte). Es muß natürlich auch kein Mensch-Maschine-Schnittstellen-Gerät sein, sondern heißt nur so :-)
Ja, schon, nur wer nimmt die Daten auf der PC-Seite entgegen? Genau für den treiberlosen Dateinaustausch wurde UMS eingeführt.
Was dir helfen könnte mit einem 8 bit prozessor wäre der Vinculum VNC1L Der kümmert sich um alles und lässt sich per SPI oder UART ansteuern. Schickst ihm ein befehl was du machen Möchtest, Datei Öffnen Schließen Speichern, Datei lesen oder Schreiben und forderst die Daten an. gibts auch Fertig als Modul, da der IC selbst sonst noch eine Firmware bräuchte, wo das Flashen nicht so einfach ist. Such mal bei Ebay Nach Vdrive2 da wirste fündig, falls er nicht zu teuer ist. Guten Rutsch
Es darf nur ein Computer gleichzeitig auf das Speichermedium zugreifen, weil Windows (ebenso wie Linux und Mac OS) nicht für gemeinsamen Zugriff auf ein Speichermedium ausgelegt sind. Also muss sich dein FAT-Treiber des Mikrocontrollers abmelden, sobald der PC angesteckt wird. Und erst wenn der PC wieder ab ist, darf der Mikrocontroller wieder ran. Handies machen das auch so. Manche schalten sich sogar fast komplett aus, sobald der PC das Filesystem mounted. Die Sache mit Zugriff über USB ist also nicht gerade trivial.
Roland ... schrieb: > Ja, schon, nur wer nimmt die Daten auf der PC-Seite entgegen? Genau für > den treiberlosen Dateinaustausch wurde UMS eingeführt. Um das Problem des mehrfahren Zugriffs auf ein Filesystem zu lösen, wurde das Picture Transfer Protocol PTP und die Erweiterung Media Transfer Protocol MTP entwickelt. Viele Kameras, Drucker, Medienplayer etc können dieses Protokoll. Windows hat seit ME einen passenden Klassentreiber dafür. Siehe auch http://www.usb.org/developers/devclass_docs/usb_still_img10.pdf fchk
Vinculum ist mir auch ein Begriff, da werde ich mal noch weiter recherchieren. Ansonsten, denke, ich , werde ich vielleicht doch der Einfachheit halber etwas "eigenes" machen und dann im Rechner die Dateien erzeugen. Ich muss, wie gesagt, eh eine Benutzeranwendung schreiben, da kann ich das mit implementieren. Mir war schon fast klar, dass das keine Projekt ist, dass man mal eben schnell so zusammenzimmert. Nochmal vielen Dank für die vielen hilfreichen Antworten bisher. Grüße, Alex PS.: Frohes Neues Jahr noch Euch allen.
Alexander H. schrieb: > Ansonsten, denke, ich , werde ich vielleicht doch der > Einfachheit halber etwas "eigenes" machen und dann im Rechner die > Dateien erzeugen. Ich muss, wie gesagt, eh eine Benutzeranwendung > schreiben, da kann ich das mit implementieren. Mir war schon fast klar, > dass das keine Projekt ist, dass man mal eben schnell so > zusammenzimmert. Stimmt nicht. Das ist in der Regel mit der richtigen Lib ueberhaupt kein Problem. Ich hatte das mal fuer den MSP430 von TI gemacht. Also SD Speicherkarte am Controller und ueber USB an den PC angeschlossen. Hat sich direkt als Massstorage Device angemeldet und man konnte Problemlos Daten austauschen. Dafuer gibt es von TI kostenlos eine Lib und ein Konfigurationsprogramm fuer die Descriptortabellen. Der eigentliche Programmieraufwand war lediglich ein paar Initfunktionen aufzurufen und ein bisschen Datenschieberei. Aufwand einige Stunden. Solch aenliche Libs sollte es auch von den anderen Herstellern geben. Die wollen ja schliesslich ihre Chips verkaufen.
Ich hätte noch eine Idee: Du Baust einen USB-Kartenleser in dein Gerät ein und Schaltest die Pins der SD-Karte mit einem Multiplexer zwisen uC und kartenleser um.
:
Bearbeitet durch User
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.