Example for onboard MAX17055 Fuel Gauge driver
Dependencies: MAX17055
Diff: main.cpp
- Revision:
- 0:1c8d473dbca7
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue May 01 17:10:24 2018 +0000 @@ -0,0 +1,71 @@ +#include "mbed.h" +#include "MAX17055.h" + +// I2C Master 2 +I2C i2c(I2C2_SDA, I2C2_SCL); + +MAX17055 max17055(i2c); + +int main() +{ + int status; + int value, max, min; + float f_value, f_max, f_min; + + // Set sense resistor value + max17055.init(0.05f); + + // Print status + max17055.status(&status); + printf("MAX17055 status: %04X\r\n", (uint16_t)status); + + for (;;) { + // Print raw hex register contents + max17055.v_cell(&value); + printf("0x%04X ", (uint16_t)value); + max17055.avg_v_cell(&value); + printf("0x%04X ", (uint16_t)value); + max17055.max_min_volt(&max, &min); + printf("0x%02X 0x%02X\r\n", (uint8_t)max, (uint8_t)min); + + max17055.current(&value); + printf("0x%04X ", (uint16_t)value); + max17055.avg_current(&value); + printf("0x%04X ", (uint16_t)value); + max17055.max_min_curr(&max, &min); + printf("0x%02X 0x%02X\r\n", (uint8_t)max, (uint8_t)min); + + max17055.temp(&value); + printf("0x%04X ", (uint16_t)value); + max17055.avg_ta(&value); + printf("0x%04X ", (uint16_t)value); + max17055.max_min_temp(&max, &min); + printf("0x%02X 0x%02X\r\n", (uint8_t)max, (uint8_t)min); + printf("\r\n"); + + // Print formatted voltage, current and temperature values + max17055.v_cell(&f_value); + printf("%6.3fV ", f_value); + max17055.avg_v_cell(&f_value); + printf("%6.3fVavg ", f_value); + max17055.max_min_volt(&f_max, &f_min); + printf("%6.3fVmax %6.3fVmin\r\n", f_max, f_min); + + max17055.current(&f_value); + printf("%6.3fI ", f_value); + max17055.avg_current(&f_value); + printf("%6.3fIavg ", f_value); + max17055.max_min_curr(&f_max, &f_min); + printf("%6.3fImax %6.3fImin\r\n", f_max, f_min); + + max17055.temp(&f_value); + printf("%6.3fC ", f_value); + max17055.avg_ta(&f_value); + printf("%6.3fCavg ", f_value); + max17055.max_min_temp(&f_max, &f_min); + printf("%6.3fCmax %6.3fCmin\r\n", f_max, f_min); + printf("\r\n"); + + Thread::wait(3000); + } +}