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
Revision 3:e1a6e12233dd, committed 2014-07-17
- Comitter:
- liangzhen
- Date:
- Thu Jul 17 22:16:45 2014 +0000
- Parent:
- 2:e94460b2149f
- Commit message:
- simplify for functional purpose only
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DDRO_Farrari.lib Thu Jul 17 22:16:45 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/liangzhen/code/DDRO_Farrari/#e94460b2149f
--- a/main.cpp Thu Feb 20 03:40:20 2014 +0000 +++ b/main.cpp Thu Jul 17 22:16:45 2014 +0000 @@ -28,21 +28,22 @@ results_file=fopen("/local/results.txt", "a"); // Open "out.txt" on the local file system for writing #endif - - //wdt.kick(20.0); - pc.printf("Begin FFT\r\n"); + // power up the board + pc.printf("Begin\r\n"); power_down(); power_up(core_volt); // Power Up Chip pc.printf("Powered up!\r\n"); + pc.printf("Start reading IDCode...\r\n"); + // initializing the resets PORESETn = 0; CORERESETn = 0; wait_us(100); - pc.getc(); PORESETn = 1; CORERESETn = 1; - pc.getc(); JTAG jtag; + + // read and verify chip ID int idcode = jtag.readID(); if(idcode != 0x4ba00477) { pc.printf("ERROR: IDCode %X\r\n", idcode); @@ -52,84 +53,43 @@ } pc.printf("IDCode %X\r\n", idcode); + // power up the JTAG port jtag.reset(); jtag.leaveState(); jtag.PowerupDAP(); + // setup necessary internal clock source selection jtag.writeMemory(intclk_source, 2); jtag.writeMemory(extclk_source, 1); jtag.writeMemory(ext_div_by, 10); - for(int iter=0; iter<3; iter++) { -#ifdef WRITE_RESULTS - fprintf(results_file,"Iteration: %d\n", iter); -#endif - float voltage=1; - for(int i=0; i<=5; i++) { - voltage = 1 - 0.04*i; - power_core(voltage); -#ifdef WRITE_RESULTS - fprintf(results_file,"V: %f\n", voltage); -#endif - int upper = 120; - int lower = 22; - while (upper-lower > 1) { - int middle = (upper+lower)/2; - middle = middle * 5; - bool if_pass = true; - for (int j=1; j<10; j++) { - if(!check_FFT_Freq(jtag,middle)) { - if_pass = false; - j=10; - } - } - if(if_pass) { - lower = middle/5; - } else { - upper = middle/5; - } - } - pc.printf("fft working frequency: %d MHz\r\n", lower*5); -#ifdef WRITE_RESULTS - fprintf(results_file,"FFT: %d\n", lower*5); -#endif - set_pll_frequency (200, jtag); - DDRO_Sensor(jtag); - wait(1); - gain_ctrl=1; -#ifdef WRITE_RESULTS - fprintf(results_file,"GAIN_CTRL = 1\r\n"); - fprintf(results_file,"SEN: %f\r\n",meas_sen.read()); - fprintf(results_file,"MEM1: %f\r\n",meas_mem1.read()); - fprintf(results_file,"MEM2: %f\r\n",meas_mem2.read()); - fprintf(results_file,"CORE: %f\r\n",meas_core.read()); -#endif - wait(1); - gain_ctrl=0; -#ifdef WRITE_RESULTS + + float voltage=1; + power_core(voltage); + pc.printf("V: %f\r\n", voltage); - fprintf(results_file,"GAIN_CTRL = 0\r\n"); - fprintf(results_file,"SEN: %f\r\n",meas_sen.read()); - fprintf(results_file,"MEM1: %f\r\n",meas_mem1.read()); - fprintf(results_file,"MEM2: %f\r\n",meas_mem2.read()); - fprintf(results_file,"CORE: %f\r\n",meas_core.read()); -#endif - } + // load program + if(jtag.loadProgram()) { + dual_printf("Load Failed"); + exit(1); } - /* - - jtag.writeMemory(ddro_pad_out, 0xffffffff); - printf("Reading ddro pad out %x\r\n", jtag.readMemory(ddro_pad_out)); - jtag.writeMemory(ddro_div_by, 0xffffffff); - printf("Reading ddro div by %x\r\n", jtag.readMemory(ddro_div_by)); - */ - - - + + // reset the core and let it run + CORERESETn = 0; + CORERESETn = 1; + wait(0.2); + + // open the JTAG port again + jtag.reset(); + jtag.leaveState(); + jtag.PowerupDAP(); + + // verify the output here with the following functions + // unsigned int readMemory(unsigned int address); + // void writeMemory(unsigned int address, unsigned int value); + + pc.printf("Powering Down\r\n"); power_down(); -#ifdef WRITE_RESULTS - fclose(results_file); -#endif pc.printf("Done\r\n"); while(1) { myled = 1; @@ -219,29 +179,29 @@ //printf("ends at: %d\r\n", meas1); if ( (float)delta2/meas1_e>=0.95 && (float)delta2/meas1_e<=1.05 ) { - pc.printf("RO %d: %d\n\r", ro_id, (delta2+meas1_e)/2); + pc.printf("RO %d: %d\r\n", ro_id, (delta2+meas1_e)/2); #ifdef WRITE_RESULTS - fprintf(results_file,"RO %d: %d\n\r", ro_id, (delta2+meas1_e)/2); + fprintf(results_file,"RO %d: %d\r\n", ro_id, (delta2+meas1_e)/2); #endif } else if ((float)delta1/meas2_e>=0.95 && (float)delta1/meas2_e<=1.05 ) { - pc.printf("RO %d: %d\n\r", ro_id, (delta1+meas2_e)/2); + pc.printf("RO %d: %d\r\n", ro_id, (delta1+meas2_e)/2); #ifdef WRITE_RESULTS - fprintf(results_file,"RO %d: %d\n\r", ro_id, (delta1+meas2_e)/2); + fprintf(results_file,"RO %d: %d\r\n", ro_id, (delta1+meas2_e)/2); #endif } else if ( (float)delta2/delta1 >=0.95 && (float)delta2/delta1<=1.05 ) { - pc.printf("RO %d: %d\n\r", ro_id, (delta1+delta2)/2); + pc.printf("RO %d: %d\r\n", ro_id, (delta1+delta2)/2); #ifdef WRITE_RESULTS - fprintf(results_file,"RO %d: %d\n\r", ro_id, (delta1+delta2)/2); + fprintf(results_file,"RO %d: %d\r\n", ro_id, (delta1+delta2)/2); #endif } else if ( (float)meas2_e/meas1_e >=0.95 && (float)meas2_e/meas1_e<=1.05 ) { - pc.printf("RO %d: %d\n\r", ro_id, (meas1_e+meas2_e)/2); + pc.printf("RO %d: %d\r\n", ro_id, (meas1_e+meas2_e)/2); #ifdef WRITE_RESULTS - fprintf(results_file,"RO %d: %d\n\r", ro_id, (meas1_e+meas2_e)/2); + fprintf(results_file,"RO %d: %d\r\n", ro_id, (meas1_e+meas2_e)/2); #endif } else { - pc.printf("Error in measuring DDRO %d\n\r", ro_id); + pc.printf("Error in measuring DDRO %d\r\n", ro_id); #ifdef WRITE_RESULTS - fprintf(results_file,"Error in measuring DDRO %d\n\r", ro_id); + fprintf(results_file,"Error in measuring DDRO %d\r\n", ro_id); #endif } }
--- a/power.cpp Thu Feb 20 03:40:20 2014 +0000 +++ b/power.cpp Thu Jul 17 22:16:45 2014 +0000 @@ -49,7 +49,7 @@ wait(POWER_UP_TIME); power_chan(PLLAVDD, periph_volt); wait(POWER_UP_TIME); - + // Sensor power_chan(SENSORVDD, core_volt);//power_chan(SENSORVDD, 1.0); wait(POWER_UP_TIME);