Hi, ich möchte gerne eine SD Karte mit einem PIC32 via SPI lesen und schreiben. Der PIC32 bietet an die SPI Übertragungen in 32Bit "Paketen" zu organisieren was für hohe Datenraten bestimmt von Vorteil ist. Die Alternative wäre es die Übertragungen in 8Bit "Paketen" zu organisieren, was jedoch auch dazu führt das ich mich 4 mal ums nachladen von SPI Daten kümmern muss. 32Bit wären also mein Favorit was die Übertragung angeht, aber... Die SD Karten werden ja durch Kommandos gesteuert welche 6Byte lang sind, danach muss ich auf eine Antwort der SD Karte warten und hin und wieder ein paar Bytes zur SD schicken damit ich dann irgendwann die Antwort bekomme. Wann diese Antwort kommt hängt allerdings von dem Kommando ab. Mein Problem ist nun: Sind die Antworten von der SD Karte in auch in 32Byte Paketen organisiert so dass ich davon ausgehen kann das sich das Antwort Byte z.B. in den Bits7 - 0 der 32Bit Übertragungen zu finden sind, oder muss ich damit rechnen dass die Antwort jedesmal an einer anderen stelle in den 32Bit Paketen zu finden ist ?? Ich habe hier 2 Karten die beim senden eines 6 Byte Kommandos nach 2 weiteren Bytes die Antwort senden. Das spricht für eine 32Bit organisation in den Karten. Hat jemand die Möglichkeit das bei sich auch mal zu testen ?? würde mich brennend interessieren.
>Mein Problem ist nun: Sind die Antworten von der SD Karte in auch in >32Byte Paketen organisiert Nein.
holger schrieb: >>Mein Problem ist nun: Sind die Antworten von der SD Karte in auch in >>32Byte Paketen organisiert > > Nein. Aber: Es gibt eine Stelle beim Lesen oder Schreiben, ab der genau 512 Byte (= ein Sektor) übertragen wird. Dort und nur dort könnte man im 32-Bit Modus arbeiten, d.h. umschalten auf 32 Bit, die 512 Byte übertragen und dann wieder zurück schalten. Ähnlich mache ich das mit dem 16-Bit SSP des LPC1768. Achtung: Die Wörter müssen eventuell auf Big Endian gewandelt werden.
>>>Mein Problem ist nun: Sind die Antworten von der SD Karte in auch in >>>32Byte Paketen organisiert >> >> Nein. > >Aber: Es gibt eine Stelle beim Lesen oder Schreiben, ab der genau 512 >Byte (= ein Sektor) übertragen wird. Dort und nur dort könnte man im >32-Bit Modus arbeiten, d.h. umschalten auf 32 Bit, die 512 Byte >übertragen und dann wieder zurück schalten. Das ist natürlich richtig und auch sinnvoll. Optimieren lohnt sich sowieso nur da wo der grösste Datendurchsatz gemacht wird. Beim Kommando oder beim pollen auf die Response lohnt das nicht. Das ist im Vergleich zu den 512 Datenbytes nur noch pillepalle und bringt gar nichts.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.