Liangzhen Lai / Mbed 2 deprecated DDRO_software

Dependencies:   mbed

Committer:
liangzhen
Date:
Fri Aug 03 06:10:02 2012 +0000
Revision:
1:acf14b6dd1be
Parent:
0:c928c2d8bd02
Child:
3:764ccaf29ce9
DDRO software for the testbed;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
liangzhen 0:c928c2d8bd02 1 #include "power_up.h"
liangzhen 0:c928c2d8bd02 2 using namespace std;
liangzhen 0:c928c2d8bd02 3
liangzhen 0:c928c2d8bd02 4 #define ADDR 0x98 //change to 94 or 98 if doesn't work
liangzhen 0:c928c2d8bd02 5 #define POWER_UP_TIME 1
liangzhen 0:c928c2d8bd02 6
liangzhen 0:c928c2d8bd02 7 I2C i2c(p9, p10); //sda, scl
liangzhen 0:c928c2d8bd02 8 DigitalOut ADDR0(p6); //ADDR0 in DAC
liangzhen 0:c928c2d8bd02 9 //Serial pc(USBTX, USBRX);//tx, rx => for debugging purposes
liangzhen 0:c928c2d8bd02 10 DigitalOut power_indicator (LED1);
liangzhen 0:c928c2d8bd02 11 DigitalOut power_error_indicator (LED4);
liangzhen 0:c928c2d8bd02 12 DigitalOut LDAC_BAR(p7);
liangzhen 0:c928c2d8bd02 13 DigitalOut CLR_BAR(p5);
liangzhen 0:c928c2d8bd02 14
liangzhen 0:c928c2d8bd02 15 void power(const int A, char CA, char MSDB, char LSDB) {
liangzhen 0:c928c2d8bd02 16 int state;
liangzhen 0:c928c2d8bd02 17 char data[3];
liangzhen 0:c928c2d8bd02 18 data[0]=CA;
liangzhen 0:c928c2d8bd02 19 data[1]=MSDB;
liangzhen 0:c928c2d8bd02 20 data[2]=LSDB;
liangzhen 0:c928c2d8bd02 21 debugPower();
liangzhen 0:c928c2d8bd02 22 power_error_indicator = 1;
liangzhen 0:c928c2d8bd02 23 //pc.printf ("%X\n", A);
liangzhen 0:c928c2d8bd02 24 while (i2c.write(A,data,3,false)) {
liangzhen 0:c928c2d8bd02 25 }
liangzhen 0:c928c2d8bd02 26 power_error_indicator = 0;
liangzhen 0:c928c2d8bd02 27 }
liangzhen 0:c928c2d8bd02 28
liangzhen 0:c928c2d8bd02 29 void powerUp() {
liangzhen 0:c928c2d8bd02 30 power(ADDR,0x31,0x8B,0xA0) ; //update channel B 1.8V DVDD2
liangzhen 0:c928c2d8bd02 31 wait(POWER_UP_TIME);
liangzhen 0:c928c2d8bd02 32 power(ADDR,0x37,0x4D,0x90) ; //update channel H 1V AVDD
liangzhen 0:c928c2d8bd02 33 wait(POWER_UP_TIME);
liangzhen 0:c928c2d8bd02 34 power(ADDR,0x35,0x26,0xC0) ; //update channel F 0.5V AVDD2
liangzhen 0:c928c2d8bd02 35 wait(POWER_UP_TIME);
liangzhen 0:c928c2d8bd02 36 power(ADDR,0x34,0x4D,0x90) ; //update channel E 1V WRAPPERVD
liangzhen 0:c928c2d8bd02 37 wait(POWER_UP_TIME);
liangzhen 0:c928c2d8bd02 38 power(ADDR,0x32,0x4D,0x90) ; //update channel C 1V COREVDD
liangzhen 0:c928c2d8bd02 39 wait(POWER_UP_TIME);
liangzhen 0:c928c2d8bd02 40 power(ADDR,0x30,0x4D,0x90) ; //update channel A 1V SRAMVDD
liangzhen 0:c928c2d8bd02 41 wait(POWER_UP_TIME);
liangzhen 0:c928c2d8bd02 42 power(ADDR,0x36,0x4D,0x90) ; //update channel G 1V SENSEVDD
liangzhen 0:c928c2d8bd02 43 wait(POWER_UP_TIME);
liangzhen 0:c928c2d8bd02 44 power_indicator = 1;
liangzhen 0:c928c2d8bd02 45 power(ADDR,0x33,0xFF,0xF0) ; //update channel D 3.3V DVDD
liangzhen 0:c928c2d8bd02 46 wait(POWER_UP_TIME);
liangzhen 0:c928c2d8bd02 47 }
liangzhen 0:c928c2d8bd02 48 void powerDown() {
liangzhen 0:c928c2d8bd02 49 power(ADDR,0x33,0x00,0x00) ; //update channel D 3.3V DVDD
liangzhen 0:c928c2d8bd02 50 wait(POWER_UP_TIME);
liangzhen 0:c928c2d8bd02 51 power_indicator = 0;
liangzhen 0:c928c2d8bd02 52 power(ADDR,0x37,0x00,0x00) ; //update channel H 1V AVDD
liangzhen 0:c928c2d8bd02 53 wait(POWER_UP_TIME);
liangzhen 0:c928c2d8bd02 54 power(ADDR,0x35,0x00,0x00) ; //update channel F 0.5V AVDD2
liangzhen 0:c928c2d8bd02 55 wait(POWER_UP_TIME);
liangzhen 0:c928c2d8bd02 56 power(ADDR,0x34,0x00,0x00) ; //update channel E 1V WRAPPERVD
liangzhen 0:c928c2d8bd02 57 wait(POWER_UP_TIME);
liangzhen 0:c928c2d8bd02 58 power(ADDR,0x32,0x00,0x00) ; //update channel C 1V COREVDD
liangzhen 0:c928c2d8bd02 59 wait(POWER_UP_TIME);
liangzhen 0:c928c2d8bd02 60 power(ADDR,0x30,0x00,0x00) ; //update channel A 1V SRAMVDD
liangzhen 0:c928c2d8bd02 61 wait(POWER_UP_TIME);
liangzhen 0:c928c2d8bd02 62 power(ADDR,0x36,0x00,0x00) ; //update channel G 1V SENSEVDD
liangzhen 0:c928c2d8bd02 63 wait(POWER_UP_TIME);
liangzhen 1:acf14b6dd1be 64 // power(ADDR,0x31,0x00,0x00) ; //update channel B 1.8V DVDD2
liangzhen 1:acf14b6dd1be 65 // wait(POWER_UP_TIME);
liangzhen 0:c928c2d8bd02 66 }
liangzhen 0:c928c2d8bd02 67
liangzhen 0:c928c2d8bd02 68 void powerReset() {
liangzhen 0:c928c2d8bd02 69 power_indicator = 0;
liangzhen 0:c928c2d8bd02 70 CLR_BAR = 0;
liangzhen 0:c928c2d8bd02 71 ADDR0 = 0;
liangzhen 0:c928c2d8bd02 72 LDAC_BAR = 0;
liangzhen 0:c928c2d8bd02 73 CLR_BAR = 1;
liangzhen 0:c928c2d8bd02 74 }
liangzhen 0:c928c2d8bd02 75
liangzhen 0:c928c2d8bd02 76 void debugPower() {
liangzhen 0:c928c2d8bd02 77 char data[3];
liangzhen 0:c928c2d8bd02 78 data[0]=0x31;
liangzhen 0:c928c2d8bd02 79 data[1]=0x8B;
liangzhen 0:c928c2d8bd02 80 data[2]=0xA0;
liangzhen 0:c928c2d8bd02 81 int A = 0;
liangzhen 0:c928c2d8bd02 82 for (A = 0; A<=0xFF; A++) {
liangzhen 0:c928c2d8bd02 83 if (i2c.write(A,data,3,false)==0) {
liangzhen 0:c928c2d8bd02 84 //pc.printf ("%X\n", A);
liangzhen 0:c928c2d8bd02 85 }
liangzhen 0:c928c2d8bd02 86 }
liangzhen 0:c928c2d8bd02 87 }