Forum: Mikrocontroller und Digitale Elektronik PIC32 Daten auf USB-Stick schreiben -> sehr langsam


von Cyberfuzzy (Gast)


Lesenswert?

Hallo,

ich bin dabei mit einem PIC32, Daten auf einen USB-Stick zu schreiben. 
Dazu verwende ich das fertige Programm von Microchip: „USB Host - Mass 
Storage - Simple Demo“ aus den „Microchip Applications Libraries“ mit 
einem PIC32MX795F512L. Ich schaffe es jedoch nicht, die Daten mit einer 
vernünftigen Geschwindigkeit auf den Stick zu schreiben. Die Datenrate 
liegt immer nur bei ca. 40 - 70 KB/s. Damit schaffe ich also nicht mal 
den Low-Speed USB-Standard. Allerdings ging ich davon aus, dass der 
Mikrocontroller den Full-Speed Standard (1,5 MB/s) schafft. Am USB-Stick 
liegt es jedenfalls nicht. Am normalen PC schafft der auch hohe 
Geschwindigkeiten.

Hier ist ein Ausschnitt aus meiner Test-Routine, die ich im fertigen 
Projekt „USB Host - Mass Storage - Simple Demo“ integriert habe, um eine 
Textdatei mit 1 MB auf den USB-Stick zu schreiben:

//****************************
//Anfang Test: Datei schreiben
//Bei Tastendruck geht LED1 an und die Daten werden auf den USB-Stick 
geschrieben
//Wenn LED1 aus geht, ist der Schreibvorgang beendet
//****************************
int bytes = 1024*4; //4 KB (4096 Byte)
char mb[bytes]; //String für 4096 Zeichen
int a; //Zählvariable
for(a=0; a<bytes ;a++)
{
                mb[a] = '0'; //String mit Nullen füllen
}

mPORTGClearBits(BIT_13); //LED1 off

do //warten bis Taster gedrückt wurde
{
                tasten = PORTG & 0x1000; //Tasten einlesen
} while(tasten);
mPORTGSetBits(BIT_13); //LED1 on

for(a=0; a<256; a++) //256 * 4 kb = 1 MB
{
                FSfwrite(mb,1,bytes,myFile); //Daten auf USB-Stick 
schreiben
}
//**************************
//Ende Test: Datei schreiben
//**************************


Die Dauer um 1 MB zu schreiben messe ich also ungefähr mit der LED. Auf 
Tastendruck gehts los, wenn die LED aus geht, ist der Schreibvorgang 
beendet. Das dauert bei mir immer so ca. 14 – 15 Sekunden.

Jetzt meine Frage:
Sind die Einstellungen im Projekt „USB Host - Mass Storage - Simple 
Demo“ nicht für hohe Datenraten optimiert? Falls ja –was kann ich da 
ändern? Oder schafft der PIC32MX795F512L tatsächlich nicht mehr?

Vielen Dank schonmal für eure Hilfe!

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.