Hallo zusammen, ich versuche auf einem STM32F407-VG Chip 14 ADC Werte über ADC1 auszulesen, und diese über DMA zu speichern. Da ich eine gewisse Anzahl an Werten mitteln möchte, will ich nach einem DMA Umlauf einen Interrupt auslösen und die Werte speichern. Das funktioniert auch soweit alles, aber die Frequenz in der der Interrupt aufgerufen wird passt nicht ganz. Ich habe den DMA_IT_TCIF0 Interrupt enabled, mein APB2 läuft auf 84MHz, meine Sampling Time sind 8 cycles, und mein Prescaler ist 6. Also denke ich dass der Transfer Complete Interrupt mit einer Frequenz von: (84MHz / 6 Prescaler ) / ((12Cycles + 8Cycles Sampling Time) * 14 ADC channels) = 50 kHz aufgerufen werden müsste, aber irgendwo denke ich da wohl falsch, denn er wird etwa mit 71kHz aufgerufen, weiß jemand warum? Habe die Config Datei auch angehängt, die Datei mit den ganzen #defines nicht, aber die Wandlung und das wegspeichern funktioniert auch einwandfrei soweit ich das Beurteilen kann Vielen Dank und MfG edit: habe mich vorher bei der tatsächlichen Frequenz verschrieben, jetzt ist es korrekt, 71kHz
Also das Problem das die Interrupts meiner Meinung nach zu häufig aufgerufen werden besteht nach wie vor. Ansonsten lief jetzt alles fast 1 Woche lang völlig korrekt, und heute sind auf einmal alle Werte des Arrays das ich DMA_PeripheralBaseAddr übergebe allesamt um 4 bit links verschoben, und ich hab absolut keine Erklärung dafür. Ich hab dank Versionsverwaltung noch die alten Stände, und da funktioniert es korrekt. Ich hab das verglichen und am DMA bzw ADC betreffenden Code keine Zeile geändert.... irgendjemand eine Idee Vermutung etc. ? kann natürlich auch mehr code posten, sollte es irwas helfen..
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.