AVR32 Performance für SD-Karten

Gast #1836166
Lesenswert?
• ▲
▼
Hi!

Ich überlege ob es sich lohnt ein Projekt, das einen UC3A1-Controller
hat, auf einen UC3A3/A4-Controller umzustricken.
Der Grund ist, das der Zugriff über SPI auf die SD-Karte mit dem 
UC3A1-Controller nicht sehr schnell war. Geschwindigkeit war im 
einstelligen
KB/sec-Bereich trotz guter Karte.
Hat einer von euch einen UC3A3/A4 mit dem Multi-Media-Card-Interface und 
dem Memory-Stick-Interace probiert?
Bringt das eine spürbare Steigerung?

Cloud
#1837078
Lesenswert?
• ▲
▼
Hi,

>UC3A1-Controller nicht sehr schnell war. Geschwindigkeit war im
>einstelligen
>KB/sec-Bereich trotz guter Karte.

Hmm? Dann hast du aufjedenfall was flasch gemacht. Ich konnte daten via 
SPI mit bis zu 1,2Mb/sec lesen bei 24Mhz SPI speed.

Ich selber habe auch den UC3A1. Mit dem UC3A3/A4 sollte man sogar 
4MB/sec und mehr schaffen (je nach SD).

Gruß
Zippi
Gast #1837129
Lesenswert?
• ▲
▼
War deine Karte FAT-formatiert?
Wie schnell ist der Schreibzugriff bei dir?

Die Karte verwende ich so:
1
int  
2
SD_Spi_conf =   
3
0 << AVR32_SPI_CSR1_CPOL_OFFSET |                   
4
// Inaktiver Takt ist ow;
5
1 << AVR32_SPI_CSR1_NCPHA_OFFSET |
6
// Aktive Flanke ist 1
7
0  << AVR32_SPI_CSR1_CSNAAT_OFFSET |
8
1 << AVR32_SPI_CSR1_CSAAT_OFFSET |
9
// Deselektiere Baustein _nicht_!
10
0 << AVR32_SPI_CSR1_BITS_OFFSET |   
11
//  8Bit Modus
12
180 << AVR32_SPI_CSR1_SCBR_OFFSET | 
13
// langsamer Takt: 66MHz/180 = 366KHz
14
10 << AVR32_SPI_CSR1_DLYBS_OFFSET |
15
// 11 Wartezyklen, nach fall von Cs
16
10 << AVR32_SPI_CSR1_DLYBCT_OFFSET;
17
//10 Wartezyklen zwischen den Transfers
im Code setzte ich die Geschwindigkeit hoch:
1
.
2
.
3
.
4
nav_reset();
5
nav_drive_set(0);
6
nav_partition_mount();
7
AVR32_SPI1.CSR1.scbr = 10; // Beschleunige SPI-Takt
8
.
9
Bytes = sprintf(file_data,"%.4f, %.2f, %.2f, %.2f, %.2f, %.2f, %.2f, %.2f, %.2f, %s\r\n", a, b, c, d, e, f, g, h, i, s);
10
write(file,file_data,Bytes);
11
.
12
close(file);
13
AVR32_SPI1.CSR1.scbr = 180;
und wieder zurück, falls die Karte entnommen wird.
#1837211
Lesenswert?
• ▲
▼
Hi,

Hab meine eigenen Treiber geschrieben. Meine Karte ist FAT32 formatiert.
Schreiben hab ich noch nicht getestet. Hab mir damals nen Speed 
testprogramm geschrieben.

>AVR32_SPI1.CSR1.scbr = 10;
Mach das auf 4. Das sollte jede SD karte noch schaffen.

>10 << AVR32_SPI_CSR1_DLYBS_OFFSET |
>// 11 Wartezyklen, nach fall von Cs

Ka wie oft CS fällt bei dir. Mach da mal 0 und CS dann via GPIO, kurz 
vor dem trasfare machst du CS auf LOW. Und wenn der Block fertig gelesen 
ist wieder auf High.

>10 << AVR32_SPI_CSR1_DLYBCT_OFFSET;
>//10 Wartezyklen zwischen den Transfers
Da mach auch mal auf 0. Wenn du dazu noch DMA nutzt, dann bringt das 
nochmal ordentlich speed.

Gruß
Zippi
Gast #1837890
Lesenswert?
• ▲
▼
Hi,

der CS fällt nur wenn die Karte gemounted wird und nachdem
alle Schriebzugriffe fertig sind. Soweit ich weiß, muss die Karte neu 
intialisiert werden, wenn CS einmal auf high gegangen ist!?

>Wenn du dazu noch DMA nutzt, dann bringt das
>nochmal ordentlich speed.

Wie kann man die write-Funktion mit einem DMA-Controller laufen lassen?

Cloud
#1837956
Lesenswert?
• ▲
▼
>Wie kann man die write-Funktion mit einem DMA-Controller laufen lassen?

Also die block init ist immernoch gleich, dann bei der schreibe routiene 
wo du die 512byte schreibst, dort musst du den DMA rein machen.

Lies dir mal das Kaptiel im Datenblatt durch. DMA ist eigentlich recht 
simple.

Gruß
Zippi

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.