找回密码
 立即注册
查看: 327|回复: 8

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

[复制链接]

该用户从未签到

1

主题

5

回帖

27

积分

新手上路

积分
27
发表于 2023-11-3 09:11:27 | 显示全部楼层 |阅读模式
用程序从0xef读取到的内部参考是1190mV,为什么我从它测得外部电压结合万用表测量的推算出来的内部参考电压实际数值是1163mV

截图202311030910252115.jpg

#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);

截图202311030911201668.jpg


回复 送花

使用道具 举报

  • TA的每日心情
    奋斗
    10 小时前
  • 签到天数: 137 天

    [LV.7]常住居民III

    26

    主题

    1323

    回帖

    4119

    积分

    论坛元老

    积分
    4119
    发表于 2023-11-3 09:17:24 | 显示全部楼层
    介绍一下你是怎么推算的?
    外部基准电压(ADC_Vref)是多少V?ADC15通道采样值是多少?
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    5

    回帖

    27

    积分

    新手上路

    积分
    27
     楼主| 发表于 2023-11-3 09:22:30 | 显示全部楼层
    ADC15采样值是234,外部基准电压5.09V
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    5

    回帖

    27

    积分

    新手上路

    积分
    27
     楼主| 发表于 2023-11-3 09:41:39 | 显示全部楼层
    乘风飞扬 发表于 2023-11-3 09:17
    介绍一下你是怎么推算的?
    外部基准电压(ADC_Vref)是多少V?ADC15通道采样值是多少? ...

    ADC15采样值是234,外部基准电压5.09V
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    5

    回帖

    27

    积分

    新手上路

    积分
    27
     楼主| 发表于 2023-11-3 09:43:13 | 显示全部楼层
    乘风飞扬 发表于 2023-11-3 09:17
    介绍一下你是怎么推算的?
    外部基准电压(ADC_Vref)是多少V?ADC15通道采样值是多少? ...

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

    点评

    每个芯片都有微小差别,一般在1100~1300mV之间,大概率在1150~1200mV之间。 外部基准在2.0~AVCC之间,纹波要小。使用的万用表也要精确。  详情 回复 发表于 2023-11-3 10:32
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    2988

    回帖

    6733

    积分

    超级版主

    积分
    6733
    发表于 2023-11-3 10:32:57 | 显示全部楼层
    iceberg 发表于 2023-11-3 09:43
    为何读到的值正好是1190mV,这个内部基准电压值不应该每篇芯片都是不一样的吗 ...

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

    使用道具 举报

    该用户从未签到

    1

    主题

    5

    回帖

    27

    积分

    新手上路

    积分
    27
     楼主| 发表于 2023-11-3 23:08:59 | 显示全部楼层
    梁工 发表于 2023-11-3 10:32
    每个芯片都有微小差别,一般在1100~1300mV之间,大概率在1150~1200mV之间。
    外部基准在2.0~AVCC之间,纹 ...

    换了同样型号的芯片,测得的都是1190mv,校准过的怎么每个芯片读出来的都是一样的数值呢。
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    5

    回帖

    27

    积分

    新手上路

    积分
    27
     楼主| 发表于 2023-11-5 13:54:03 | 显示全部楼层
    没有解决办法了吗

    点评

    1190mV有什么问题吗?需要更精确的数值,自己可以测量的。 将稳定、纹波小的参考电压接在AVREF,推荐MC1403,便宜又好用。 使用一个误差小于0.5%的4位半或更多位数的数字万用表测量AVREF的电压值,读出此时15通道的A  详情 回复 发表于 2023-11-5 14:26
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    2988

    回帖

    6733

    积分

    超级版主

    积分
    6733
    发表于 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。
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-10 19:50 , Processed in 0.104138 second(s), 64 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表