找回密码
 立即注册
查看: 767|回复: 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


回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6843

积分

论坛元老

积分
6843
发表于 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
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12081
发表于 2023-11-3 10:32:57 | 显示全部楼层
iceb*** 发表于 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
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12081
发表于 2023-11-5 14:26:08 | 显示全部楼层
iceb*** 发表于 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, 2025-5-3 15:02 , Processed in 0.310239 second(s), 108 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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