AN137 Silicon_Laboratories, AN137 Datasheet - Page 25

no-image

AN137

Manufacturer Part Number
AN137
Description
Lithium ION Battery Charger Using C8051f300
Manufacturer
Silicon_Laboratories
Datasheet
// Once ready, Get the 2nd calibration voltage
AMX0SL = VBAT;
temp_INT_2.i = Measure();
// Calculate the SLOPE
temp_LONG_1.l = (unsigned)(temp_INT_2.i-temp_INT_1.i);
temp_LONG_1.l *= (unsigned)100;
temp_LONG_1.l /= (unsigned)(V2_CAL - V1_CAL);
// Calculate the OFFSET
temp_LONG_2.l
temp_LONG_2.l -= (signed)(temp_LONG_1.l * V1_CAL/100);
temp_LONG_1.l = 2050;
temp_LONG_2.l = 0;
// Erased memory at page 0x1A00
pwrite = (char xdata *)&(CHECK_BYTE.b[0]);
PSCTL = 0x03;
FLKEY = 0xA5;
FLKEY = 0xF1;
*pwrite = 0x00;
// Write the Volt SLOPE and OFFSET to Flash
PSCTL = 1;
pwrite = (char xdata *)&(VOLT_SLOPE.b[0]);
FLKEY = 0xA5;
FLKEY = 0xF1;
*pwrite = temp_LONG_1.b[0];
pwrite = (char xdata *)&(VOLT_SLOPE.b[1]);
FLKEY = 0xA5;
FLKEY = 0xF1;
*pwrite = temp_LONG_1.b[1];
pwrite = (char xdata *)&(VOLT_SLOPE.b[2]);
FLKEY = 0xA5;
FLKEY = 0xF1;
*pwrite = temp_LONG_1.b[2];
pwrite = (char xdata *)&(VOLT_SLOPE.b[3]);
FLKEY = 0xA5;
FLKEY = 0xF1;
*pwrite = temp_LONG_1.b[3];
pwrite = (char xdata *)&(VOLT_OFFSET.b[0]);
FLKEY = 0xA5;
FLKEY = 0xF1;
*pwrite = temp_LONG_2.b[0];
pwrite = (char xdata *)&(VOLT_OFFSET.b[1]);
FLKEY = 0xA5;
FLKEY = 0xF1;
*pwrite = temp_LONG_2.b[1];
pwrite = (char xdata *)&(VOLT_OFFSET.b[2]);
FLKEY = 0xA5;
FLKEY = 0xF1;
*pwrite = temp_LONG_2.b[2];
= (unsigned)temp_INT_1.i;
//
// V1 and V2 are in tenth of a degree
// Account for Math Truncation Error
// If no cal. use these
//
// MOVX writes target FLASH memory;
// FLASH erase operations enabled
// FLASH key sequence #1
// FLASH key sequence #2
// initiate PAGE erase
// MOVX writes to Flash
// enable flash write
// enable flash write
// enable flash write
// enable flash write
// enable flash write
// enable flash write
// enable flash write
Rev. 1.2
as default values
Change Mux for second point
AN137
25

Related parts for AN137