|
25 | 25 | */
|
26 | 26 |
|
27 | 27 | #include "modtc32.h"
|
| 28 | +#include "machine_pin.h" |
28 | 29 | #include "py/mphal.h"
|
29 | 30 | #include "py/runtime.h"
|
30 | 31 |
|
| 32 | +#define BATTERY_SAMPLE_NUM 8 |
| 33 | +static mp_obj_t tc32_battery_mv(void) { |
| 34 | + static bool adc_hw_initialized = 0; |
| 35 | + if (!adc_hw_initialized) { |
| 36 | + adc_hw_initialized = 1; |
| 37 | + adc_init(); |
| 38 | + } |
| 39 | + |
| 40 | + adc_set_misc_rns_capture_state_length(0xf0); // max_mc |
| 41 | + adc_set_all_set_state_length(0x0a); // max_s |
| 42 | + |
| 43 | + adc_set_chn_en(ADC_MISC_CHN); |
| 44 | + adc_set_max_state_cnt(0x02); |
| 45 | + |
| 46 | + adc_set_all_vref(ADC_MISC_CHN, ADC_VREF_1P2V); |
| 47 | + adc_set_vref_vbat_div(ADC_VBAT_DIVIDER_OFF); |
| 48 | + |
| 49 | + adc_set_misc_n_ain(GND); |
| 50 | + adc_set_misc_p_ain(VBAT); |
| 51 | + adc_set_misc_input_mode(DIFFERENTIAL_MODE); |
| 52 | + |
| 53 | + adc_set_all_resolution(ADC_MISC_CHN, RES14); |
| 54 | + adc_set_all_tsample_cycle(ADC_MISC_CHN, SAMPLING_CYCLES_6); |
| 55 | + adc_set_all_ain_pre_scaler(ADC_PRESCALER_1F4); |
| 56 | + adc_set_mode(ADC_NORMAL_MODE); |
| 57 | + |
| 58 | + return MP_OBJ_NEW_SMALL_INT(adc_set_sample_and_get_result()); |
| 59 | +} |
| 60 | +static MP_DEFINE_CONST_FUN_OBJ_0(tc32_battery_mv_obj, tc32_battery_mv); |
| 61 | + |
31 | 62 | static const mp_rom_map_elem_t tc32_module_globals_table[] = {
|
32 | 63 | {MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_tc32)},
|
33 | 64 | {MP_ROM_QSTR(MP_QSTR_Flash), MP_ROM_PTR(&tc32_flash_type)},
|
34 | 65 | {MP_ROM_QSTR(MP_QSTR_Screen), MP_ROM_PTR(&tc32_screen_type)},
|
| 66 | + {MP_ROM_QSTR(MP_QSTR_battery_mv), MP_ROM_PTR(&tc32_battery_mv_obj)}, |
35 | 67 | };
|
36 | 68 | static MP_DEFINE_CONST_DICT(tc32_module_globals, tc32_module_globals_table);
|
37 | 69 |
|
|
0 commit comments