|
|
@ -1,9 +1,9 @@ |
|
|
|
#include "battery_mgr_service.h" |
|
|
|
#include "board/board.h" |
|
|
|
|
|
|
|
#include "app_basic_service/zapp_core.h" |
|
|
|
#define BATTERY_ADC_CHANNEL 1 // 不重复即可 |
|
|
|
#define BATTERY_ADC_PIN NRF_SAADC_INPUT_AIN3 |
|
|
|
#include "board/board.h" |
|
|
|
#define BATTERY_ADC_CHANNEL 1 // 不重复即可 |
|
|
|
#define BATTERY_ADC_PIN NRF_SAADC_INPUT_AIN3 |
|
|
|
|
|
|
|
void battery_mgr_init() { |
|
|
|
// BATADC |
|
|
@ -15,8 +15,7 @@ void battery_mgr_init() { |
|
|
|
channel_config.acq_time = NRF_SAADC_ACQTIME_40US; |
|
|
|
ZERROR_CHECK(nrfx_saadc_channel_init(BATTERY_ADC_CHANNEL, &channel_config)); |
|
|
|
} |
|
|
|
int16_t battery_mgr_get_battery_level() { |
|
|
|
|
|
|
|
int battery_mgr_get_battery_level() { |
|
|
|
nrf_saadc_value_t value; |
|
|
|
ret_code_t err_code; |
|
|
|
err_code = nrfx_saadc_sample_convert(BATTERY_ADC_CHANNEL, &value); |
|
|
@ -24,5 +23,10 @@ int16_t battery_mgr_get_battery_level() { |
|
|
|
ZLOGE("nrfx_saadc_sample_convert(%d) fail err_code:%d", BATTERY_ADC_CHANNEL, err_code); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
return value; |
|
|
|
float voltage = value / 4096.0 * 3.6 + 0.3; // 0.3为防反接二极管压降 |
|
|
|
|
|
|
|
float percent = (voltage - 1.8) / (3.2 - 1.8) * 100; |
|
|
|
if (percent > 100) percent = 100; |
|
|
|
if (percent < 0) percent = 2; |
|
|
|
return percent; |
|
|
|
} |