Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: DDRO_Farrari mbed
Fork of DDRO_Farrari by
main.cpp
- Committer:
- liangzhen
- Date:
- 2013-10-07
- Revision:
- 0:84a8bcfbdec9
- Child:
- 1:6a820a0ca03b
File content as of revision 0:84a8bcfbdec9:
#include "mbed.h" #include "dac.h" #include "board_test.h" #include "scan.h" #include "power.h" #include "pinout.h" #include "pll.h" #include "lcd.h" #include "jtag.h" #include "mmap.h" #include "clock.h" #include "EasyBMP.h" extern "C" void mbed_reset(); extern "C" void HardFault_Handler() { mbed_reset(); } class Watchdog { public: // Load timeout value in watchdog timer and enable void kick(float s) { LPC_WDT->WDCLKSEL = 0x1; // Set CLK src to PCLK uint32_t clk = SystemCoreClock / 16; // WD has a fixed /4 prescaler, PCLK default is /4 LPC_WDT->WDTC = s * (float)clk; LPC_WDT->WDMOD = 0x3; // Enabled and Reset kick(); } // "kick" or "feed" the dog - reset the watchdog timer // by writing this required bit pattern void kick() { LPC_WDT->WDFEED = 0xAA; LPC_WDT->WDFEED = 0x55; } }; Watchdog wdt; void DDRO_Sensor(void); int FFT_Freq(float); int main() { float new_power = 0.9; //wdt.kick(20.0); pc.printf("Begin FFT\r\n"); char buffer[21]; power_down(); power_up(new_power); // Power Up Chip pc.printf("Powered up!\r\n"); PORESETn = 0; CORERESETn = 0; PORESETn = 1; CORERESETn = 1; JTAG jtag; int idcode = jtag.readID(); if(idcode != 0x4ba00477) { pc.printf("ERROR: IDCode %X\r\n", idcode); wait(20); power_down(); return -1; } pc.printf("IDCode %X\r\n", idcode); jtag.reset(); jtag.leaveState(); jtag.PowerupDAP(); int freq = FFT_Freq(new_power); pc.printf("fft working frequency: %d MHz\r\n", freq); DDRO_Sensor(); jtag.writeMemory(ddro_pad_out, 0xffffffff); printf("Reading ddro pad out %x\n", jtag.readMemory(ddro_pad_out)); jtag.writeMemory(ddro_div_by, 0xffffffff); printf("Reading ddro div by %x\n", jtag.readMemory(ddro_div_by)); //wdt.kick(); gain_ctrl=0; pc.printf("GAIN_CTRL = 0\r\n"); pc.printf("SEN: %f\r\n",meas_sen.read()); pc.printf("MEM1: %f\r\n",meas_mem1.read()); pc.printf("MEM2: %f\r\n",meas_mem2.read()); pc.printf("CORE: %f\r\n",meas_core.read()); pc.getc(); wait(1); gain_ctrl=1; pc.printf("GAIN_CTRL = 1\r\n"); pc.printf("SEN: %f\r\n",meas_sen.read()); pc.printf("MEM1: %f\r\n",meas_mem1.read()); pc.printf("MEM2: %f\r\n",meas_mem2.read()); pc.printf("CORE: %f\r\n",meas_core.read()); pc.getc(); wait(1); gain_ctrl=0; pc.printf("GAIN_CTRL = 0\r\n"); pc.printf("SEN: %f\r\n",meas_sen.read()); pc.printf("MEM1: %f\r\n",meas_mem1.read()); pc.printf("MEM2: %f\r\n",meas_mem2.read()); pc.printf("CORE: %f\r\n",meas_core.read()); pc.getc(); wait(1); gain_ctrl=1; pc.printf("GAIN_CTRL = 1\r\n"); pc.printf("SEN: %f\r\n",meas_sen.read()); pc.printf("MEM1: %f\r\n",meas_mem1.read()); pc.printf("MEM2: %f\r\n",meas_mem2.read()); pc.printf("CORE: %f\r\n",meas_core.read()); pc.getc(); char paus; pc.printf("Powering Down\r\n"); power_down(); pc.printf("Done\r\n"); } int FFT_Freq(float vdd) { JTAG jtag; char buffer[21]; int counter_set=200; int flag=0; while(flag==0){ //load program if(jtag.loadProgram()) { dual_printf("Load Failed"); exit(1); } jtag.writeMemory(PLL_RESET, 0); jtag_pll(jtag, 1, 1, counter_set, 1, 10, 32 ); jtag.writeMemory(PLL_RESET, 1); jtag.writeMemory(PLL_RESET, 0); unsigned long long freq = calc_pll_freqs(1, 1, counter_set, 1, 10, 32); freq = freq / 1000000; // in MHz int fMHz = freq; // dual_printf(buffer); power_core(vdd); //dual_printf("Resetting"); CORERESETn = 0; CORERESETn = 1; wait(0.2); jtag.reset(); jtag.leaveState(); jtag.PowerupDAP(); // dual_printf("Reset finished"); unsigned int buffer_fft[64]; for (int number1=0; number1<=63; number1++) { buffer_fft[number1] = jtag.readMemory(0x24000100 + number1*4); //printf("new[%d]: %x\n", number1, buffer_fft[number1]); } if ( buffer_fft[0] == 0x0000fffc && buffer_fft[1]==0x0000fffd && buffer_fft[2]==0xffc0000a && buffer_fft[3]==0x0000fffe && buffer_fft[4]==0x0000fffd && buffer_fft[5]==0x0000ffff && buffer_fft[6]==0x0000fffd && buffer_fft[7]==0x00000000 && buffer_fft[8]==0x0000ffff && buffer_fft[9]==0x0000ffff && buffer_fft[10]==0xfffeffff && buffer_fft[11]==0xffff0000 && buffer_fft[12]==0x0000ffff && buffer_fft[13]==0xffff0000 && buffer_fft[14]==0xfffffffe && buffer_fft[15]==0xffff0000 && buffer_fft[16]==0x00010000 && buffer_fft[17]==0x0001ffff && buffer_fft[18]==0x0000ffff && buffer_fft[19]==0x0001ffff && buffer_fft[20]==0x0001fffe && buffer_fft[21]==0x0000fffe && buffer_fft[22]==0x0001fffe && buffer_fft[23]==0x0000ffff && buffer_fft[24]==0x0000ffff && buffer_fft[25]==0x0001fffe && buffer_fft[26]==0x0000ffff && buffer_fft[27]==0x00010000 && buffer_fft[28]==0x0001ffff && buffer_fft[29]==0x00010000 && buffer_fft[30]==0x0000ffff && buffer_fft[31]==0x00010000 && buffer_fft[32]==0x0000ffff && buffer_fft[33]==0x0000ffff && buffer_fft[34]==0x0000ffff && buffer_fft[35]==0x0000ffff && buffer_fft[36]==0x0000fffe && buffer_fft[37]==0x0000ffff && buffer_fft[38]==0x0000fffe && buffer_fft[39]==0x00000000 && buffer_fft[40]==0xffffffff && buffer_fft[41]==0x0000ffff && buffer_fft[42]==0xffffffff && buffer_fft[43]==0x00000000 && buffer_fft[44]==0x0000ffff && buffer_fft[45]==0x00000000 && buffer_fft[46]==0xffffffff && buffer_fft[47]==0x00000000 && buffer_fft[48]==0x00000000 && buffer_fft[49]==0x00000000 && buffer_fft[50]==0x00000000 && buffer_fft[51]==0x00000000 && buffer_fft[52]==0x0000ffff && buffer_fft[53]==0x0000ffff && buffer_fft[54]==0x0000ffff && buffer_fft[55]==0x00000000 && buffer_fft[56]==0xfffeffff && buffer_fft[57]==0xffffffff && buffer_fft[58]==0xffff0000 && buffer_fft[59]==0x00000000 && buffer_fft[60]==0x0000ffff && buffer_fft[61]==0x00000000 && buffer_fft[62]==0x003d000c && buffer_fft[63]==0x00000000 ) { //printf("***********************maximum freq *********************** %d", fMHz); flag = 1; //return fMHz; } else counter_set = counter_set-1; } unsigned long long freq = calc_pll_freqs(1, 1, counter_set, 1, 10, 32); freq = freq / 1000000; // in MHz int fMHz = freq; return fMHz; } void DDRO_Sensor(void){ JTAG jtag; /**********************enable****************************************/ jtag.writeMemory(ddro_syn_en, 0xffffffff); //printf("Reading ddro syn en %x\n", jtag.readMemory(ddro_syn_en)); jtag.writeMemory(ddro_inv_en, 0xffffffff); // printf("Reading ddro inv en %x\n", jtag.readMemory(ddro_inv_en)); /**********************set ref_clk and samp_clk**********************/ jtag.writeMemory(ddro_samp_src, 0x00000000); //printf("Reading ddro ref src %x\n", jtag.readMemory(ddro_ref_src)); jtag.writeMemory(ddro_ref_src, 0x00000003); //printf("Reading samp src %x\n", jtag.readMemory(ddro_samp_src)); /**********************write threshold*******************************/ // printf("Writing threshold\n"); jtag.writeMemory(ddro_threshold, 10); // printf("Reading threshold %d\n", jtag.readMemory(ddro_threshold)); jtag.writeMemory(0xe000e104, 0x000000ff); // enable interrupts /**********************start DDRO************************************/ // printf("Ready to start DDRO \n"); // printf("DDRO starting\n"); jtag.writeMemory(ddro_start, 1);//*ddro_start = 1; /*********************output*****************************************/ printf("Reading ddro_count %d\n", jtag.readMemory(ddro_count)); jtag.writeMemory(ddro_start, 0);//*ddro_start = 1; jtag.writeMemory(ddro_ref_src, 0x00000004); printf("Reading ddro ref src %x\n", jtag.readMemory(ddro_ref_src)); jtag.writeMemory(ddro_start, 1);//*ddro_start = 1; printf("Reading ddro_count %d\n", jtag.readMemory(ddro_count)); jtag.writeMemory(ddro_start, 0); jtag.writeMemory(ddro_ref_src, 0x00000005); printf("Reading ddro ref src %x\n", jtag.readMemory(ddro_ref_src)); jtag.writeMemory(ddro_start, 1); printf("Reading ddro_count %d\n", jtag.readMemory(ddro_count)); jtag.writeMemory(ddro_start, 0); jtag.writeMemory(ddro_ref_src, 0x00000006); printf("Reading ddro ref src %x\n", jtag.readMemory(ddro_ref_src)); jtag.writeMemory(ddro_start, 1); printf("Reading ddro_count %d\n", jtag.readMemory(ddro_count)); jtag.writeMemory(ddro_start, 0); jtag.writeMemory(ddro_ref_src, 0x00000007); printf("Reading ddro ref src %x\n", jtag.readMemory(ddro_ref_src)); jtag.writeMemory(ddro_start, 1); printf("Reading ddro_count %d\n", jtag.readMemory(ddro_count)); jtag.writeMemory(ddro_start, 0); jtag.writeMemory(ddro_ref_src, 0x00000008); printf("Reading ddro ref src %x\n", jtag.readMemory(ddro_ref_src)); jtag.writeMemory(ddro_start, 1); printf("Reading ddro_count %d\n", jtag.readMemory(ddro_count)); jtag.writeMemory(ddro_start, 0); jtag.writeMemory(ddro_ref_src, 0x00000009); printf("Reading ddro ref src %x\n", jtag.readMemory(ddro_ref_src)); jtag.writeMemory(ddro_start, 1); printf("Reading ddro_count %d\n", jtag.readMemory(ddro_count)); jtag.writeMemory(ddro_start, 0); jtag.writeMemory(ddro_ref_src, 0x0000000a); printf("Reading ddro ref src %x\n", jtag.readMemory(ddro_ref_src)); jtag.writeMemory(ddro_start, 1); printf("Reading ddro_count %d\n", jtag.readMemory(ddro_count)); jtag.writeMemory(ddro_start, 0); jtag.writeMemory(ddro_ref_src, 0x0000000b); printf("Reading ddro ref src %x\n", jtag.readMemory(ddro_ref_src)); jtag.writeMemory(ddro_start, 1); printf("Reading ddro_count %d\n", jtag.readMemory(ddro_count)); jtag.writeMemory(ddro_start, 0); jtag.writeMemory(ddro_ref_src, 0x0000000c); printf("Reading ddro ref src %x\n", jtag.readMemory(ddro_ref_src)); jtag.writeMemory(ddro_start, 1); printf("Reading ddro_count %d\n", jtag.readMemory(ddro_count)); jtag.writeMemory(ddro_start, 0); jtag.writeMemory(ddro_ref_src, 0x0000000d); printf("Reading ddro ref src %x\n", jtag.readMemory(ddro_ref_src)); jtag.writeMemory(ddro_start, 1); printf("Reading ddro_count %d\n", jtag.readMemory(ddro_count)); jtag.writeMemory(ddro_start, 0); jtag.writeMemory(ddro_ref_src, 0x0000000e); printf("Reading ddro ref src %x\n", jtag.readMemory(ddro_ref_src)); jtag.writeMemory(ddro_start, 1); printf("Reading ddro_count %d\n", jtag.readMemory(ddro_count)); jtag.writeMemory(ddro_start, 0); jtag.writeMemory(ddro_ref_src, 0x0000000f); printf("Reading ddro ref src %x\n", jtag.readMemory(ddro_ref_src)); jtag.writeMemory(ddro_start, 1); printf("Reading ddro_count %d\n", jtag.readMemory(ddro_count)); jtag.writeMemory(ddro_start, 0); jtag.writeMemory(ddro_ref_src, 0x00000010); printf("Reading ddro ref src %x\n", jtag.readMemory(ddro_ref_src)); jtag.writeMemory(ddro_start, 1); printf("Reading ddro_count %d\n", jtag.readMemory(ddro_count)); jtag.writeMemory(ddro_start, 0); jtag.writeMemory(ddro_ref_src, 0x00000011); printf("Reading ddro ref src %x\n", jtag.readMemory(ddro_ref_src)); jtag.writeMemory(ddro_start, 1); printf("Reading ddro_count %d\n", jtag.readMemory(ddro_count)); jtag.writeMemory(ddro_start, 0); jtag.writeMemory(ddro_ref_src, 0x00000012); printf("Reading ddro ref src %x\n", jtag.readMemory(ddro_ref_src)); jtag.writeMemory(ddro_start, 1); printf("Reading ddro_count %d\n", jtag.readMemory(ddro_count)); jtag.writeMemory(ddro_start, 0); jtag.writeMemory(ddro_ref_src, 0x00000013); printf("Reading ddro ref src %x\n", jtag.readMemory(ddro_ref_src)); jtag.writeMemory(ddro_start, 1); printf("Reading ddro_count %d\n", jtag.readMemory(ddro_count)); jtag.writeMemory(ddro_start, 0); jtag.writeMemory(ddro_ref_src, 0x00000014); printf("Reading ddro ref src %x\n", jtag.readMemory(ddro_ref_src)); jtag.writeMemory(ddro_start, 1); printf("Reading ddro_count %d\n", jtag.readMemory(ddro_count)); jtag.writeMemory(ddro_start, 0); jtag.writeMemory(ddro_ref_src, 0x00000015); printf("Reading ddro ref src %x\n", jtag.readMemory(ddro_ref_src)); jtag.writeMemory(ddro_start, 1); printf("Reading ddro_count %d\n", jtag.readMemory(ddro_count)); jtag.writeMemory(ddro_start, 0); jtag.writeMemory(ddro_ref_src, 0x00000016); printf("Reading ddro ref src %x\n", jtag.readMemory(ddro_ref_src)); jtag.writeMemory(ddro_start, 1); printf("Reading ddro_count %d\n", jtag.readMemory(ddro_count)); jtag.writeMemory(ddro_start, 0); jtag.writeMemory(ddro_ref_src, 0x00000017); printf("Reading ddro ref src %x\n", jtag.readMemory(ddro_ref_src)); jtag.writeMemory(ddro_start, 1); printf("Reading ddro_count %d\n", jtag.readMemory(ddro_count)); jtag.writeMemory(ddro_start, 0); jtag.writeMemory(ddro_ref_src, 0x00000018); printf("Reading ddro ref src %x\n", jtag.readMemory(ddro_ref_src)); jtag.writeMemory(ddro_start, 1); printf("Reading ddro_count %d\n", jtag.readMemory(ddro_count)); jtag.writeMemory(ddro_start, 0); jtag.writeMemory(ddro_ref_src, 0x00000019); printf("Reading ddro ref src %x\n", jtag.readMemory(ddro_ref_src)); jtag.writeMemory(ddro_start, 1); printf("Reading ddro_count %d\n", jtag.readMemory(ddro_count)); jtag.writeMemory(ddro_start, 0); }