AD9857 IQ DDS Digital Up Converter Experiment using Nucleo F401

Dependencies:   mbed

Digital Signal Processing for IQ Quadradure Modulation DDS AD9857 using Nucleo F401.

see http://ttrftech.tumblr.com/post/114310226891/

Revision:
3:e6897d74d6bf
Parent:
2:57e603a26534
Child:
4:dfd05c26edbe
--- a/main.cpp	Sun Mar 22 13:57:58 2015 +0000
+++ b/main.cpp	Mon Mar 23 15:00:50 2015 +0000
@@ -432,9 +432,9 @@
 {
     uint32_t i = __PKHBT(decay_ave, in, 16);
     uint32_t q = __PKHTB(in, decay_ave, 16);
-    i = __SMUAD(0x0001000f, i) >> 4;
-    q = __SMUAD(0x0001000f, q) >> 4;
-    decay_ave = __PKHBT(i, q, 16);
+    int32_t sum_i = __SMUAD(0x0001000f, i) / 16;
+    int32_t sum_q = __SMUAD(0x0001000f, q) / 16;
+    decay_ave = __PKHBT(sum_i, sum_q, 16);
 }
 
 
@@ -510,7 +510,7 @@
 
     fmmod_init(&fmmod);
     
-    cic.s0 = __PKHBT(3, 3, 16); // adjust offset
+    cic.s0 = __PKHBT(12, 0, 16); // adjust offset
     //pseudo_noise_test();
     //interpolate_test();
     //hilbert_transform_test();
@@ -542,7 +542,11 @@
 
         //pc.printf("%08x %08x\r\n", decay_ave, capbuf_ave);
         //pc.printf("%02x %02x\r\n", I2CRead(0x18, 67), I2CRead(0x18, 44));
-        //pc.printf("%d %d\r\n", dma_buf[0][100], dma_buf[0][101]);
+        if (pc.readable()) {
+            pc.getc();
+            uint32_t *buf = (uint32_t *)dma_buf;
+            pc.printf("%08x %08x %08x %08x\r\n", buf[0], buf[1], buf[2], buf[3]);
+        }
         //pc.printf("%04x %04x\r\n", (uint16_t)fir_buf[0], (uint16_t)fir_buf[1]);
         //pc.printf("%08x\r\n", *(uint32_t*)cap_buf[0]);
     }