Hi Leute,
ich habe mir mit CubeMX ein Projekt zusammengebaut und darin auch den
USB-Host und FatFS eingebunden.
Leider finde ich weder Doku noch vollständige Beispiele, wie man diese
beiden zusammen verwendet.
Wenn ich einen Stick einstecke, wechselt der State des USB-Hosts im
User-Process auf HOST_USER_CONNECTION.
Prinzipiell scheint der Stick also erkannt zu werden.
Wenn ich daraufhin im Main-Loop
Jim M. schrieb:> Das ist auch ein Stick <= 32 GB mit FAT32? Größere Sticks haben mitunter> kein FAT Dateisystem.
doch haben sie, exFat ist für größer Sticks als Standard vorgeschrieben,
Peter II schrieb:> Jim M. schrieb:>> Das ist auch ein Stick <= 32 GB mit FAT32? Größere Sticks haben mitunter>> kein FAT Dateisystem.>> doch haben sie, exFat ist für größer Sticks als Standard vorgeschrieben,
Seit wann ist denn exFat ein FAT Dateisystem? Außer 3 Buchstaben im
Namen haben sie wenig bis nichts gemein.
Hi,
es ist ein Stick <32GB mit FAT. Dieser Stick funktioniert an einem
anderen Gerät mit STM32 mit USB und FatFs einwandfrei.
Da an diesem älteren Gerät aber Probleme mit anderen Sticks auftauchen,
möchte ich den USB-Teil komplett neu aufsetzen und die HAL-Treiber
verwenden.
Bisher scheitere ich.
Michael
Frank M. schrieb:> Seit wann ist denn exFat ein FAT Dateisystem? Außer 3 Buchstaben im> Namen haben sie wenig bis nichts gemein.
naja und der FAT Tabelle.
Peter II schrieb:> doch haben sie, exFat ist für größer Sticks als Standard vorgeschrieben,
Nein, das ist nicht "vorgeschrieben". Microsoft hätte das gerne so, aber
FAT32 lässt sich auch bei deutlich größeren USB-Massenspeichern
verwenden. Auch mit Windows; lediglich das Formatieren bzw. Anlegen der
Partitionen verweigern die Windows-Bordmittel.
Eine Vorschrift von exFAT im Standard gibt es hingegen bei SDXC-Karten,
die müssen damit formatiert sein (so wie SDHC-Karten mit FAT32 und
SD(SC)-Karten mit FAT16 formatiert sein müssen).
Rufus Τ. F. schrieb:> Eine Vorschrift von exFAT im Standard gibt es hingegen bei SDXC-Karten,> die müssen damit formatiert sein (so wie SDHC-Karten mit FAT32 und> SD(SC)-Karten mit FAT16 formatiert sein müssen).
das meinte ich doch
Ich habe inzwischen rausgefunden, dass sich der State in der
User_Process einige Sekunden nach dem Einstecken nochmal ändert auf
HOST_USER_CLASS_SELECTED.
Ich habe versucht, obigen Code erst auszuführen, wenn sich der USB-Host
in diesem State befindet. Das resultiert aber leider im gleichen Fehler.
Ist jemand beim ergoogeln eines Beispiel-Codes erfolgreicher als ich?
Grüße
Michael
Peter II schrieb:> Jim M. schrieb:>> Das ist auch ein Stick <= 32 GB mit FAT32? Größere Sticks haben mitunter>> kein FAT Dateisystem.>> doch haben sie, exFat ist für größer Sticks als Standard vorgeschrieben,
In welchem Standard (Quelle)? Wir reden von USB Sticks, nicht von SD
Karten.
Michael S. schrieb:> dass sich der State in der> User_Process einige Sekunden nach dem Einstecken nochmal ändert auf> HOST_USER_CLASS_SELECTED.
Der Thad ist zwar schon etwas älter, aber vielleicht hilft es trotzdem
jemanden.
Der State HOST_USER_CLASS_SELECTED bedeutet, dass eine gültige
Device-Class gefunden wurde. Anschließend wird aber der "Treiber" für
die jeweilige Klasse vom USB-Stack noch initialisiert. Das kann
teilweise mehrere Sekunden dauern (ich habe einen USB-Stick der ~10
Sekunden braucht).
Erst wenn der State HOST_USER_CLASS_ACTIVE erreicht ist, kann das
USB-Device richtig verwendet werden. Dann sollte auch das Mounten gehen,
wenn du ein gültiges Dateisystem hast.
LG
Eine eigene Frage?
Dieser Thread ist über 11 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.