masa miya
/
DDS_AD9834
AD9834 DDS Sinewave
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 /*AD9834 DDS Test 2011/07/14 MLabo*/ 00002 #include "mbed.h" 00003 #include "TextLCD.h" 00004 00005 TextLCD lcd(p24, p26, p27, p28, p29, p30); //Starboard Orenge 00006 DigitalOut FSYNC(p18); 00007 DigitalOut SCLK(p19); 00008 DigitalOut SDATA(p20); 00009 00010 Timer timer; 00011 00012 void serial_out(uint16_t data) { 00013 00014 FSYNC = 0; 00015 data & 0x8000? SDATA = 1 : SDATA = 0; SCLK = 0; SCLK = 1; 00016 data & 0x4000? SDATA = 1 : SDATA = 0; SCLK = 0; SCLK = 1; 00017 data & 0x2000? SDATA = 1 : SDATA = 0; SCLK = 0; SCLK = 1; 00018 data & 0x1000? SDATA = 1 : SDATA = 0; SCLK = 0; SCLK = 1; 00019 data & 0x0800? SDATA = 1 : SDATA = 0; SCLK = 0; SCLK = 1; 00020 data & 0x0400? SDATA = 1 : SDATA = 0; SCLK = 0; SCLK = 1; 00021 data & 0x0200? SDATA = 1 : SDATA = 0; SCLK = 0; SCLK = 1; 00022 data & 0x0100? SDATA = 1 : SDATA = 0; SCLK = 0; SCLK = 1; 00023 data & 0x0080? SDATA = 1 : SDATA = 0; SCLK = 0; SCLK = 1; 00024 data & 0x0040? SDATA = 1 : SDATA = 0; SCLK = 0; SCLK = 1; 00025 data & 0x0020? SDATA = 1 : SDATA = 0; SCLK = 0; SCLK = 1; 00026 data & 0x0010? SDATA = 1 : SDATA = 0; SCLK = 0; SCLK = 1; 00027 data & 0x0008? SDATA = 1 : SDATA = 0; SCLK = 0; SCLK = 1; 00028 data & 0x0004? SDATA = 1 : SDATA = 0; SCLK = 0; SCLK = 1; 00029 data & 0x0002? SDATA = 1 : SDATA = 0; SCLK = 0; SCLK = 1; 00030 data & 0x0001? SDATA = 1 : SDATA = 0; SCLK = 0; SCLK = 1; 00031 FSYNC = 1; 00032 } 00033 00034 int main() { 00035 float SetFreq; 00036 uint32_t temp, freqdata; 00037 uint16_t Uptemp, Lowtemp; 00038 int begin, end; 00039 00040 SCLK = 1; 00041 SDATA = 0; 00042 FSYNC = 1; 00043 00044 lcd.cls(); 00045 lcd.locate(0,0); 00046 lcd.printf("AD9834 test" ); 00047 00048 timer.start(); 00049 begin = timer.read_us(); 00050 for ( freqdata = 0; freqdata < 16000000; freqdata++) { 00051 00052 SetFreq = 5.592405 * (uint32_t)freqdata; 00053 temp = (uint32_t)SetFreq; 00054 Lowtemp = (uint16_t)(temp & 0x3FFF); 00055 Uptemp = (uint16_t)((temp/16384) & 0x3FFF); 00056 serial_out(0x2028); 00057 serial_out(Lowtemp + 0x4000); 00058 serial_out(Uptemp + 0x4000); 00059 } 00060 end = timer.read_us(); 00061 lcd.locate(0,1); 00062 lcd.printf("%duS", end - begin); 00063 while (1) {} 00064 00065 }
Generated on Thu Aug 11 2022 17:46:57 by 1.7.2