Forum: Mikrocontroller und Digitale Elektronik stm32f103 mit usb-stick


von grundschüler (Gast)


Lesenswert?

bin mit meinem stm32f103c8 inzwischen relativ weit gekommen. Elm chans 
fat läuft. Ziel soll - u.a. - ein komfortabler MP3+Radio-Player sein.

Jetzt stellt sich die Frage nach dem Speichermedium - sd-Karte oder 
usb-Stick.

USB-Stick wäre besser, weil er eben universal an jedem PC beschrieben 
und gelesen werden kann. Geht mit sd zwar im Prinzip auch, meine 
Leseadapter fallen aber immer nach kurzem Gebrauch aus. Also lieber USB.

Elm Chan ist für sd Standard, der relativ sicher funktioniert. Gibt es 
vergleichbares für den Anschluss von USB-Sticks an arms?

Kann jemand eine brauchbare Bibliothek für die MP3-Dateiverwaltung 
empfehlen, die einfach implementiert werden kann?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Da der Controller keinen USB-Host-Controller enthält, kannst Du keinen 
USB-Stick oder andere USB-Geräte daran betrieben.

von grundschüler (Gast)


Lesenswert?

danke für die schnelle Antwort. Hat er den wirklich nicht?

STM32F102/103
Cortex
-
M3
1x USB 2.0 FS
device
controller

von Dr. Sommer (Gast)


Lesenswert?

STM32F102/103
Cortex
-
M3
1x USB 2.0 FS
device
controller

Steht dort device oder host?

von W.S. (Gast)


Lesenswert?

Dr. Sommer schrieb:
> Steht dort..

Dir ist klar, daß hier jemand was zum Zusammenklicken sucht, gelle?

W.S.

von Dr. Sommer (Gast)


Lesenswert?

W.S. schrieb:
> Dir ist klar, daß hier jemand was zum Zusammenklicken sucht, gelle?
Klar, aber ein USB-Host zum Zusammenklicken existiert wohl kaum für 
einen Controller, der keine USB-Host-Hardware hat.

Der OP könnte auch z.B. auf einen STM32F4 umsteigen welcher einen 
USB-Host hat. Oder z.B. das STM32F7 Discovery verwenden, welches sowohl 
einen SD-Slot (mit SD bus => schnell), einen USB-OTG (also auch 
Host-fähigen) USB-Anschluss, und ein großes Display hat. Ist aber ggf. 
etwas unhandlich als MP3-Player.

von W.S. (Gast)


Lesenswert?

Dr. Sommer schrieb:
> Der OP könnte auch z.B. ...

Klar, er könnte auch was Anderes machen.

Ich sehe hier immer wieder Leute jammernd aufschlagen, die sich große 
Projekte vorgenommen haben, ohne auch nur im Geringsten die Basics zu 
verstehen.

Wenn man denen dann sagt, sie mögen sich doch bittesehr erstmal 
einarbeiten, z.B. durch Lesen und Verstehen, dann wird man böse 
angegiftet.

Gilt übrigens auch für dich. Ich hatte damals versucht, aus nem 
Ramschteil ein billiges und benutzbares Evalboard zu machen, das sogar 
noch ne nette Peripherie hat. Entsinnst du dich an deine 'Beiträge' 
dazu? Ja? Nun, seitdem hat ST die Szene erfolgreich mit Boards 
zugeschüttet und man sollte meinen daß dies zu mehr Können unter den 
Leuten geführt hätte, aber die Jammerbeiträge hier sind geblieben. Und 
jetzt sucht jemand an seinem Dreirad nen USB-Host, ohne zu wissen, daß 
es sowas überhaupt gibt. Klasse!

Ich kann mich noch an einen Cheffe-Spruch erinnern, den ich zu 
Windows98-Zeiten mir anhören mußte: "Was kann denn an diesem USB so 
schwer sein? Sind doch nur zwei Leitungen!"

Genau!

W.S.

von grundschüler (Gast)


Lesenswert?

Was solls,
http://www.ebay.de/itm/272501793801 soeben gekauft - damit müsste es 
dann gehen.

Der unterschied Host/Device scheint nicht ganz einfach zu sein. Trotzdem 
die Frage, was kann man mit dem USB-Device-Controller des f103c8 denn 
dann anfangen?

W.S. schrieb:
> Dir ist klar, daß hier jemand was zum Zusammenklicken sucht, gelle?

