Forum: Mikrocontroller und Digitale Elektronik STM32-F103 AD-Wandler DMA RAM OVERFLOW


von Mikro111 (Gast)


Angehängte Dateien:

Lesenswert?

Für eine AD-Wandlung möchte ich mit meinem STM32-F103 den DMA Kanal 
wählen. Das mein Bus zu langsam ist möchte ich Werte mit der höchsten 
Abtastrate einlesen und in einem Feld hinterlegen. Das Feld welches ich 
anlege und als Puffer übergebe kann jedoch nur 3000 Werte umfassen. 
ansonsten kommt der im Anhang befindliche Fehler.

Mir würden 100000 oder 1 Mio Werte vorschweben. Das feld soll nach einer 
Abtastung dann über den langsamen Bus übertragen werden.

von (prx) A. K. (prx)


Lesenswert?

Dir ist aber schon klar, dass dein Controller für 1 Mio Werte nicht 
annähernd genug RAM drin hat? Du also bei dieser Verfahrensweise auf 
externes RAM zurückgreifen musst.

von Mike R. (thesealion)


Lesenswert?

Du solltest dir mal überlegen, wie viel Speicher (RAM) dein Controller 
hat, und wie viel du dann mit deiner Tabelle belegen willst.

Wenn ich hier sehe, das du 1.000.000 Werte a 4 Byte speichern willst, 
dann gibt es keinen ST Controller, der das könnte.

von Mikro111 (Gast)


Lesenswert?

Kann man das dann nicht in einen anderen Speicher übertragen? Flash 
ram???

von Mike R. (thesealion)


Lesenswert?

Natürlich kann du das, schließ einfach genügend externen RAM an und das 
ganze funktioniert. Die M3 Controller können ingesammt 4GB Speicher 
adressieren (Flash, RAM, Peripherie)

von (prx) A. K. (prx)


Lesenswert?

Der effektive Adressraum realer CM3 ist etwas kleiner als 4GB. Aber es 
kommt ein kleiner Haken dazu: Die STM32 haben bei externem RAM gewisse 
Probleme mit DMA. Beitrag "Re: STM32 DMA und externes RAM"

von Mikro111 (Gast)


Lesenswert?

Eine andere möglichkeit ausser nen schnelleren Bus gäb es so nicht oder?

von (prx) A. K. (prx)


Lesenswert?

Es gibt m.W. keinen Mikrocontoller mit 4MB internem RAM. Also ist 
externes RAM unvermeidlich. Und dann wär's besser, einen Controller zu 
verwenden, der bei externem RAM und DMA nicht über die eigenen Füsse 
stolpert.

Alternativ kann man versuchen, das interne RAM als FIFO-Puffer zu 
verwenden, d.h. die Daten noch in der Samplephase auch wieder 
loszuwerden, nicht erst komplett zu puffern.

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.