14-Show (DDS-Funktionsgenerator per STM32F429)

Mit diesem Projekt wird aus dem STM32F429-Disco Board ein DDS-Funktionsgenerator

Es sind 4 Kurvenformen im Flash abgespeichert (Sinus, Rechteck, Sägezahn, Dreieck)
Auswählbar per Touch und Einstellbar von 1Hz bis 50kHz. (Die Amplitude und der Offset vom Signal kann auch eingestellt werden)

Mit dem PC-Programm kann der Funktionsgenerator parallel zum Touch gesteuert werden und hier können auch User-Kurvenformen geladen und übertragen werden.
(das notwendige CSV-File-Format kann z.B. per Excel erstellt werden)

Hinweise :

Je nach eingestellter Frequenz ist ein mehr oder weniger großer “Jitter” auf dem Signal.
Ich bin mir nicht sicher ob das Prinzip bedingt durch die DDS kommt oder ein SW-BUG ist
(hab aber keine Lust da noch mehr Zeit zu investieren)

Auch werden die Kurvenformen bei hohen Frequenzen sehr unsauber. Um das zu verbessern müsste ein externer Tiefpass angebracht werden.

Analoger Ausgang :

DAC-2 an PA5

Verbindung zum PC :

per USB-OTG-Buchse (CN6)

1
2
3
4
5
6
7
8
9
10
11
Befehle :
----------
"Help"        : anzeige der Version und aller Befehle
"GET_FRQ"     : Eingestellte FRQ auslesen
"GET_AMP"     : Eingestellte Amplitude auslesen
"GET_OFF"     : Eingestellter Offset auslesen
"GET_WAVE"    : Eingestellte Wellenform auslesen
"SET_FRQ=a.b" : FRQ einstellen (als Float-Wert)
"SET_AMP=a"   : Amplitude einstellen (als Int-Wert)
"SET_OFF=a"   : Offset einstellen (als Int-Wert)
"SET_WAVE=a"  : Wellenform einstellen (als Int-Wert)

Version :

V:1.00 vom 03.04.2014

implementierte Funktionen :

Ausgabe von einer Kurvenform an PA5
Kurvenformen : Sinus, Rechteck, Sägezahn, Dreieck (aus dem Flash)
User-Kurvenform : 2 bis 4096 Stützpunkte (aus dem RAM)
DAC-Auflösung : 12bit
Frq-Einstellung : 1 Hz bis 50kHz
Amplituden-Einstellung : 0 bis 4095 (0-3,3V)
Offset-Einstellung : 0 bis 4095 (0-3,3V)
Anzeige und Steuerung per Touch oder über USB-OTG-Buchse
User-Kurvenform wird per PC-Programm übertragen.

Screenshots :

Hier der komplette CooCox-Projektordner zum download :

Show_14_Funktionsgenerator

Hier das PC-Programm zum download :

DDS_Generator_UB


9 Antworten auf 14-Show (DDS-Funktionsgenerator per STM32F429)

  1. Adolf sagt:

    Moin Uwe,

    danke für den Funktionsgenerator.

    Ich hab den Hex Code mal in einen 429 programmiert.

    An PA5 wird ein Sinus von von GND bis 3V ausgegeben.
    Die Spitzen des Sinus sind abgeflacht (in Sättigung).

    Allerdings kann ich die Frequenz nur mit den Pfeilen bei
    Waveform sinus verstellen.

    Bei 10kHz zeigt der Sinus allerdings sehr deutliche Stufen.

    Ich hoffe, meine Messung kann Dir ein wenig helfen.

    Gruß
    Adolf

    • admin_ub sagt:

      da scheint noch irgendein BUG in ded DAC-Lib zu sein…Kanal-2 ist “invertiert” …k.A. warum (das Übersteuern dürfte auch nicht sein…maxwert ist 4095 = 12bit)

    • admin_ub sagt:

      bei Version A.03 kann die Amplitude eingestellt werden. Das bei 10kHz der Sinus nicht mehr “sauber” ist, ist normal. DDS-Frq liegt nur bei 250kHz und die ROM-Tabelle für den Sinus hat 256 Einträge. Also ist alles > 1kHz “unsauber”

  2. Stefan Friedrich sagt:

    Hi Uwe,

    ich habe ein ähnliches Problem wie oben beschrieben. Bei mir ist der Sinus beim Minimum abgeflacht. Durch einstellen des Offsets wird es besser, aber ich komm leider nicht dahinter wo es herkommt .
    Hast du eine Idee ?

    Vielen Dank schonmal und viele Grüße,
    Stefan

    • admin_ub sagt:

      Ist das beim Dreieck-Signal genauso ?

      • Stefan Friedrich sagt:

        Ja bei dem Dreieck Signal sind die Spitzen unten auch flach.

        • admin_ub sagt:

          dann ist die DAC Auflösung wohl nicht linear von 0 bis 4095. Dann musst du die Amplitude kleiner machen und den Offset etwas nach oben schieben, bis das Dreieck-Signal sauber aussieht. Bin mir nicht sicher wo da der Fehler liegt.

  3. Lothar sagt:

    Hallo Uwe,
    einsame Klasse deine Libs und Projekte. Hat mir sehr viel geholfen, um mit dem F4 warm zu werden. Das Begrenzungsproblem liegt wahrscheinlich an den DACs selbst. Im buffered Mode sind weder null, noch drei Volt zu erreichen. Die Puffer sind wohl nicht Rail to Rail. Das habe ich beim 407 festgestellt und das Datenblatt bestätigt das.
    Grüße Lothar

  4. Pietro Zanocco sagt:

    Hi,
    it is a very usefull example, can i have the source of pc program?
    in which language is written?

    Thanks to everyone!!


Wie hat Dir dieser Artikel gefallen?

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Noch keine Bewertungen)
Loading...

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert