A sine wave generator using AD9833 and AD9850 using STM32F103RB

Dependencies:   mbed

This is a sine wave generator using DDS IC' AD9833 and AD9850. The STM32F1 microcontroller produces the SPI commands for the two DDS.

Learn more about STM32F1 in my blog: https://www.teachmemicro.com

Revision:
0:6069c0f2a245
Child:
1:9dcccb399f0b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/AD9850.h	Tue Nov 21 11:24:25 2017 +0000
@@ -0,0 +1,54 @@
+/******************************************************************************************************************
+ * Arduino library for AD9850
+ * Created 23/08/2014
+ * Christophe Caiveau f4goj@free.fr 
+ *
+ * Use this library freely
+ *
+ * Hardware connections : 
+ * W_CLK   -> any pin
+ * FQ_UD   -> any pin
+ * DATA/D7 -> any pin
+ * RESET   -> any pin
+ *
+ * Functions :
+ * dds.begin(W_CLK pin, FQ_UD pin, DATA pin, RESET pin); Initialize the output pins and master reset the AD9850 
+ * dds.calibrate(frequency); Compensation of crystal oscillator frequency
+ * dds.setfreq(frequency,phase); frequency in Hz, phase coded on 5 bits
+ * dds.down(); power down mode reducing the dissipated power from 380mW to 30mW @5V
+ * dds.up(); wake-up the AD9850
+ *
+ * AD9850 datasheet at http://www.analog.com/static/imported-files/data_sheets/AD9850.pdf
+ *
+ *****************************************************************************************************************/
+ 
+ 
+#ifndef AD9850_H
+#define AD9850_H
+#include <stdint.h>
+
+class AD9850
+{
+    public:
+    AD9850();
+
+    void Begin();//int w_clk, int fq_ud, int data, int reset);
+    void SetDDSFrequency(double f, uint8_t p);
+    void down();
+    void up();
+    void CalibrateDDS(double TrimFreq);
+    
+    private:
+    int W_CLK;
+    int FQ_UD;
+    int DATA;
+    int RESET;
+    uint32_t deltaphase;
+    uint8_t phase;
+    void update();
+    void begin_priv();
+   // void pulse(int pin);
+    double calibFreq;
+};
+
+#endif