FSK with AD9834 DDS

Dependencies:   TextLCD mbed

Committer:
jf1vrr
Date:
Sun Jul 17 16:01:41 2011 +0000
Revision:
0:46f203a79acf
Rev.1.01A new 2011/07/17 MLabo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jf1vrr 0:46f203a79acf 1 /*FSK with A9834 by MLabo 2011/07/17*/
jf1vrr 0:46f203a79acf 2 #include "mbed.h"
jf1vrr 0:46f203a79acf 3 #include "TextLCD.h"
jf1vrr 0:46f203a79acf 4
jf1vrr 0:46f203a79acf 5 TextLCD lcd(p24, p26, p27, p28, p29, p30); //StarBoard Orenge
jf1vrr 0:46f203a79acf 6 DigitalOut FSELECT(p17);
jf1vrr 0:46f203a79acf 7 DigitalOut FSYNC(p18);
jf1vrr 0:46f203a79acf 8 DigitalOut SCLK(p19);
jf1vrr 0:46f203a79acf 9 DigitalOut SDATA(p20);
jf1vrr 0:46f203a79acf 10
jf1vrr 0:46f203a79acf 11 void serial_out(uint16_t data) {
jf1vrr 0:46f203a79acf 12
jf1vrr 0:46f203a79acf 13 FSYNC = 0;
jf1vrr 0:46f203a79acf 14 data & 0x8000? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1;
jf1vrr 0:46f203a79acf 15 data & 0x4000? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1;
jf1vrr 0:46f203a79acf 16 data & 0x2000? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1;
jf1vrr 0:46f203a79acf 17 data & 0x1000? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1;
jf1vrr 0:46f203a79acf 18 data & 0x0800? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1;
jf1vrr 0:46f203a79acf 19 data & 0x0400? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1;
jf1vrr 0:46f203a79acf 20 data & 0x0200? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1;
jf1vrr 0:46f203a79acf 21 data & 0x0100? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1;
jf1vrr 0:46f203a79acf 22 data & 0x0080? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1;
jf1vrr 0:46f203a79acf 23 data & 0x0040? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1;
jf1vrr 0:46f203a79acf 24 data & 0x0020? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1;
jf1vrr 0:46f203a79acf 25 data & 0x0010? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1;
jf1vrr 0:46f203a79acf 26 data & 0x0008? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1;
jf1vrr 0:46f203a79acf 27 data & 0x0004? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1;
jf1vrr 0:46f203a79acf 28 data & 0x0002? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1;
jf1vrr 0:46f203a79acf 29 data & 0x0001? SDATA = 1 : SDATA = 0;SCLK = 0;SCLK = 1;
jf1vrr 0:46f203a79acf 30 FSYNC = 1;
jf1vrr 0:46f203a79acf 31 }
jf1vrr 0:46f203a79acf 32
jf1vrr 0:46f203a79acf 33 int main() {
jf1vrr 0:46f203a79acf 34 float SetFreq;
jf1vrr 0:46f203a79acf 35 uint32_t temp, freqdata;
jf1vrr 0:46f203a79acf 36 uint16_t Uptemp, Lowtemp;
jf1vrr 0:46f203a79acf 37 char l[63];
jf1vrr 0:46f203a79acf 38
jf1vrr 0:46f203a79acf 39 SCLK = 1;
jf1vrr 0:46f203a79acf 40 SDATA = 0;
jf1vrr 0:46f203a79acf 41 FSYNC = 1;
jf1vrr 0:46f203a79acf 42 FSELECT = 0;
jf1vrr 0:46f203a79acf 43
jf1vrr 0:46f203a79acf 44 lcd.cls();
jf1vrr 0:46f203a79acf 45 lcd.locate(0,0);
jf1vrr 0:46f203a79acf 46 lcd.printf("FSK With AD9834");
jf1vrr 0:46f203a79acf 47
jf1vrr 0:46f203a79acf 48 l[0] = 0x01; //BLNK
jf1vrr 0:46f203a79acf 49 l[1] = 0x01; //BLNK
jf1vrr 0:46f203a79acf 50 l[2] = 0x01; //BLNK
jf1vrr 0:46f203a79acf 51 l[3] = 0x03; //T
jf1vrr 0:46f203a79acf 52 l[4] = 0x0B; //H
jf1vrr 0:46f203a79acf 53 l[5] = 0x21; //E
jf1vrr 0:46f203a79acf 54 l[6] = 0x09; //SP
jf1vrr 0:46f203a79acf 55 l[7] = 0x3B; //Q
jf1vrr 0:46f203a79acf 56 l[8] = 0x39; //U
jf1vrr 0:46f203a79acf 57 l[9] = 0x19; //I
jf1vrr 0:46f203a79acf 58 l[10] = 0x1D; //C
jf1vrr 0:46f203a79acf 59 l[11] = 0x3D; //K
jf1vrr 0:46f203a79acf 60 l[12] = 0x09; //SP
jf1vrr 0:46f203a79acf 61 l[13] = 0x27; //B
jf1vrr 0:46f203a79acf 62 l[14] = 0x15; //R
jf1vrr 0:46f203a79acf 63 l[15] = 0x07; //O
jf1vrr 0:46f203a79acf 64 l[16] = 0x33; //W
jf1vrr 0:46f203a79acf 65 l[17] = 0x0D; //N
jf1vrr 0:46f203a79acf 66 l[18] = 0x09; //SP
jf1vrr 0:46f203a79acf 67 l[19] = 0x2D; //F
jf1vrr 0:46f203a79acf 68 l[20] = 0x07; //O
jf1vrr 0:46f203a79acf 69 l[21] = 0x2F; //X
jf1vrr 0:46f203a79acf 70 l[22] = 0x09; //SP
jf1vrr 0:46f203a79acf 71 l[23] = 0x35; //J
jf1vrr 0:46f203a79acf 72 l[24] = 0x39; //U
jf1vrr 0:46f203a79acf 73 l[25] = 0x0F; //M
jf1vrr 0:46f203a79acf 74 l[26] = 0x1B; //P
jf1vrr 0:46f203a79acf 75 l[27] = 0x29; //S
jf1vrr 0:46f203a79acf 76 l[28] = 0x09; //SP
jf1vrr 0:46f203a79acf 77 l[29] = 0x07; //O
jf1vrr 0:46f203a79acf 78 l[30] = 0x1F; //V
jf1vrr 0:46f203a79acf 79 l[31] = 0x21; //E
jf1vrr 0:46f203a79acf 80 l[32] = 0x15; //R
jf1vrr 0:46f203a79acf 81 l[33] = 0x09; //SP
jf1vrr 0:46f203a79acf 82 l[34] = 0x03; //T
jf1vrr 0:46f203a79acf 83 l[35] = 0x0B; //H
jf1vrr 0:46f203a79acf 84 l[36] = 0x21; //E
jf1vrr 0:46f203a79acf 85 l[37] = 0x09; //SP
jf1vrr 0:46f203a79acf 86 l[38] = 0x13; //L
jf1vrr 0:46f203a79acf 87 l[39] = 0x31; //A
jf1vrr 0:46f203a79acf 88 l[40] = 0x23; //Z
jf1vrr 0:46f203a79acf 89 l[41] = 0x2B; //Y
jf1vrr 0:46f203a79acf 90 l[42] = 0x09; //SP
jf1vrr 0:46f203a79acf 91 l[43] = 0x25; //D
jf1vrr 0:46f203a79acf 92 l[44] = 0x07; //O
jf1vrr 0:46f203a79acf 93 l[45] = 0x17; //G
jf1vrr 0:46f203a79acf 94 l[46] = 0x37; //Figures
jf1vrr 0:46f203a79acf 95 l[47] = 0x0F; //.
jf1vrr 0:46f203a79acf 96 l[48] = 0x09; //SP
jf1vrr 0:46f203a79acf 97 l[49] = 0x37; //Figures
jf1vrr 0:46f203a79acf 98 l[50] = 0x3B; //1
jf1vrr 0:46f203a79acf 99 l[51] = 0x33; //2
jf1vrr 0:46f203a79acf 100 l[52] = 0x21; //3
jf1vrr 0:46f203a79acf 101 l[53] = 0x15; //4
jf1vrr 0:46f203a79acf 102 l[54] = 0x03; //5
jf1vrr 0:46f203a79acf 103 l[55] = 0x2B; //6
jf1vrr 0:46f203a79acf 104 l[56] = 0x39; //7
jf1vrr 0:46f203a79acf 105 l[57] = 0x19; //8
jf1vrr 0:46f203a79acf 106 l[58] = 0x07; //9
jf1vrr 0:46f203a79acf 107 l[59] = 0x1B; //0
jf1vrr 0:46f203a79acf 108 l[60] = 0x05; //CR
jf1vrr 0:46f203a79acf 109 l[61] = 0x11; //LF
jf1vrr 0:46f203a79acf 110 l[62] = 0x3F; //Letter
jf1vrr 0:46f203a79acf 111
jf1vrr 0:46f203a79acf 112 freqdata = 7030000; //Space
jf1vrr 0:46f203a79acf 113 SetFreq = 5.592405 * (uint32_t)freqdata;
jf1vrr 0:46f203a79acf 114 temp = (uint32_t)SetFreq;
jf1vrr 0:46f203a79acf 115 Lowtemp = (uint16_t)(temp & 0x3FFF);
jf1vrr 0:46f203a79acf 116 Uptemp = (uint16_t)((temp/16384) & 0x3FFF);
jf1vrr 0:46f203a79acf 117 serial_out(0x2228);
jf1vrr 0:46f203a79acf 118 serial_out(Lowtemp + 0x4000);
jf1vrr 0:46f203a79acf 119 serial_out(Uptemp + 0x4000);
jf1vrr 0:46f203a79acf 120
jf1vrr 0:46f203a79acf 121 freqdata = 7030170; //Mark
jf1vrr 0:46f203a79acf 122 SetFreq = 5.592405 * (uint32_t)freqdata;
jf1vrr 0:46f203a79acf 123 temp = (uint32_t)SetFreq;
jf1vrr 0:46f203a79acf 124 Lowtemp = (uint16_t)(temp & 0x3FFF);
jf1vrr 0:46f203a79acf 125 Uptemp = (uint16_t)((temp/16384) & 0x3FFF);
jf1vrr 0:46f203a79acf 126 serial_out(0x2A28);
jf1vrr 0:46f203a79acf 127 serial_out(Lowtemp + 0x8000);
jf1vrr 0:46f203a79acf 128 serial_out(Uptemp + 0x8000);
jf1vrr 0:46f203a79acf 129
jf1vrr 0:46f203a79acf 130 while(1){
jf1vrr 0:46f203a79acf 131 for(int i = 0; i < 64; i++){
jf1vrr 0:46f203a79acf 132 for(int j = 0; j < 7; j++){
jf1vrr 0:46f203a79acf 133 if((l[i] << j + 1) & 0x80) FSELECT = 1; else FSELECT = 0;
jf1vrr 0:46f203a79acf 134 if(j != 6) wait_ms(22); else wait_ms(33);
jf1vrr 0:46f203a79acf 135 }
jf1vrr 0:46f203a79acf 136 }
jf1vrr 0:46f203a79acf 137 wait_ms(1000);
jf1vrr 0:46f203a79acf 138 }
jf1vrr 0:46f203a79acf 139 }