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
diff -r e94460b2149f -r e1a6e12233dd DDRO_Farrari.lib --- /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
diff -r e94460b2149f -r e1a6e12233dd main.cpp
--- 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
}
}
diff -r e94460b2149f -r e1a6e12233dd power.cpp
--- 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);
