Forum: Mikrocontroller und Digitale Elektronik STM32 Isr-Jitter und externes Ram


von Georg (Gast)


Lesenswert?

Hallo an Alle!

Ich habe folgendes Problem:

Ich verwende einen STM32 (Cortex M3) in Verbindung mit einem externen 
SRAM. Bei Verwendung des internen Ram habe ich einen Interrupt Jitter 
von +/- einem Takt. (@72MHz ~ 14ns) Diesen Jitter kann ich mir zwar auch 
nicht erklären da es in meiner Konfiguration meiner Meinung nach eine 
feste Latenz von 12 Takten geben sollte aber keinen Jitter. Gut damit 
läßt sich leben.
Greife ich allerdings auf das externe SRAM zu steigt der Jitter auf ~ 
+/- 200ns was mir sehr seltsam vorkommt. Gut ein größerer Jitter ist zu 
erwarten da das RAM nur 16bit Zugriffe macht und ein 32bit Zugriff 
bestimmt nicht von einem ISR unterbrochen werden kann. Aber die 
Größenordnung passt einfach nicht. Verwendet wird übrigens ein 10ns 
SRAM.
Wo könnte das Problem liegen? Habe schon Stunden die unschöne Arm Doku 
studiert und komme zu keiner wirklichen Lösung.

Vielleicht weis von Euch jemand genaueres dazu?


Viele Grüße
Georg

von (prx) A. K. (prx)


Lesenswert?

Georg schrieb:

> Diesen Jitter kann ich mir zwar auch
> nicht erklären da es in meiner Konfiguration meiner Meinung nach eine
> feste Latenz von 12 Takten geben sollte

Solche Angaben sind eher als Maximum definiert, das ggf. unterschritten 
werden kann. Sie dürfte sich ausserdem auf einen nicht durch 
irgendwelche Waitstates gebremsten Cortex-M3 Core beziehen. Bei 72MHz 
entstehen bei Code im Flash aber 2 Waitstates.

von Georg (Gast)


Lesenswert?

Ah ok an die habe ich dabei nicht gedacht! Damit ist dieser Jitter 
schonmal erklärt!

Danke!

Weiter Ideen zum externem Ram?

von (prx) A. K. (prx)


Lesenswert?

Wie lang ist denn der Speicherzyklus bei Zugriff auf externes RAM, bei 
32 Bits?

von (prx) A. K. (prx)


Lesenswert?

NB: Für taktgenauen Programmablauf sind solche Controller nicht gedacht.

von Georg (Gast)


Lesenswert?

Also ich kann es leider gerade nicht nachmessen. Aber es sollten 10ns 
zum Adresse setzen und 10ns zum Daten lesen sein. Das hieße 32bit lesen 
sollte ~40ns dauern. Jitter ist aber um Faktor 10 größer...

Einen taktgenauen Zugriff erwarte ich ja nicht. Aber einen so hohen 
Jitter habe ich nicht erwartet.... Meiner Meinung nach ist die Auslegung 
mit dem externem Ram an dieser CPU auch nicht optimal, aber da ist nix 
dran zu wackeln.

Vielen Dank für deine Hilfe!

von (prx) A. K. (prx)


Lesenswert?

Ein Blick in die Reference suggeriert bei SRAM-Lesezyklen mindestens 5 
HCLKs pro 16-Bit Transfer. 1xADDSET + 2xDATAST + 2 (Figure 187, Table 
106). Ergibt 10 HCLKs bei 32 Bits, sind 140ns. Schreiben geht fixer.

von Georg (Gast)


Lesenswert?

Mist das sieht echt nicht gut aus. Werde das nächste Woche nochmal 
genauer durchgehen und vermessen.
Danke Dir!

von (prx) A. K. (prx)


Lesenswert?

Nicht wirklich ein effizientes Speicherinterface - trotz 70ns Zyklus 
ergeben sich grad mal 10ns Zugriffszeit (3xHCLK-32 lt. Datasheet).

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
Noch kein Account? Hier anmelden.