SD Karte mit uC beschreiben und dann mit Rechner auslesen

OP #3465629
Lesenswert?

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
#3465664
Lesenswert?

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.
#3465695
Lesenswert?

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
Gast #3465696
Lesenswert?

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
OP #3465721
Lesenswert?

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
(Firma: Raich Gerätebau & Entwicklung) #3465736
Lesenswert?

>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
#3465749
Lesenswert?

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.
#3466086
Lesenswert?

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
Gast #3466095
Lesenswert?

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.
Gast #3466111
Lesenswert?

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 :-)
#3466137
Lesenswert?

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
Gast #3466143
Lesenswert?

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.
#3466152
Lesenswert?

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
OP #3466288
Lesenswert?

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.
#3466299
Lesenswert?

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.

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