sbpfi123 发表于 2024-9-4 23:11:58

8G1K08A SOP-8 碰到内部基准电压问题求助

本帖最后由 DebugLab 于 2024-9-4 23:42 编辑

我在用8G1K08A SOP-8 封装的时候用电池供电,用官方的公式,VDDA = (unsigned int)(1023L*(*BGV/res));我用5V 输入,为什么得到的结果是3.069V,而不是5呢,请大家帮我分析一下程序 ,谢谢了;

#include <STC8H.H>
#include "delay.h"
#include <intrins.h>

#define ADC_Power 0x8f      //使能ADC模块                打开ADC                将ADC引脚设置到P55
#define ADC_Start 0x40      //开始ADC转换
#define ADC_Flag 0x20      //转换完成标志位
#define ADC_SYS 0x2f      //将ADC系统时钟设定为SYSclk/2/16右对齐

unsigned int VDDA; // VDDA的电压值 单位毫伏
unsigned int *BGV; // 内部参考电压值 单位毫伏

void AD_Init()
{
      ADC_RES = 0;
      ADC_RESL = 0;
      P_SW2|= 0x80;
      ADCTIM=0x3f;
      P_SW2 &= 0x7f;
      ADCCFG=ADC_SYS;
      ADC_CONTR=ADC_Power;
      BGV = (unsigned int idata *)0xef;
      delay_ms(1);      
}

unsigned int ADC_Get()
{      
      unsigned int res;
      ADC_CONTR |= ADC_Start;
      ADCCFG=ADC_SYS;
    _nop_();
    _nop_();
    while((ADC_CONTR & ADC_Flag) == 0);   //等待完成
    ADC_CONTR &= ~ADC_Flag;   //清除完成标志位
res =((unsigned int)ADC_RES << 8) | ADC_RESL;
      return res;
}


以下是主程序

void main()
{
    P5M0 = 0x00; P5M1 = 0x30;
    P3M0 = 0x0c; P3M1 = 0x00;
      AD_Init();
      Uart_Init();
//      Fetch_VDDA();
      

      while(1)
      {
                Fetch_VDDA();
                printf("VDDA=%u\r\n",VDDA);   
                delay_ms(2000);
      }

}


printf打印出来是3069; 哪里出错了呢?


DebugLab 发表于 2024-9-4 23:46:36

再打印15通道ADC值看看对不对,应该是1190*1024/5000≈244

邮箱 发表于 2024-9-5 01:10:29



这个地址可能被使用了

sbpfi123 发表于 2024-9-5 17:26:34

wnagming 发表于 2024-9-4 23:30
先打印BGV值看看对不对,应该是1190左右

打印出来是1190,正确的

sbpfi123 发表于 2024-9-5 17:31:10

void Fetch_VDDA(void)
{
unsigned int res=0;
unsigned char i;

ADC_CONTR = ADC_Power;
ADC_Get();
ADC_Get();
for(i=0;i<8;i++)
{
    res+=ADC_Get();
}
res>>=3;
VDDA = (unsigned int)(1023L*(*BGV/res));
}

这是输出 的函数

sbpfi123 发表于 2024-9-5 17:32:41

wnagming 发表于 2024-9-5 06:58
对对对,建议使用专门例程函数读取内部参考电压

不理解,不知道怎么操作{:cry:}

小飞侠 发表于 2024-9-5 17:42:43

硬件仿真看一下

乘风飞扬 发表于 2024-9-5 18:34:19

用附件的例子试试

sbpfi123 发表于 2024-9-5 21:14:35

小飞侠 发表于 2024-9-5 17:42
硬件仿真看一下

图片

sbpfi123 发表于 2024-9-5 21:34:35

乘风飞扬 发表于 2024-9-5 18:34
用附件的例子试试

难道我电源是3,3的
页: [1] 2
查看完整版本: 8G1K08A SOP-8 碰到内部基准电压问题求助