Oscar 发表于 2024-8-29 08:37:08

本帖最后由 Oscar 于 2024-8-29 08:38 编辑

神农鼎 发表于 2024-8-29 08:17
利用ADC15在内部固定接的1.19V的辅助固定信号源,反推其他通道的输入电压 - ADC/比较器,DMA支持的12位AD ...
adc_value = Fliter_average();
batt_v = (int)(4096L**BGV/ adc_value);            // 计算电池电压,单位:mV
    ADC_USBconfig();
    adc_usbvalue = Fliter_average();
    usb_voltage = (int)((batt_v/adc_value)*adc_usbvalue*11);
测的电池电压2.967V没错但是我加入USB电压是7162mV   
如果电池电压变为4.192v后USB测得电池电压5.471

Oscar 发表于 2024-8-29 08:41:16

神农鼎 发表于 2024-8-29 08:17
利用ADC15在内部固定接的1.19V的辅助固定信号源,反推其他通道的输入电压 - ADC/比较器,DMA支持的12位AD ...

    ADC_BATconfig();
    adc_value = Fliter_average();
    batt_v = (int)(4096L**BGV/ adc_value);          // 计算电池电压,单位:mV
    ADC_USBconfig();
    adc_usbvalue = Fliter_average();
    usb_voltage = (int)((batt_v/adc_value)*adc_usbvalue*11);
   如果这是电池电压为2961mVUSB测得电压7163mV
如果把电池电压变为4102mVUSB测得电压为5416mV

乘风飞扬 发表于 2024-8-29 11:06:40

Oscar 发表于 2024-8-29 08:41
ADC_BATconfig();
    adc_value = Fliter_average();
    batt_v = (int)(4096L**BGV/ adc_value); ...

利用15通道反推外部电压/电池电压,这种方式不需要使用ADC脚位测外部电压。
也就是没必要接你的ADC_VUSB到ADC脚位。

VUSB如果是给MCU供电的话,同时接到MCU的VCC与Vref脚。
Vref电压/4096 = 1.19V/ADC15
只要采样ADC15通道的ADC值,就能使用以上公式计算出Vref电压,也就是VUSB电压。

Oscar 发表于 2024-8-29 16:00:46

乘风飞扬 发表于 2024-8-29 11:06
利用15通道反推外部电压/电池电压,这种方式不需要使用ADC脚位测外部电压。
也就是没必要接你的ADC_VUSB ...

void ADC_BATconfig(void)
{
   ADCTIM = 0x3f;    //设置ADC内部时序
       ADCCFG = 0x2F;           // ADC频率设置:系统时钟/2/16,数据右对齐
   ADC_CONTR = 0x8f;//使能 ADC 模块,并选择第15 通道
   BGV=(int idata *)0xef;
}



void ADC_USBconfig(void)
{
   P1M0 &= ~0x80; P1M1 |= 0x80;
       P_SW2 |= 0x80;
   ADC_CONTR = 0x87; // 清除低3位并设置新的通道号 //使能ADC模块,确认ADC_CHASADC选择通道位设置0111ADC7为ADC采集信号口0x87
   ADCTIM = 0x3f;    //设置ADC内部时序
       ADCCFG = 0x2F;           // ADC频率设置:系统时钟/2/16,数据右对齐

}
我是开了两个通道之后的ADC7的是计算不是很清楚是不是我这样的呢

zhang32568 发表于 2024-8-30 14:48:38

Oscar 发表于 2024-8-28 16:53
我已经计算处电池电压了;但是怎么反推------不是很理解它这段话

他的意思就是同时通过测量外部电压的ADC数值 和内部1.19V的ADC数值。就可以计算出外部电压了。
通过公式:
外部电压 / 测量外部ADC= 1.19V / 内部1.19VADC数值
这个公式四个变量 有三个已经知道外部电压也就可以计算出来 了

晓飛飛 发表于 2024-8-30 14:59:46

可以这么理解,内部1.19V的电压是经过出厂校准,并把实际值写入芯片的,采集外部信号和采集1.19V都是用的同样的参考(比如TL431或者VCC电源),假设采集外部信号和采集内部1.19V过程中这个基准是稳定的,那可以通过计算抵消掉外部基准的因素,两次采集值的比 等于 两个信号的电压比,通过比例换算即可得到外部信号的准确电压值。

Oscar 发表于 2024-8-31 16:09:58

晓飛飛 发表于 2024-8-30 14:59
可以这么理解,内部1.19V的电压是经过出厂校准,并把实际值写入芯片的,采集外部信号和采集1.19V都是用的同 ...

1.19/(*BGA)*ADC(1-15)就是ADC通道读到的数据对吧。
页: 1 [2]
查看完整版本: 关于8H3K64S2-45I-TSSOP20已经通过通道15读取电池电压后