Ingenieurstätigkeit ist im Prinzip Arbeitsvermeidung. Ich klicke 
zusammen, wenn mir das Ergebnis ausreichend erscheint. Ich programmiere 
selber, wenn das schneller geht oder wenn ich gewünschte Ergebnisse 
sonst nicht erreichen kann.

Zumindest bei einer Fat-library ist die Lebenszeit zu kurz um die selber 
zu schreiben.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

grundschüler schrieb:
> Trotzdem die Frage, was kann man mit dem USB-Device-Controller des
> f103c8 denn dann anfangen?

Ein USB-Device (Gerät) bauen, das an einen USB-Host (z.B. Deinem PC) 
angeschlossen werden kann.

von Jim M. (turboj)


Lesenswert?

grundschüler schrieb:
> Elm Chan ist für sd Standard, der relativ sicher funktioniert. Gibt es
> vergleichbares für den Anschluss von USB-Sticks an arms?

Nein, da es auf den jeweiligen USB Host angepasst sein müsste. Und 
USBSticks >32 GB haben kein FAT32, was den Anschluss an einen µC 
behindert. NTFS will man nich auf einem µC implementieren.

SD Karten sind um Größenordnungen einfacher zu bedienen...

von Dr. Sommer (Gast)


Lesenswert?

W.S. schrieb:
> Wenn man denen dann sagt, sie mögen sich doch bittesehr erstmal
> einarbeiten, z.B. durch Lesen und Verstehen, dann wird man böse
> angegiftet.

Wer hat dich böse angegiftet?

W.S. schrieb:
> Ich sehe hier immer wieder Leute jammernd aufschlagen, die sich große
> Projekte vorgenommen haben, ohne auch nur im Geringsten die Basics zu
> verstehen.
Ja schön. Behalte deine üblichen Anfeindungen deswegen doch einfach für 
dich.

W.S. schrieb:
> Gilt übrigens auch für dich.
Vielleicht hast du ja den Sinn eines Forums nicht verstanden.

W.S. schrieb:
> Entsinnst du dich an deine 'Beiträge'
> dazu?
Klar, nur du hast ja anscheinend nix draus gelernt...

W.S. schrieb:
> aber die Jammerbeiträge hier sind geblieben.
Niemand hat hier gejammert. Nur du fängst direkt wieder mit Stänkern an.

grundschüler schrieb:
> Der unterschied Host/Device scheint nicht ganz einfach zu sein. Trotzdem
> die Frage, was kann man mit dem USB-Device-Controller des f103c8 denn
> dann anfangen?
Deine eigenen USB-Geräte bauen, also z.B. dass der STM32F103 selbst als 
USB-Stick oder -Maus oder -Tastatur usw. erkannt wird.

grundschüler schrieb:
> Zumindest bei einer Fat-library ist die Lebenszeit zu kurz um die selber
> zu schreiben.
Och, ist eigentlich ganz interessant.

von Johannes S. (Gast)


Lesenswert?

Es ist natürlich unverschämt solche Fragen zu stellen, den Unterschied 
zwischen USB Host und Device bekommt man doch schon in die Wiege gelegt! 
Und wie man das nackig in Assembler programmiert nachdem man das 
Datenblatt überflogen hat noch dazu.

von grundschüler (Gast)


Angehängte Dateien:

Lesenswert?

Es geht mir im Prinzip um so eine Art USB-Stick-Wechsler. Das ganze 
funktioniert derzeit ganz gut mit Einzel-Mp3-Modulen. Was fehlt ist eine 
komfortable Dateiverwaltung sowie die Anzeige von MP3-Informationen. Der 
Zugriff auf die Module wird nicht möglich sein.

Gibt es evtl. fertige Module, die den Zugriff auf USB-Sticks 
ermöglichen?  Ich verwende nur 8GB-Sticks weil ich bei größeren viele 
Ausfälle hatte.

Was noch möglich wäre, statt USB-Sticks gleich eine Festplatte zu 
nehmen. Da wäre dann wohl ein M3/M4 eher ungeeignet?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Jim M. schrieb:
> Und USBSticks >32 GB haben kein FAT32, was den Anschluss an einen µC
> behindert.

Das sieht, wenn man es pedantisch sieht, bei SD-Karten exakt genauso 
aus.

Bei SD-Karten (genauer: SDXC-Karten) ist in der Spezifikation das 
Dateisystem exFAT vorgeschrieben, bei USB-Sticks hingegen hindert einen 
nur das windows-eigene Formatierungsprogramm, mehr als 32 GB mit FAT32 
zu nutzen. Da gibt es keine Spezifikation, die irgendetwas anderes 
vorschreibt.

