Example for onboard MAX17055 Fuel Gauge driver

Dependencies:   MAX17055

Committer:
jessexm
Date:
Tue May 01 17:10:24 2018 +0000
Revision:
0:1c8d473dbca7
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jessexm 0:1c8d473dbca7 1 #include "mbed.h"
jessexm 0:1c8d473dbca7 2 #include "MAX17055.h"
jessexm 0:1c8d473dbca7 3
jessexm 0:1c8d473dbca7 4 // I2C Master 2
jessexm 0:1c8d473dbca7 5 I2C i2c(I2C2_SDA, I2C2_SCL);
jessexm 0:1c8d473dbca7 6
jessexm 0:1c8d473dbca7 7 MAX17055 max17055(i2c);
jessexm 0:1c8d473dbca7 8
jessexm 0:1c8d473dbca7 9 int main()
jessexm 0:1c8d473dbca7 10 {
jessexm 0:1c8d473dbca7 11 int status;
jessexm 0:1c8d473dbca7 12 int value, max, min;
jessexm 0:1c8d473dbca7 13 float f_value, f_max, f_min;
jessexm 0:1c8d473dbca7 14
jessexm 0:1c8d473dbca7 15 // Set sense resistor value
jessexm 0:1c8d473dbca7 16 max17055.init(0.05f);
jessexm 0:1c8d473dbca7 17
jessexm 0:1c8d473dbca7 18 // Print status
jessexm 0:1c8d473dbca7 19 max17055.status(&status);
jessexm 0:1c8d473dbca7 20 printf("MAX17055 status: %04X\r\n", (uint16_t)status);
jessexm 0:1c8d473dbca7 21
jessexm 0:1c8d473dbca7 22 for (;;) {
jessexm 0:1c8d473dbca7 23 // Print raw hex register contents
jessexm 0:1c8d473dbca7 24 max17055.v_cell(&value);
jessexm 0:1c8d473dbca7 25 printf("0x%04X ", (uint16_t)value);
jessexm 0:1c8d473dbca7 26 max17055.avg_v_cell(&value);
jessexm 0:1c8d473dbca7 27 printf("0x%04X ", (uint16_t)value);
jessexm 0:1c8d473dbca7 28 max17055.max_min_volt(&max, &min);
jessexm 0:1c8d473dbca7 29 printf("0x%02X 0x%02X\r\n", (uint8_t)max, (uint8_t)min);
jessexm 0:1c8d473dbca7 30
jessexm 0:1c8d473dbca7 31 max17055.current(&value);
jessexm 0:1c8d473dbca7 32 printf("0x%04X ", (uint16_t)value);
jessexm 0:1c8d473dbca7 33 max17055.avg_current(&value);
jessexm 0:1c8d473dbca7 34 printf("0x%04X ", (uint16_t)value);
jessexm 0:1c8d473dbca7 35 max17055.max_min_curr(&max, &min);
jessexm 0:1c8d473dbca7 36 printf("0x%02X 0x%02X\r\n", (uint8_t)max, (uint8_t)min);
jessexm 0:1c8d473dbca7 37
jessexm 0:1c8d473dbca7 38 max17055.temp(&value);
jessexm 0:1c8d473dbca7 39 printf("0x%04X ", (uint16_t)value);
jessexm 0:1c8d473dbca7 40 max17055.avg_ta(&value);
jessexm 0:1c8d473dbca7 41 printf("0x%04X ", (uint16_t)value);
jessexm 0:1c8d473dbca7 42 max17055.max_min_temp(&max, &min);
jessexm 0:1c8d473dbca7 43 printf("0x%02X 0x%02X\r\n", (uint8_t)max, (uint8_t)min);
jessexm 0:1c8d473dbca7 44 printf("\r\n");
jessexm 0:1c8d473dbca7 45
jessexm 0:1c8d473dbca7 46 // Print formatted voltage, current and temperature values
jessexm 0:1c8d473dbca7 47 max17055.v_cell(&f_value);
jessexm 0:1c8d473dbca7 48 printf("%6.3fV ", f_value);
jessexm 0:1c8d473dbca7 49 max17055.avg_v_cell(&f_value);
jessexm 0:1c8d473dbca7 50 printf("%6.3fVavg ", f_value);
jessexm 0:1c8d473dbca7 51 max17055.max_min_volt(&f_max, &f_min);
jessexm 0:1c8d473dbca7 52 printf("%6.3fVmax %6.3fVmin\r\n", f_max, f_min);
jessexm 0:1c8d473dbca7 53
jessexm 0:1c8d473dbca7 54 max17055.current(&f_value);
jessexm 0:1c8d473dbca7 55 printf("%6.3fI ", f_value);
jessexm 0:1c8d473dbca7 56 max17055.avg_current(&f_value);
jessexm 0:1c8d473dbca7 57 printf("%6.3fIavg ", f_value);
jessexm 0:1c8d473dbca7 58 max17055.max_min_curr(&f_max, &f_min);
jessexm 0:1c8d473dbca7 59 printf("%6.3fImax %6.3fImin\r\n", f_max, f_min);
jessexm 0:1c8d473dbca7 60
jessexm 0:1c8d473dbca7 61 max17055.temp(&f_value);
jessexm 0:1c8d473dbca7 62 printf("%6.3fC ", f_value);
jessexm 0:1c8d473dbca7 63 max17055.avg_ta(&f_value);
jessexm 0:1c8d473dbca7 64 printf("%6.3fCavg ", f_value);
jessexm 0:1c8d473dbca7 65 max17055.max_min_temp(&f_max, &f_min);
jessexm 0:1c8d473dbca7 66 printf("%6.3fCmax %6.3fCmin\r\n", f_max, f_min);
jessexm 0:1c8d473dbca7 67 printf("\r\n");
jessexm 0:1c8d473dbca7 68
jessexm 0:1c8d473dbca7 69 Thread::wait(3000);
jessexm 0:1c8d473dbca7 70 }
jessexm 0:1c8d473dbca7 71 }