mirror of
https://github.com/Fishwaldo/bl_mcu_sdk.git
synced 2025-07-20 03:38:59 +00:00
50 lines
1.2 KiB
C
50 lines
1.2 KiB
C
#include "bflb_adc.h"
|
|
#include "bflb_mtimer.h"
|
|
#include "board.h"
|
|
|
|
struct bflb_device_s *adc;
|
|
|
|
int main(void)
|
|
{
|
|
board_init();
|
|
uint16_t i = 0;
|
|
|
|
adc = bflb_device_get_by_name("adc");
|
|
|
|
struct bflb_adc_config_s cfg;
|
|
cfg.clk_div = ADC_CLK_DIV_4;
|
|
cfg.scan_conv_mode = false;
|
|
cfg.continuous_conv_mode = false;
|
|
cfg.differential_mode = false;
|
|
cfg.resolution = ADC_RESOLUTION_16B;
|
|
cfg.vref = ADC_VREF_2P0V;
|
|
|
|
struct bflb_adc_channel_s chan;
|
|
|
|
chan.pos_chan = ADC_CHAN_VABT_HALF;
|
|
chan.neg_chan = ADC_CHANNEL_GND;
|
|
|
|
bflb_adc_init(adc, &cfg);
|
|
bflb_adc_channel_config(adc, &chan, 1);
|
|
bflb_adc_vbat_enable(adc);
|
|
|
|
struct bflb_adc_result_s result;
|
|
for (i = 0; i < 10; i++) {
|
|
bflb_adc_start_conversion(adc);
|
|
|
|
while (bflb_adc_get_count(adc) == 0)
|
|
;
|
|
do {
|
|
uint32_t raw_data = bflb_adc_read_raw(adc);
|
|
if (raw_data) {
|
|
bflb_adc_parse_result(adc, &raw_data, &result, 1);
|
|
printf("vBat = %d mV\n", (uint32_t)(result.millivolt * 2));
|
|
bflb_adc_stop_conversion(adc);
|
|
}
|
|
} while (bflb_adc_get_count(adc) != 0);
|
|
|
|
bflb_mtimer_delay_ms(500);
|
|
}
|
|
while (1) {
|
|
}
|
|
}
|