Sofern man sie mit einem anderen Programm (oder unter einem anderen 
Betriebssystem) formatiert, können USB-Sticks oder auch USB-Festplatten 
noch jenseits der 2-TB-Größe mit FAT32 verwendet werden.

von grundschüler (Gast)


Lesenswert?

suche bei ebay nach arduino hilft weiter:
http://www.ebay.de/itm/ADK-USB-HUB-USB-Host-Shield-for-Arduino-UNO-MEGA-2560-Support-Google-Android-/172377833566?hash=item282285005e:g:jq8AAOSwmLlYBF8M

Es gibt also host-module, die per AVR/ARM angesprochen werden können. 
Fehlt nur noch die passende software.

von Johannes S. (Gast)


Lesenswert?

U.B. hat auf seiner Seite so ein MP3 Projekt: 
http://mikrocontroller.bplaced.net/wordpress/?page_id=2272
Das setzt allerdings wie schon vorher geschrieben einen µC mit Host 
Controller voraus, hier wird ein STM32F4 Disco Board benutzt.

von grundschüler (Gast)


Lesenswert?

Johannes S. schrieb:
> U.B. hat auf seiner Seite so ein MP3 Projekt:

> Die MP3 Files müssen alle in einem Ordner auf dem USB-Stick gespeichert sein.

Mir gehts um Komfort. Bei fat-sd ist die Auswahl verschiedener 
Dateiverzeichnisse relativ problemlos möglich. Das müsste bei usb-sticks 
auch gehen.

https://www.circuitsathome.com/mcu/mass-storage-support-for-usb-host-library-2-0-released/
könnte passen. das arduino-shield basiert auf einem MAX3421E.

von Johannes S. (Gast)


Lesenswert?

Sieht interessant aus, aber so nennt man glaube ich auch Frauen die 
nicht so hübsch sind... Also für Komfort würde ich mir die nächsthöhere 
Liga mit Cortex-A und sowas wie NanoPi ansehen. Aber wenn du deinen F103 
weiterverwenden willst müsste das mit dem MAX gehen.

von grundschüler (Gast)


Lesenswert?

Johannes S. schrieb:
> NanoPi

Wenns dafür Software gäbe, wäre der ideal.

von Johannes S. (Gast)


Lesenswert?

grundschüler schrieb:
> Wenns dafür Software gäbe, wäre der ideal.

dafür gibt es Linux Images und z.B. mplayer. 'Schwierig' ist es 
vielleicht nur wenn es mplayer nicht für diese Plattform fertig 
kompiliert gibt, ansonsten ist das eine Sache von wenigen Minuten. 
Jedenfalls nach meinen Erfahrungen mit einem RaspberryPi.

von grundschüler (Gast)


Angehängte Dateien:

Lesenswert?

hier mal der Teil zur Auswahl des Directorys mit der Bitte um - 
wohlmeinende - Anregungen.

von Adapter (Gast)


Lesenswert?

Hallo,

ich habe diesen thread mal wieder aufgemacht, weil er dem am nächsten 
kommt, was ich suche...

Für einen Kunden soll in ein bestehendes System (STM32F4xx auf FreeRTOS 
Basis) an das USB OTG Interface ein USB stick (ausschliesslich) 
angeschlossen werden.

Ich habe mal mit den Cube libaries experimentiert. Es sieht so aus, als 
ob die unter dem typischen ST Beispielcode Problem leiden (also nur ganz 
genau das Minimum implementieren, mit dem das Beispiel läuft, von 
Randbedingungen oder Dauerstabilitätstest brauchen wir da gar nicht erst 
anfangen zu reden).

Hat Jemand 1. Hand (positive oder negative) Erfahrungen mit Anderen 
Libraries oder Middlewaresuiten - ausdrücklich und gerne auch 
kommerzielle Produkte? Ggf. wende ich mich auch gerne per PM an Leute, 
die das nicht öffentlich diskutieren möchten.

Schönen Dank!

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Uwe B. hat erfolgreich Libraries für STM32F4 erstellt, die 
funktionieren:
http://mikrocontroller.bplaced.net/wordpress/?page_id=6

von Adapter (Gast)


Lesenswert?

Matthias S. schrieb:
> Uwe B. hat erfolgreich Libraries für STM32F4 erstellt, die
> funktionieren:
> http://mikrocontroller.bplaced.net/wordpress/?page_id=6

