STM32 SRAM Timings

OP #4493786
Lesenswert?

Hallo Ihr,

Ich habe einen STM32F43X mit einem externen SRAM.
Die Ansteuerung funktioniert wie gewünscht. Ich kann den Speicherbereich 
des SRAMs innerhalb der Memory Bank des STM32F4 benutzen.

Jedoch mag ich zu bezweifeln, dass ich das Themengebiet vollständig 
verstanden habe, was die Timings und eventuell die Einstellungen angeht.

Ich habe den SRAM CY7C1051DV33: 
http://www.cypress.com/file/42786/download
Das Referenzhandbuch vom STM32F4xx findet ihr hier: 
http://www.st.com/web/en/resource/technical/document/reference_manual/DM00031020.pdf. 
Ab Seite 1589 wird es für diese Frage interessant. ;)

Was ich nicht ganz verstehe, ist die Zeiten des SRAM richtig zu 
konfigurieren.

Ich kann folgende Zeiten einstellen (STM Seite 1600 /Tabelle 258) und 
ich würde diese auf folgende Zeiten (aus dem Datasheet des SRAM, Seite 
6) anpassen.

 + Address Setup <------- Address Setup to Write End?
 + Address Hold <------- Data Hold from Address Change?
 + Data Setup <------- Data Setup to Write End?
 + Bus Turn <-------- ?
 + Clock divide ratio <-------- ?
 + Data latency <----------- ?
 + AccessMode <------------- ?

Ich bin mir aber absolut nicht im klaren ob meine nicht vollständigen 
Zuordnungen richtig sind.

---

Mein Verständnis über die allgemeine Taktzeit des SRAMs ist folgende:

Die Taktfrequenz des SRAM leitet sich von meiner HCLK dividiert durch 
die CLock Divide Ratio ab. Bei einer HCLK von 100 MHz und eine Clock 
Divide Ratio von 2 erhalte ich 50 Mhz (20 ns). Dies sieht für mich so 
aus, als würden meine Verzögerungen des Microcontrollers stehts größer 
sein als die maximalen Timings des SRAMS (12 ns). Lieg ich mit meiner 
Annahme richtig?

Schon einmal vielen Dank für eure Hilfe!

---

Meine NORSRAM bank Konfiguration sieht übrigens so aus:
1
init.DataAddressMux = FMC_DATA_ADDRESS_MUX_DISABLE;
2
init.MemoryType = FMC_MEMORY_TYPE_SRAM;
3
init.MemoryDataWidth = FMC_NORSRAM_MEM_BUS_WIDTH_16;
4
init.BurstAccessMode = FMC_BURST_ACCESS_MODE_DISABLE;
5
init.WaitSignalPolarity = FMC_WAIT_SIGNAL_POLARITY_LOW;
6
init.WrapMode = FMC_WRAP_MODE_DISABLE;
7
init.WaitSignalActive = FMC_WAIT_TIMING_BEFORE_WS;
8
init.WriteOperation = FMC_WRITE_OPERATION_ENABLE;
9
init.WaitSignal = FMC_WAIT_SIGNAL_DISABLE;
10
init.ExtendedMode = FMC_EXTENDED_MODE_DISABLE;
11
init.AsynchronousWait = FMC_ASYNCHRONOUS_WAIT_DISABLE;
12
init.WriteBurst = FMC_WRITE_BURST_DISABLE;
13
init.ContinuousClock = FMC_CONTINUOUS_CLOCK_SYNC_ASYNC;

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren