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
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.
Ah ok an die habe ich dabei nicht gedacht! Damit ist dieser Jitter schonmal erklärt! Danke! Weiter Ideen zum externem Ram?
Wie lang ist denn der Speicherzyklus bei Zugriff auf externes RAM, bei 32 Bits?
NB: Für taktgenauen Programmablauf sind solche Controller nicht gedacht.
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!
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.
Mist das sieht echt nicht gut aus. Werde das nächste Woche nochmal genauer durchgehen und vermessen. Danke Dir!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.