Schönen Dank für den Tipp. Ich habe es mir mal angesehen. Allerdings ist 
der Code ein Super Beispiel dafür, warum man in Anwendungen, die 
wirklich ins Feld gehen sollen, besser auf professionell entwickelte 
Produkte zurückgreifen sollte...

Nach dem Zusammenstellen der Codebasis und Erstellen und Downloaden 
eines lauffähigen Images (ging sogar relativ flott, und Probleme dabei 
sind nicht dem Uwe anzulasten!) passierte... nichts. Kein IRQ, keine 
Zustandsänderung... die Anwendung läuft zwar (also kein Fault, 
Breakpoint o.ä.), aber es passiert halt absolut nichts.

Gut, so ist das Leben, und es ist ja unser Job, mit so etwas fertig zu 
werden. Also Breakpoint auf UB_USB_MSC_HOST_Init(), Durchsteppen...

und schon da ist ein Riesenproblem. Es gibt keinerlei Fehlerbehandlung; 
die Init Funktion ruft nacheinander die relevanten 
Modulinitialisierungen auf... aber es wird kein einziger Test gemacht. 
Selbst bei Funktionen, die formal einen Statusreturn zurückgeben (das 
aber meistens noch nicht mal tun, also es wird ein lokale Variable auf 
ok gesetzt, nicht mehr angerührt und einfach so wieder zurückgegeben) 
wird dieser nicht abgeprüft. Weder beim Durchsteppen noch (schlimmer) 
später im Feld gibt es also irgendeine Chance, Fehler herauszufinden, zu 
melden oder zu recovern, geschweige denn einen Hinweis darauf zu finden, 
wo es klemmt. Kardinalfehler!

Aber gut, wie gesagt, es ist nett vom Uwe, seinen Code zur Verfügung zu 
stellen, und von Nichts darf man auch Nichts erwarten. Wir evaluieren 
z.Zt. kommerzielle Produkte, da darf man auch Fragen stellen und 
kompetente Antworten erwarten und entlohnt wenigstens geleistete Arbeit.

Hat vielleicht sonst Jemand Erfahrungen mit (wie gesagt gerne auch 
kommerziellen) Alternativen?

Danke schön!

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Adapter schrieb:
> und schon da ist ein Riesenproblem.

Die Programm-Module von Uwe können sehr hilfreich bei der Entwicklung 
eigener Software sein, denn sie weisen einem den richtigen Weg, wie 
man eine bestimmte Aufgabenstellung lösen könnte. Auch ich habe von Uwes 
bereitgestellten Sources viel lernen können.

Ich sehe Uwes Software aber nicht als "ready-to-use". Er selbst schreibt 
auch irgendwo auf seiner Seite, dass man den Optimizer ausschalten 
müsse, sonst könnten einige seiner Programm-Module nicht richtig 
funktionieren. Damit schiebt er bestimmte Probleme mit der Software auf 
einen augenscheinlich defekten gcc-Optimizer.

Das ist aber nicht richtig, denn in Wirklichkeit ist die Software 
einfach nur lax programmiert. Es hapert nicht nur an einer fehlenden 
Fehlerbehandlung, die Du angesprochen hast. Uwe vergisst auch oft, 
Variablen als volatile zu definieren, wenn sie in ISRs benutzt werden. 
Dann ist es kein Wunder, dass mit eingeschaltetem Optimizer das Programm 
nicht mehr funktioniert. Als ich ihn mal darauf angesprochen habe, dass 
hier und dort das Wörtchen volatile fehlen würde, kam die Antwort: "Mag 
sein" (oder so ähnlich). Meiner Erinnerung nach hat er den von mir 
angesprochenen Bug im Programm auch nicht danach gefixt, denn: es läuft 
ja!

Uwe scheint nicht sehr daran interessiert zu sein, möglichst fehlerfreie 
Software bereitzustellen, sondern eher Software, die (mit viel Glück) 
gerade so läuft. Dass es viel sinnvoller ist, den Optimizer immer 
einzuschalten, um eigene Fehler im Programm zu finden, scheint er nicht 
zu verstehen.

Mein Fazit:

Man kann sich gern die Methoden zur Aufgabenlösung abschauen, dafür ist 
seine Programmbibliothek sehr wertvoll und dafür bin ich Uwe auch 
dankbar. Aber ich würde keine einzige Zeile von ihm einfach übernehmen. 
Hier ist selbermachen angesagt.

> Hat vielleicht sonst Jemand Erfahrungen mit (wie gesagt gerne
> auch kommerziellen) Alternativen?

