Example for onboard MAX17055 Fuel Gauge driver

Dependencies:   MAX17055

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "MAX17055.h"
00003 
00004 // I2C Master 2
00005 I2C i2c(I2C2_SDA, I2C2_SCL);
00006 
00007 MAX17055 max17055(i2c);
00008 
00009 int main()
00010 {
00011     int status;
00012     int value, max, min;
00013     float f_value, f_max, f_min;
00014 
00015     // Set sense resistor value
00016     max17055.init(0.05f);
00017 
00018     // Print status
00019     max17055.status(&status);
00020     printf("MAX17055 status: %04X\r\n", (uint16_t)status);
00021 
00022     for (;;) {
00023         // Print raw hex register contents
00024         max17055.v_cell(&value);
00025         printf("0x%04X ", (uint16_t)value);
00026         max17055.avg_v_cell(&value);
00027         printf("0x%04X ", (uint16_t)value);
00028         max17055.max_min_volt(&max, &min);
00029         printf("0x%02X 0x%02X\r\n", (uint8_t)max, (uint8_t)min);
00030 
00031         max17055.current(&value);
00032         printf("0x%04X ", (uint16_t)value);
00033         max17055.avg_current(&value);
00034         printf("0x%04X ", (uint16_t)value);
00035         max17055.max_min_curr(&max, &min);
00036         printf("0x%02X 0x%02X\r\n", (uint8_t)max, (uint8_t)min);
00037 
00038         max17055.temp(&value);
00039         printf("0x%04X ", (uint16_t)value);
00040         max17055.avg_ta(&value);
00041         printf("0x%04X ", (uint16_t)value);
00042         max17055.max_min_temp(&max, &min);
00043         printf("0x%02X 0x%02X\r\n", (uint8_t)max, (uint8_t)min);
00044         printf("\r\n");
00045 
00046         // Print formatted voltage, current and temperature values
00047         max17055.v_cell(&f_value);
00048         printf("%6.3fV ", f_value);
00049         max17055.avg_v_cell(&f_value);
00050         printf("%6.3fVavg ", f_value);
00051         max17055.max_min_volt(&f_max, &f_min);
00052         printf("%6.3fVmax %6.3fVmin\r\n", f_max, f_min);
00053 
00054         max17055.current(&f_value);
00055         printf("%6.3fI ", f_value);
00056         max17055.avg_current(&f_value);
00057         printf("%6.3fIavg ", f_value);
00058         max17055.max_min_curr(&f_max, &f_min);
00059         printf("%6.3fImax %6.3fImin\r\n", f_max, f_min);
00060 
00061         max17055.temp(&f_value);
00062         printf("%6.3fC ", f_value);
00063         max17055.avg_ta(&f_value);
00064         printf("%6.3fCavg ", f_value);
00065         max17055.max_min_temp(&f_max, &f_min);
00066         printf("%6.3fCmax %6.3fCmin\r\n", f_max, f_min);
00067         printf("\r\n");
00068 
00069         Thread::wait(3000);
00070     }
00071 }