Forum: Mikrocontroller und Digitale Elektronik SD Karte mit uC beschreiben und dann mit Rechner auslesen


von Alexander H. (ill_son)


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

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

2. Du musst ein MassStoregeDevice erstellen. Demos gibt es sicher 
irgendwo im Netz, passend zu Deinem µC.

: Bearbeitet durch User
von Roland .. (rowland)


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.

von Jan B. (berge)


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

von Klaus (Gast)


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

von Alexander H. (ill_son)


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

von Gebhard R. (Firma: Raich Gerätebau & Entwicklung) (geb)


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

von Jim M. (turboj)


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.

von mrx (Gast)


Lesenswert?


von Alexander H. (ill_son)


Lesenswert?

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

von Jan B. (berge)


Lesenswert?

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

von Frank K. (fchk)


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

von kopfkratzer (Gast)


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.

von Roland .. (rowland)


Lesenswert?

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?

von Dauergast (Gast)


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

von Roland .. (rowland)


Lesenswert?

Ja, schon, nur wer nimmt die Daten auf der PC-Seite entgegen? Genau für 
den treiberlosen Dateinaustausch wurde UMS eingeführt.

von Dennis R. (dennis_ec) Flattr this


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

von Stefanus (Gast)


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.

von Frank K. (fchk)


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

von Alexander H. (ill_son)


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.

von Helmut L. (helmi1)


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.

von Max H. (hartl192)


Lesenswert?

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
Noch kein Account? Hier anmelden.