Vielleicht hatte schon mal jemand ein ähnliches Problem: SD-Karten sind bei uns auf Baugruppen eingesetzt. Sie enthalten Konfigurationsdaten oder werden im Zusammenhang mit dem Sammeln von Daten (Datenlogger) benutzt. Dabei werden die SD-Karten binär beschrieben - ohne Dateisystem. Sie werden also wie ein Flash-Speicher verwendet. Zum Beschreiben und Auslesen wird über SPI zugegriffen. Es funktioniert soweit auch gut. Wenn allerdings die Daten über USB in einen PC eingelesen werden sollen, dann geht dies nur byteweise. Also in einer Schleife bei der pro Durchgang ein Byte gelesen wird. Das funktioniert sehr gut - ist aber langsam. Ich habe versucht zwei Byte gleichzeitig auszulesen - also statt 8 Taktzyklen des SPI-CLock 16 Taktzyklen verwendet. Auch 24 und 32 Zyklen habe ich bereits versucht. Allerdings kamen die Daten dann mit Lücken. Das erste Byte wird richtig gelesen, dann kommt ein Byte oder mehrere Bytes mit Nullen, dann kommt das zweite richtige Byte usw. Bisher habe ich dafür keine Erklärung gefunden. Eigentlich müsse es möglich sein mehrere Bytes auf einmal auszulesen. Nur dann kann man auch die üblichen Datendurchsätze erreichen. Hat vielleicht schon jemand dieses Problem gehabt und gelöst? Viele Grüße Franz Peter Zantis
was spricht denn dagegen die SD Karte im PC im normalen Reader einfach Sektorweise auszulesen?
Franz Peter Zantis schrieb: > Ich habe versucht zwei Byte gleichzeitig auszulesen - also statt 8 > Taktzyklen des SPI-CLock 16 Taktzyklen verwendet. Auch 24 und 32 Zyklen > habe ich bereits versucht. Allerdings kamen die Daten dann mit Lücken. Hallo, hier steht was zum Thema: http://elm-chan.org/docs/mmc/mmc_e.html Gruß Klaus
Franz Peter Zantis schrieb: > Es funktioniert soweit auch gut. Wenn allerdings die Daten über USB in > einen PC eingelesen werden sollen, dann geht dies nur byteweise. Also in > einer Schleife bei der pro Durchgang ein Byte gelesen wird. Das > funktioniert sehr gut - ist aber langsam. > Ich habe versucht zwei Byte gleichzeitig auszulesen - also statt 8 > Taktzyklen des SPI-CLock 16 Taktzyklen verwendet. Auch 24 und 32 Zyklen > habe ich bereits versucht. Das verstehe ich nicht. Wenn du sie auf dem PC "über USB" einliest, was hast du dann mit irgendwelchen SPI-Clocks am Hut?
Franz Peter Zantis schrieb: > Es funktioniert soweit auch gut. Wenn allerdings die Daten über USB in > einen PC eingelesen werden sollen, dann geht dies nur byteweise. Also in > einer Schleife bei der pro Durchgang ein Byte gelesen wird. Das > funktioniert sehr gut - ist aber langsam. Was ist langsam? USB 1.1 Full Speed erlaubt netto ca. 1,0 MByte/sec. Das habe ich IIRC aber nur mit >= 48 MHz Basistakt der CPU geschafft. Franz Peter Zantis schrieb: > Ich habe versucht zwei Byte gleichzeitig auszulesen - also statt 8 > Taktzyklen des SPI-CLock 16 Taktzyklen verwendet. Auch 24 und 32 Zyklen > habe ich bereits versucht. Allerdings kamen die Daten dann mit Lücken. > Das erste Byte wird richtig gelesen, dann kommt ein Byte oder mehrere > Bytes mit Nullen, dann kommt das zweite richtige Byte usw. > Bisher habe ich dafür keine Erklärung gefunden. Eventuell falsche Byte Order. In meinen 16Bit SD SPI Routinen für Cortex M3 (Little Endian) ist jeweils ein Rev16 drin, dass die Byte Reihenfolge auf Big Endian tauscht. Schau Dir mal die Bytes genau an, das könnte auch Dein Problem sein. SPI sendet das MSB zuerst und ist damit bei Transfers >1 Byte immer Big Endian.
Franz Peter Zantis schrieb: > Eigentlich müsse es möglich sein mehrere Bytes auf einmal auszulesen. > Nur dann kann man auch die üblichen Datendurchsätze erreichen. > Hat vielleicht schon jemand dieses Problem gehabt und gelöst? Du möchtest jetzt einfach deine SD-Karte am PC auslesen? Wenn ja, dann lese deine SD-Karte mit dd aus. Wenn du die Daten vom Controller auslesen möchtest und sie dann per µC über USB an den PC senden möchtest, dann lese 512Byte (immer ein Sektor) aus der SD-Karte aus und schicke die Daten dann an den PC. Mit den Xmega kann man glaube ich 512Byte in einem Paket versenden, aber man kann ja auch in mehrere Pakete spliten und versenden. Da gibt es extra so ein Mass-Storage-Option für die USB-Kommunikation.
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.