48 lines
1.2 KiB
C
48 lines
1.2 KiB
C
#include "freertos/FreeRTOS.h"
|
|
#include "freertos/task.h"
|
|
#include "freertos/queue.h"
|
|
|
|
#include "esp_log.h"
|
|
|
|
#include "user_board.h"
|
|
|
|
#include "app_lib_bat_impl.h"
|
|
|
|
#define BATTERY_CAP 3000.0
|
|
#define MAH_LSB 0.053125 // Shunt 20mR
|
|
#define PRESCALER_M LTC2941_PRE_32
|
|
|
|
const static char *TAG = "TASK_BAT";
|
|
|
|
TaskHandle_t xTaskBatteryExampleHandle = NULL;
|
|
void vTasBatteryExample(void *pvParameters) {
|
|
app_lib_bat_impl_t impl = {
|
|
.i2c_num = BOARD_SYSTEM_I2C_NUM
|
|
};
|
|
|
|
ltc2941_t battery_fg = {
|
|
.user_data = &impl,
|
|
.cb = {
|
|
.read_register_cb = (ltc2941_ret_t (*)(void *, uint8_t, uint8_t *))app_lib_bat_read_register,
|
|
.write_register_cb = (ltc2941_ret_t (*)(void *, uint8_t, uint8_t))app_lib_bat_write_register
|
|
},
|
|
.config = {
|
|
.alert_level = LTC2941_ALERT_3_0V,
|
|
.alert_mode = LTC2941_ALERT_DISABLED,
|
|
.prescaler = PRESCALER_M
|
|
}
|
|
};
|
|
|
|
ltc2941_init(&battery_fg);
|
|
|
|
for(;;) {
|
|
uint16_t fg_data = 0x00;
|
|
ltc2941_read_charge(&battery_fg, &fg_data);
|
|
|
|
float percentage = fg_data * MAH_LSB * 100.0 / BATTERY_CAP;
|
|
|
|
ESP_LOGI(TAG, "Charge: %.2f", percentage);
|
|
|
|
vTaskDelay(pdMS_TO_TICKS(30000));
|
|
}
|
|
} |