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
Zu 1: Der st32f4 hat eine "multi-AHB bus matrix". (http://www.st.com/content/ccc/resource/technical/document/datasheet/03/b4/b2/36/4c/72/49/29/DM00071990.pdf/files/DM00071990.pdf/jcr:content/translations/en.DM00071990.pdf) Oder hier steht auch was dazu: http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-arm-cortex-mcus/stm32f4-series/stm32f429-439.html?querycriteria=productId=LN1806 >Easily extendable memory range using the flexible 90 MHz >memory controller with 32-bit parallel interface, >and supporting Compact Flash, SRAM, PSRAM, NOR, >NAND and SDRAM memories Zu2: Der stm hat full speed 2.0 an Bord (12mbps). LAN kannst du auch nehmen. Du musst nicht warten bis dein RAM überfüllt wird. Sende die Daten in Paketen ab (4096 bytes). Die Bearbeitung der Daten findet am Rechner statt. Außer du willst die Daten am µC bearbeiten? mfg
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.