AD9834 DDS Sinewave

Dependencies:   TextLCD mbed

Committer:
jf1vrr
Date:
Sun Jul 17 15:58:30 2011 +0000
Revision:
0:6e98d1ce9934
Rev.1.01A new 2011/07/14 Mlabo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jf1vrr 0:6e98d1ce9934 1 /*AD9834 DDS Test 2011/07/14 MLabo*/
jf1vrr 0:6e98d1ce9934 2 #include "mbed.h"
jf1vrr 0:6e98d1ce9934 3 #include "TextLCD.h"
jf1vrr 0:6e98d1ce9934 4
jf1vrr 0:6e98d1ce9934 5 TextLCD lcd(p24, p26, p27, p28, p29, p30); //Starboard Orenge
jf1vrr 0:6e98d1ce9934 6 DigitalOut FSYNC(p18);
jf1vrr 0:6e98d1ce9934 7 DigitalOut SCLK(p19);
jf1vrr 0:6e98d1ce9934 8 DigitalOut SDATA(p20);
jf1vrr 0:6e98d1ce9934 9
jf1vrr 0:6e98d1ce9934 10 Timer timer;
jf1vrr 0:6e98d1ce9934 11
jf1vrr 0:6e98d1ce9934 12 void serial_out(uint16_t data) {
jf1vrr 0:6e98d1ce9934 13
jf1vrr 0:6e98d1ce9934 14 FSYNC = 0;
jf1vrr 0:6e98d1ce9934 15 data & 0x8000? SDATA = 1 : SDATA = 0; SCLK = 0; SCLK = 1;
jf1vrr 0:6e98d1ce9934 16 data & 0x4000? SDATA = 1 : SDATA = 0; SCLK = 0; SCLK = 1;
jf1vrr 0:6e98d1ce9934 17 data & 0x2000? SDATA = 1 : SDATA = 0; SCLK = 0; SCLK = 1;
jf1vrr 0:6e98d1ce9934 18 data & 0x1000? SDATA = 1 : SDATA = 0; SCLK = 0; SCLK = 1;
jf1vrr 0:6e98d1ce9934 19 data & 0x0800? SDATA = 1 : SDATA = 0; SCLK = 0; SCLK = 1;
jf1vrr 0:6e98d1ce9934 20 data & 0x0400? SDATA = 1 : SDATA = 0; SCLK = 0; SCLK = 1;
jf1vrr 0:6e98d1ce9934 21 data & 0x0200? SDATA = 1 : SDATA = 0; SCLK = 0; SCLK = 1;
jf1vrr 0:6e98d1ce9934 22 data & 0x0100? SDATA = 1 : SDATA = 0; SCLK = 0; SCLK = 1;
jf1vrr 0:6e98d1ce9934 23 data & 0x0080? SDATA = 1 : SDATA = 0; SCLK = 0; SCLK = 1;
jf1vrr 0:6e98d1ce9934 24 data & 0x0040? SDATA = 1 : SDATA = 0; SCLK = 0; SCLK = 1;
jf1vrr 0:6e98d1ce9934 25 data & 0x0020? SDATA = 1 : SDATA = 0; SCLK = 0; SCLK = 1;
jf1vrr 0:6e98d1ce9934 26 data & 0x0010? SDATA = 1 : SDATA = 0; SCLK = 0; SCLK = 1;
jf1vrr 0:6e98d1ce9934 27 data & 0x0008? SDATA = 1 : SDATA = 0; SCLK = 0; SCLK = 1;
jf1vrr 0:6e98d1ce9934 28 data & 0x0004? SDATA = 1 : SDATA = 0; SCLK = 0; SCLK = 1;
jf1vrr 0:6e98d1ce9934 29 data & 0x0002? SDATA = 1 : SDATA = 0; SCLK = 0; SCLK = 1;
jf1vrr 0:6e98d1ce9934 30 data & 0x0001? SDATA = 1 : SDATA = 0; SCLK = 0; SCLK = 1;
jf1vrr 0:6e98d1ce9934 31 FSYNC = 1;
jf1vrr 0:6e98d1ce9934 32 }
jf1vrr 0:6e98d1ce9934 33
jf1vrr 0:6e98d1ce9934 34 int main() {
jf1vrr 0:6e98d1ce9934 35 float SetFreq;
jf1vrr 0:6e98d1ce9934 36 uint32_t temp, freqdata;
jf1vrr 0:6e98d1ce9934 37 uint16_t Uptemp, Lowtemp;
jf1vrr 0:6e98d1ce9934 38 int begin, end;
jf1vrr 0:6e98d1ce9934 39
jf1vrr 0:6e98d1ce9934 40 SCLK = 1;
jf1vrr 0:6e98d1ce9934 41 SDATA = 0;
jf1vrr 0:6e98d1ce9934 42 FSYNC = 1;
jf1vrr 0:6e98d1ce9934 43
jf1vrr 0:6e98d1ce9934 44 lcd.cls();
jf1vrr 0:6e98d1ce9934 45 lcd.locate(0,0);
jf1vrr 0:6e98d1ce9934 46 lcd.printf("AD9834 test" );
jf1vrr 0:6e98d1ce9934 47
jf1vrr 0:6e98d1ce9934 48 timer.start();
jf1vrr 0:6e98d1ce9934 49 begin = timer.read_us();
jf1vrr 0:6e98d1ce9934 50 for ( freqdata = 0; freqdata < 16000000; freqdata++) {
jf1vrr 0:6e98d1ce9934 51
jf1vrr 0:6e98d1ce9934 52 SetFreq = 5.592405 * (uint32_t)freqdata;
jf1vrr 0:6e98d1ce9934 53 temp = (uint32_t)SetFreq;
jf1vrr 0:6e98d1ce9934 54 Lowtemp = (uint16_t)(temp & 0x3FFF);
jf1vrr 0:6e98d1ce9934 55 Uptemp = (uint16_t)((temp/16384) & 0x3FFF);
jf1vrr 0:6e98d1ce9934 56 serial_out(0x2028);
jf1vrr 0:6e98d1ce9934 57 serial_out(Lowtemp + 0x4000);
jf1vrr 0:6e98d1ce9934 58 serial_out(Uptemp + 0x4000);
jf1vrr 0:6e98d1ce9934 59 }
jf1vrr 0:6e98d1ce9934 60 end = timer.read_us();
jf1vrr 0:6e98d1ce9934 61 lcd.locate(0,1);
jf1vrr 0:6e98d1ce9934 62 lcd.printf("%duS", end - begin);
jf1vrr 0:6e98d1ce9934 63 while (1) {}
jf1vrr 0:6e98d1ce9934 64
jf1vrr 0:6e98d1ce9934 65 }