Joaquin Verastegui / jro

Dependents:   JRO_CR2 frdm_test

Fork of jro by Miguel Urco

Revision:
0:b444ea725ba7
Child:
1:7c424a3e12ea
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dds.h	Tue Dec 02 02:27:30 2014 +0000
@@ -0,0 +1,53 @@
+#include "mbed.h"
+
+#define SPI_BITS 8
+#define SPI_MODE 0
+#define SPI_FREQ 10000
+
+class DDS{
+    private:
+        float           frequency;              // Work frequency in MHz
+        unsigned char   cr_multiplier;         // Multiplier 4- 20
+        unsigned char   cr_mode;                // Single, FSK, Ramped FSK, Chirp, BPSK
+        bool            cr_ioupdclk;            // IO Update clock enable: 0 -> input
+        bool            cr_inv_sinc;            // Inverse sinc filter enable: 0 -> enable
+        bool            cr_osk_en;              // Enable AM: 0 -> disabled
+        bool            cr_osk_int;             // ext/int output shaped control: 0 -> external
+        bool            cr_msb_lsb;             // msb/lsb bit first: 0 -> MSB
+        bool            cr_sdo;                 // SDO pin active: 0 -> inactive
+        
+        SPI             *spi_device;
+        //DDS I/O
+        DigitalOut      *dds_mreset;
+        DigitalIn       *dds_outramp;
+        DigitalOut      *dds_sp_mode;
+        DigitalOut      *dds_cs;
+        DigitalOut      *dds_io_reset;
+        DigitalInOut    *dds_updclk;
+
+    
+        int __writeData(unsigned char addr, unsigned char ndata, const unsigned char* data);
+        unsigned char* __readData(unsigned char addr, unsigned char ndata);
+        int __writeDataAndVerify(unsigned char addr, unsigned char ndata, const unsigned char* wr_spi_data);
+        unsigned char* __getControlRegister();
+        int __writeControlRegister();
+        int setSingleMode();
+        int setFSKMode();
+        int setBPSKMode();
+        
+    public:
+        bool isConfig;
+        
+        DDS(SPI *spi_dev, DigitalOut *mreset, DigitalIn *outramp, DigitalOut *spmode, DigitalOut *cs, DigitalOut *ioreset, DigitalInOut *updclk);
+        int init();
+        int reset();
+        int scanIOUpdate();
+        int find();
+        int setMode(unsigned char mode);
+        int setMultiplier(unsigned char multiplier, float clock);
+        int setPhase1(unsigned char* phase);
+        int setPhase2(unsigned char* phase);
+        int setFrequency1(unsigned char* freq);
+        int setFrequency2(unsigned char* freq);
+    
+};
\ No newline at end of file