Liangzhen Lai / Mbed 2 deprecated DDRO_software

Dependencies:   mbed

Committer:
liangzhen
Date:
Thu Sep 20 23:45:05 2012 +0000
Revision:
3:764ccaf29ce9
Parent:
2:42e8a4eb3c00
Child:
4:fc56fa8aa794
changes for speed binnning

Who changed what in which revision?

UserRevisionLine numberNew contents of line
liangzhen 0:c928c2d8bd02 1 #include "power_up.h"
liangzhen 0:c928c2d8bd02 2 #include "scan.h"
liangzhen 1:acf14b6dd1be 3 #include "master_i2c.h"
liangzhen 1:acf14b6dd1be 4 #include "JTAG.h"
liangzhen 0:c928c2d8bd02 5 using namespace std;
liangzhen 0:c928c2d8bd02 6
liangzhen 0:c928c2d8bd02 7 DigitalOut RESET (p21);
liangzhen 0:c928c2d8bd02 8
liangzhen 0:c928c2d8bd02 9 Serial s(USBTX, USBRX);
liangzhen 3:764ccaf29ce9 10 DigitalOut finish_flag (LED3);
liangzhen 1:acf14b6dd1be 11
liangzhen 3:764ccaf29ce9 12 int main()
liangzhen 3:764ccaf29ce9 13 {
liangzhen 0:c928c2d8bd02 14 s.printf("DDRO_software starts ...\r\n");
liangzhen 3:764ccaf29ce9 15 double voltage = 1;
liangzhen 0:c928c2d8bd02 16 PLL clk;
liangzhen 3:764ccaf29ce9 17 JTAG jtag;
liangzhen 3:764ccaf29ce9 18 int* ro_readings = new int [64];
liangzhen 3:764ccaf29ce9 19 FILE *outFile = fopen("/local/test.out", "a");
liangzhen 3:764ccaf29ce9 20 for (int i=0; i<7; i++) {
liangzhen 3:764ccaf29ce9 21 voltage = 1 - 0.05*i;
liangzhen 3:764ccaf29ce9 22 powerReset();
liangzhen 3:764ccaf29ce9 23 powerUp(voltage);
liangzhen 3:764ccaf29ce9 24 fprintf(outFile, "Voltage: %f\n", voltage);
liangzhen 3:764ccaf29ce9 25 RESET = 0;
liangzhen 3:764ccaf29ce9 26 wait_us(10);
liangzhen 3:764ccaf29ce9 27 RESET = 1;
liangzhen 3:764ccaf29ce9 28 master_write();
liangzhen 3:764ccaf29ce9 29 master_read(ro_readings);
liangzhen 3:764ccaf29ce9 30
liangzhen 3:764ccaf29ce9 31 for (int ii=0; ii<64; ii++) {
liangzhen 3:764ccaf29ce9 32 fprintf(outFile, "RO %d %d\n", ii, ro_readings[ii]);
liangzhen 3:764ccaf29ce9 33 }
liangzhen 3:764ccaf29ce9 34 int fmax;
liangzhen 3:764ccaf29ce9 35 int lower = 51;
liangzhen 3:764ccaf29ce9 36 int higher = 199;
liangzhen 3:764ccaf29ce9 37 int frequency = (lower+higher)/2;
liangzhen 3:764ccaf29ce9 38 clk.setPLL(frequency))
liangzhen 3:764ccaf29ce9 39 RESET = 0;
liangzhen 3:764ccaf29ce9 40 wait_us(10);
liangzhen 3:764ccaf29ce9 41 RESET = 1;
liangzhen 3:764ccaf29ce9 42 while (higher - lower >1) {
liangzhen 3:764ccaf29ce9 43 if(jtag.JTAG_test()) {
liangzhen 3:764ccaf29ce9 44 lower = frequency;
liangzhen 3:764ccaf29ce9 45 frequency = (lower+higher)/2;
liangzhen 3:764ccaf29ce9 46 clk.setPLL(frequency);
liangzhen 3:764ccaf29ce9 47 RESET = 0;
liangzhen 3:764ccaf29ce9 48 wait_us(10);
liangzhen 3:764ccaf29ce9 49 RESET = 1;
liangzhen 3:764ccaf29ce9 50 } else {
liangzhen 3:764ccaf29ce9 51 higher = frequency;
liangzhen 3:764ccaf29ce9 52 frequency = (lower+higher)/2;
liangzhen 3:764ccaf29ce9 53 clk.setPLL(frequency);
liangzhen 3:764ccaf29ce9 54 RESET = 0;
liangzhen 3:764ccaf29ce9 55 wait_us(10);
liangzhen 3:764ccaf29ce9 56 RESET = 1;
liangzhen 3:764ccaf29ce9 57 }
liangzhen 3:764ccaf29ce9 58 }
liangzhen 3:764ccaf29ce9 59 fprintf(outFile, "fmax %d\n", lower*5);
liangzhen 3:764ccaf29ce9 60 powerDown();
liangzhen 0:c928c2d8bd02 61 }
liangzhen 3:764ccaf29ce9 62 fclose(outFile);
liangzhen 0:c928c2d8bd02 63 s.printf("DDRO_software ends.\r\n");
liangzhen 3:764ccaf29ce9 64 while(1) {
liangzhen 3:764ccaf29ce9 65 finish_flag = !finish_flag;
liangzhen 3:764ccaf29ce9 66 wait(1);
liangzhen 3:764ccaf29ce9 67 }
liangzhen 0:c928c2d8bd02 68 }