Gast
#2939075
Hallo, ich versuche gerade, das Filesystem FatFs auf einem PIC32 mit SD-Kartenslot zum Laufen zu bringen. Leider hat der PIC kein natives SD-Karten Interface, so bin ich auf SPI angewiesen. Um das Ganze etwas schneller zu machen, lese ich die Daten in 32-bit Häppchen aus:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
Leider funktioniert es nicht, fatFS erkennt ein ungültiges Dateisystem. Der Grund liegt darin, dass die Bytes im Speicher "verwürfelt" abgelegt werden: Wenn SPI2BUF zB. 0x12345678 enthält, gelangt beim Abspeichern 0x78 an die erste, 0x12 an die 4te Stelle. Der PIC ist schliesslich eine Little-Endian-Maschine. Alle Beispielroutinen verwenden SPI im 8bit Modus, was aber zu einer schlechten Performance führt, da das Abspeichern der Werte längert dauert als der Empfang eines Bytes. Im Oszillogramm ist das als "Lücke" im SPI-Taktsignal sichtbar. Gibt es eine einfache Möglichkeit, die Bytereihenfolge zu ändern? Im Datenblatt habe ich nichts dazu gefunden. Manuelles "Auseinanderpfriemeln" würde wahrscheinlich wieder die Übertragungsgeschwindigkeit in den Keller gehen lassen. DMA habe ich auch schon versucht, aber keine Methode gefunden, die SPI-Übertragung nach jedem empfangenen Datenwort automatisch wieder zu starten. Mike