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
power.cpp
- Committer:
- liangzhen
- Date:
- 2013-10-07
- Revision:
- 0:84a8bcfbdec9
- Child:
- 1:6a820a0ca03b
File content as of revision 0:84a8bcfbdec9:
#include "dac.h" #include "power.h" using namespace std; #define INA_GAIN 200 /* float current_meas(bool core) { float ampv = meas_amp * 3.3; float vdrop = ampv / INA_GAIN; float res = 1; if(core){ res = 0.25; } return vdrop / res; } */ void power_core(float core_volt) { float periph_volt = core_volt; if(core_volt > 1.1){ periph_volt = 1.1; } if(core_volt < 0.9){ periph_volt = 0.9; } float mem_volt = core_volt; power_chan(PADVDD, periph_volt); wait(POWER_UP_TIME); // Core and Memory power_chan(COREVDD, core_volt); wait(POWER_UP_TIME); power_chan(MEM1VDD, mem_volt); wait(POWER_UP_TIME); power_chan(MEM2VDD, mem_volt); wait(POWER_UP_TIME); // Clock power_chan(CLOCKVDD, periph_volt); wait(POWER_UP_TIME); power_chan(PLLAVDD, periph_volt); wait(POWER_UP_TIME); } void power_up(float core_volt) { // The 1.8V supplies MUST be up whenever the 3.3V ones are power_chan(ADVDD2, 1.8); wait(POWER_UP_TIME); power_chan(DVDD2, 1.8); wait(POWER_UP_TIME); float new_power = core_volt;////////////////////////////////////////////////////////// // Other padring power_chan(ADVDD, 3.3); wait(POWER_UP_TIME); power_chan(DVDD, 3.3); wait(POWER_UP_TIME); power_chan(PADVDD, 1.0);//power_chan(PADVDD, 1.0); wait(POWER_UP_TIME); // Core and Memory power_chan(COREVDD, 1.0); wait(POWER_UP_TIME); power_chan(MEM1VDD, new_power);//power_chan(MEM1VDD, 1.0); wait(POWER_UP_TIME); power_chan(MEM2VDD, new_power);//power_chan(MEM2VDD, 1.0); wait(POWER_UP_TIME); // Clock power_chan(CLOCKVDD, 1.0);//power_chan(CLOCKVDD, 1.0); wait(POWER_UP_TIME); power_chan(PLLAVDD, 1.0);//power_chan(PLLAVDD, 1.0); wait(POWER_UP_TIME); power_chan(RING_OSC_NBIAS, 0.75); wait(POWER_UP_TIME); // Sensor Supplies power_chan(SENSORVDD, 1.0);//power_chan(SENSORVDD, 1.0); wait(POWER_UP_TIME); power_chan(SENSORLOWVDD, 0.35); wait(POWER_UP_TIME); power_chan(SENSORSTRESSVDD, 1.0);//power_chan(SENSORSTRESSVDD, 1.0); wait(POWER_UP_TIME); power_indicator = 1; } void power_down() { // Zero/float all inputs, so they are not above DVDD when you lower it PORESETn = 0; CORERESETn = 0; GPIO.input(); TCK = 0; TMS = 0; TDI = 0; scan_data_in = 0; scan_phi = 0; scan_phi_bar = 0; scan_load_chain = 0; scan_load_chip = 0; // Core and Memory power_chan(COREVDD, 0); wait(POWER_UP_TIME); power_chan(MEM1VDD, 0); wait(POWER_UP_TIME); power_chan(MEM2VDD, 0); wait(POWER_UP_TIME); // Clock power_chan(CLOCKVDD, 0); wait(POWER_UP_TIME); power_chan(PLLAVDD, 0); wait(POWER_UP_TIME); power_chan(RING_OSC_NBIAS, 0); wait(POWER_UP_TIME); // Sensor Supplies power_chan(SENSORVDD, 0); wait(POWER_UP_TIME); power_chan(SENSORLOWVDD, 0); wait(POWER_UP_TIME); power_chan(SENSORSTRESSVDD, 0); wait(POWER_UP_TIME); // Other padring power_chan(ADVDD, 0); wait(POWER_UP_TIME); power_chan(DVDD, 0); wait(POWER_UP_TIME); power_chan(PADVDD, 0); wait(POWER_UP_TIME); // The 1.8V supplies MUST be up whenever the 3.3V ones are power_chan(ADVDD2, 0); wait(POWER_UP_TIME); power_chan(DVDD2, 0); wait(POWER_UP_TIME); power_indicator = 0; }