iceberg 发表于 2023-11-3 09:11:27

STC8H单片机内部参考电压读取与实际不符合问题

用程序从0xef读取到的内部参考是1190mV,为什么我从它测得外部电压结合万用表测量的推算出来的内部参考电压实际数值是1163mV



#include "stc8h.h"
#include "stdio.h"

#define FOSC      11059200UL
#define BAUD      (65536 - FOSC/4/115200)

void main()
{
    P0M0 = 0x00;
    P0M1 = 0x00;
    P1M0 = 0x00;
    P1M1 = 0x00;
    P2M0 = 0x00;
    P2M1 = 0x00;
    P3M0 = 0x00;
    P3M1 = 0x00;
   
    SCON = 0x52;
    AUXR = 0x40;
    TMOD = 0x00;
    TL1 = BAUD;
    TH1 = BAUD >> 8;
    TR1 = 1;
   
    printf("STC8H测试 !\n\n");
    printf("BGV = %02bX%02bX (hex)\n", *(char idata *)0xef, *(char idata *)0xf0);
    printf("BGV = %d mV\n", *(int idata *)(0xef));
   
    while (1);




乘风飞扬 发表于 2023-11-3 09:17:24

介绍一下你是怎么推算的?
外部基准电压(ADC_Vref)是多少V?ADC15通道采样值是多少?

iceberg 发表于 2023-11-3 09:22:30

ADC15采样值是234,外部基准电压5.09V

iceberg 发表于 2023-11-3 09:41:39

乘风飞扬 发表于 2023-11-3 09:17
介绍一下你是怎么推算的?
外部基准电压(ADC_Vref)是多少V?ADC15通道采样值是多少? ...

ADC15采样值是234,外部基准电压5.09V

iceberg 发表于 2023-11-3 09:43:13

乘风飞扬 发表于 2023-11-3 09:17
介绍一下你是怎么推算的?
外部基准电压(ADC_Vref)是多少V?ADC15通道采样值是多少? ...

为何读到的值正好是1190mV,这个内部基准电压值不应该每篇芯片都是不一样的吗

梁工 发表于 2023-11-3 10:32:57

iceberg 发表于 2023-11-3 09:43
为何读到的值正好是1190mV,这个内部基准电压值不应该每篇芯片都是不一样的吗 ...

每个芯片都有微小差别,一般在1100~1300mV之间,大概率在1150~1200mV之间。
外部基准在2.0~AVCC之间,纹波要小。使用的万用表也要精确。

iceberg 发表于 2023-11-3 23:08:59

梁工 发表于 2023-11-3 10:32
每个芯片都有微小差别,一般在1100~1300mV之间,大概率在1150~1200mV之间。
外部基准在2.0~AVCC之间,纹 ...

换了同样型号的芯片,测得的都是1190mv,校准过的怎么每个芯片读出来的都是一样的数值呢。

iceberg 发表于 2023-11-5 13:54:03

没有解决办法了吗

梁工 发表于 2023-11-5 14:26:08

iceberg 发表于 2023-11-5 13:54
没有解决办法了吗

1190mV有什么问题吗?需要更精确的数值,自己可以测量的。
将稳定、纹波小的参考电压接在AVREF,推荐MC1403,便宜又好用。
使用一个误差小于0.5%的4位半或更多位数的数字万用表测量AVREF的电压值,读出此时15通道的ADC读数,则内部BnadGap电压 = AVREF * ADC15 /1024。
比如AVREF=2.499V,ADC15=488,则实测BandGap电压 = 2.499*486/1024=1.186V。
页: [1]
查看完整版本: STC8H单片机内部参考电压读取与实际不符合问题