uint32_t sprdchg_adc_to_cur(uint32_t cur_type, uint16_t voltage) { uint32_t bat_numerators, bat_denominators; sci_adc_get_vol_ratio(ADC_CHANNEL_VBAT, 0, &bat_numerators, &bat_denominators); return (((uint32_t) voltage * cur_type * bat_numerators) / VOL_TO_CUR_PARAM) / bat_denominators; }
static uint16_t sprdchg_adc_to_vol(uint16_t channel, int scale, uint16_t adcvalue) { uint32_t result; uint32_t vbat_vol = sprdchg_bat_adc_to_vol(adcvalue); uint32_t m, n; uint32_t bat_numerators, bat_denominators; uint32_t numerators, denominators; sci_adc_get_vol_ratio(ADC_CHANNEL_VBAT, 0, &bat_numerators, &bat_denominators); sci_adc_get_vol_ratio(channel, scale, &numerators, &denominators); ///v1 = vbat_vol*0.268 = vol_bat_m * r2 /(r1+r2) n = bat_denominators * numerators; m = vbat_vol * bat_numerators * (denominators); result = (m + n / 2) / n; return result; }
uint32_t sprd_adc_to_cur(struct sprd_battery_data * data, uint16_t voltage) { uint16_t cur_type = data->cur_type; uint32_t bat_numerators, bat_denominators; sci_adc_get_vol_ratio(ADC_CHANNEL_VBAT, 0, &bat_numerators, &bat_denominators); return (((uint32_t) voltage * cur_type * bat_numerators) / VOL_TO_CUR_PARAM) / bat_denominators; }
uint16_t sprd_charger_adc_to_vol(struct sprd_battery_data * data, uint16_t adcvalue) { uint32_t result; uint32_t vbat_vol = sprd_bat_adc_to_vol(data, adcvalue); uint32_t m, n; uint32_t bat_numerators, bat_denominators; uint32_t vchg_numerators, vchg_denominators; sci_adc_get_vol_ratio(ADC_CHANNEL_VBAT, 0, &bat_numerators, &bat_denominators); sci_adc_get_vol_ratio(ADC_CHANNEL_VCHG, 0, &vchg_numerators, &vchg_denominators); ///v1 = vbat_vol*0.268 = vol_bat_m * r2 /(r1+r2) n = bat_denominators * vchg_numerators; m = vbat_vol * bat_numerators * (vchg_denominators); result = (m + n / 2) / n; return result; }