mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik STM32 Cortex Problem mit AD-Wandler


Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich mache mit dem Keil Evaluations-Board mit dem STM32F103 gerade meine 
ersten Gehversuche.
Bisher klappt es eigentlich einigermaßen, allerdings habe ich noch ein 
Problem, wo ich keine Lösung finde.

Ich möchte den AD-Wandler so konfigurieren, dass er alle 16 Kanäle immer 
im 100ms Raster einliest.
Den Wandler habe ich dazu im Scan-Modus so konfiguriert, dass er alle 
Kanäle nacheinander wandelt. Das funktioniert. Nun möchte ich halt, dass 
er genau alle 100ms wandelt. Hierfür habe ich den TIM1 konfiguriert, 
dass er alle 100ms einen CC1 Interrupt auslöst. Das mit dem Interrupt 
alle 100ms klappt auch, wenn ich also in der CC1 ISR den Wandler von 
Hand starte, funktioniert es so wie gewünscht, aber laut Datenblatt 
sollte der Timer den Wandler auch direkt starten können.
Beim ADC habe ich daher das EXTTRIG bit gesetzt und EXTSEL auf 0 
(TIM1_CC1 event) gesetzt. Allerdings wird so der Wandler nicht 
gestartet.
Ich denke, ich habe noch eine Kleinigkeit vergessen, finde aber beim 
besten Willen nicht, was mir da noch fehlt.
Unabhängig funktioniert ja beides. Gibt es vielleicht noch einen 
Unterschied zwischen CC1 Interrupt und CC1 Event?

Vielleicht hat ja schon jemand Erfahrung mit den STM32-Mikrocontrollern.

Ansonsten macht es echt Spaß damit, die sind schon recht vielseitig.

Gruß
Klaus

Autor: wolfhunters (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Klaus,

eine Antwort auf deine Frage habe ich leider nicht, aber ich habe auch 
einen STM32 Controller und versuche gerade den AD in Gang zu bringen. 
Vielleicht kannst du mir einen Tipp geben. Ich will mit Hilfe des ADC 
auf einem Kanal ein Signal (Audio) samplen. Nur leider habe ich momentan 
das Problem das nach dem STart des ADCs die ISR angesprungen wird und da 
dann nicht mehr rauskommt. Wie hast du deine Clocks und Samplerates 
eingestellt. Muss ich da noch etwas besonderes beachten? Vielleicht hast 
du ja nen Tipp für mich, wäre schön.

Gruß
Daniel

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@wolfhunters: Eintipp: Wenn Du automatisch sampelst und nach jedem 
Sample einen Interrupt machst, dann macht der halt nur noch den 
Interrupt und sonst nichts mehr.
Besser: 100 mal samepeln und via DMA in das RAM kopieren lassen, zum 
Schluss einen im DMA Complete Interrupt diese 100 Sampels berechnen ...
... Demos gibts bei STM FW-LIB.

Autor: Daniel Wolf (wolfhunters)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, das klingt plausibel, aber ich habe folgendes Problem.
Ich möchte Daten über einen Kanal samplen. Anschließend packe ich die 
Daten in einen Ringbuffer um sie dann Blockweise (512Byte) auf eine 
SD-Karte zu schreiben. Das Problem was ich habe ist, das in der Zeit wo 
die Daten auf die SD geschrieben werden sollen, das Samplen weiter gehen 
soll ohne Unterbrechung, so dass ein kontinuierlicher Datenfluss da ist. 
Aber wie realisiere ich das?

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ganz einfach:
Sampel mit DMA in den RAM >>> Interrupt DMA Transfer fertig >> DMA in 
einen anderen RAM Bereich (2. Buffer) parametrieren >>> Sichern des 
ersten Buffers in die SD-Card ....
Wenn zwei Buffer nicht reichen, dann halt mehr verwenden.

Wichtig: Das Speichern in die SD-Card muss natürlich schneller gehen als 
das Sampeln eines Buffers, ansonsten wird es nie funktionieren.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.