Ich weiß nicht, was Du überhaupt willst. Software-Module 
zusammenkopieren, ohne sie verstehen zu wollen oder doch eigene Software 
zu entwickeln? Wenn letzteres, würde ich da an Eurer Stelle auch alles 
von A-Z allein entwickeln. Nichts ist frustrierender, als sich mit einem 
Bug in einer Fremdsoftware herumschlagen zu müssen.

von Adapter (Gast)


Lesenswert?

Frank M. schrieb:
> Adapter schrieb:
>> und schon da ist ein Riesenproblem.
>
>
>> Hat vielleicht sonst Jemand Erfahrungen mit (wie gesagt gerne
>> auch kommerziellen) Alternativen?
>
> Ich weiß nicht, was Du überhaupt willst. Software-Module
> zusammenkopieren, ohne sie verstehen zu wollen oder doch eigene Software
> zu entwickeln? Wenn letzteres, würde ich da an Eurer Stelle auch alles
> von A-Z allein entwickeln. Nichts ist frustrierender, als sich mit einem
> Bug in einer Fremdsoftware herumschlagen zu müssen.

...tja, die Frage kannst Du Dir vermutlich selber beantworten:

Der KUNDE will etwas funktionierendes, und zwar möglichst schnell und 
möglichst kostengünstig*. Er braucht dazu eine Gesamtlösung, d.h. sowohl 
die zugrunde liegende Kommunikationsinfrastruktur als auch die 
Anwendungssoftware oben drüber. Die zweitere  MUSS logischerweise 
anwendungsspezifisch entwickelt werden; das Erstere muss "nur irgendwie 
tun," ich könnte also selber die Ärmel aufkrempeln oder auf einer 
beliebigen Skala von 1-x die Anpassungsarbeit zwischen mir und dem 
Supplier teilen.

ICH als der Umsetzende bin da logischerweise etwas in der Zwickmühle; 
als in der Technik (auch low level) bewanderter Entwickler will auf der 
einen Seite möglichst viel darüber verstehen und damit möglichst guten 
Gewissens zu meiner Lösung stehen können, kann aber auf der Anderen 
Seite eine Von Null Entwicklung auch nicht rechtfertigen (weil dann noch 
die Kinderkrankheiten raus müssen, gerade bei USB jedes Device etwas 
Anders reagiert etc pp). In sofern halte ich die Lösung, die "untere 
Schicht" von Jemand einzukaufen, der da bereits Erfahrung hat, für den 
besten Weg. Ich rechne dabei einen gewissen Grad von Eigenarbeit ein - 
das ist mir auch wichtig und macht Spass, den unterliegenden 
Protokollstack besser zu durchschauen.

Ich mache die Entwicklung von Kommunikationssystemen jetzt schon sehr 
sehr lange und habe praktisch jede Kombination schon durchgemacht, z.B. 
TCP/IP stacks selber adaptiert und debuggt, Middleware von 
Drittherstellern durch die Kinderkrankheiten durchgetract und mitdebuggt 
oder versucht, ein PD File System zum Laufen zu kriegen. Die Zeiten, wo 
man jedes einzelne Byte seiner Firmware selber kennt, sind aber leider 
vorbei. Bei manchen Komponenten muss man sich halt darauf verlassen 
können, dass sie es tun (ist in Embedded noch nicht so wie bei Android, 
wo man praktisch nur noch gegen black boxen schafft). Spätestens beim 
Thema Sicherheit ist z.B. bei Netzwerkstacks die Grenze dessen, was in 
Eigenarbeit sinnvoll machbar ist, schnell erreicht.

Davon abgesehen bricht der Markt für Firmen ständig und brutal weg, die 
versuchen, mit Spezialwissen im Middlewarebereich Geld zu machen. Ich 
finde das nicht gut und denke, dass es im Interesse von stabilen und 
guten Gesamtsystemen und -architekturen sein sollte, Firmen in Lohn und 
Brot zu halten, die die Falltüren und Stolpersteine schon kennen und 
umgehen können, in die ich sonst bei einer Eigenentwicklung treten 
würde.

* Bevor hier ideologische Diskussionen losgehen: Ich habe damit kein 
Problem und versuche diese Anforderung auch so gut wie möglich 
umzusetzen. Der Kunde ist auch aboslut ok in der Richtung, dass er 
versteht, dass es P&P eigentlich nicht gibt und ist bereit zu bezahlen, 
was nötig ist, um ein feldtaugliches System verkaufen zu können. Ist 
halt ein gegenseitiges Vertrauensverhältnis zwischen uns.

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.