Gast
#4609810
Sehr geehrte Forum User, nach einiger Recherche wende ich mich nun an euch: Ich möchte ein kleines (1-Kanal) Datenerfassungsgerät mit dem STM32F429 Discovery Board (STM Board) realisieren. Zu diesem Anlass verwende ich den 24-Bit Delta-Sigma Analog-Digital-Umsetzer (ADU) ADS1271 [1, siehe unten] von TI. Die "hohe" Auflösung möchte ich deswegen, da ich mit einem Beschleunigungsaufnehmer (MEMS oder auch IEPE), angeschlossen an den ADU, mechanische Schwingungen erfassen möchte um ggf. auch eine experimentelle Modalanalyse durchführen zu können. Der oben aufgeführte ADU kommuniziert mit dem STM Board über die SPI Schnittstelle. Nun ist bekannt, dass für die "richtige" Auswertung des Signals im Frequenzbereich die Abtastperiode (T_A) zwischen den Samples stets äquidistant sein muss. Damit diese Bedingung gewährleistet werden kann, muss ich die Samples "schnell" irgendwo unterbringen und daher denke ich an den Einsatz des DMA Controllers. Dieser soll die Daten im Empfangsbuffer des SPIs "schnell" in den externen RAM auf dem STM Board laden. Wenn ich das richtig verstanden habe, wird der externe RAM auf dem STM Board m.H. des FSMC angesteuert. Falls dies stimmt ist die Frage: Hängt der FSMC und der SPI des STM32F429 Controllers auf einem gemeinsamen DMA Bus und würde der beschriebene Vorgang funktionieren ? Dies habe ich aus dem Reference Manual [2] des STM32F429 Controllers nicht richtig herauslesen können. Alternativ habe ich mich gefragt ob ich die Daten direkt an den PC über die USB Schnittstelle schicke. Wie man im Datenblatt des ADUs [1] entnehmen kann, beträgt die Abtastrate im High-Resolution Mode c.a. 52kHz. Klappt das mit USB oder wäre das zu langsam ? Wie macht man hier überhaupt eine Überschlagsrechnung um genau diese Frage beantworten zu können ? Wenn ich den ADU nun "befeuere" und dieser die Daten an den Controller sendet, kann ich dann davon ausgehen, das alle Daten mit äquidistanten Abtastzeiten ankommen oder soll ich dies lieber mit einem internen Timer im Controller erledigen um sicher zu sein, dass die Timings stimmen ? Dann würde ich bei jedem Timer Interrupt genau einen Wert abtasten und diesen in den RAM speichern bzw. über USB an den PC senden. Ich würde mich über jede Hilfe freuen. mfGruß und ein schönen Samstag, opcode69 [1]: http://www.ti.com/lit/ds/symlink/ads1271.pdf [2]: http://www.cs.hs-rm.de/~kaiser/1313_canacademy/STM42F4xx_Reference_manual_DM00031020.pdf