找回密码
 立即注册
查看: 1053|回复: 5

12位ADC 计算公式是/4096还是/4095;10位ADC 计算公式是/1024还是/1023

[复制链接]

该用户从未签到

552

主题

9532

回帖

1万

积分

管理员

积分
14106
发表于 2023-5-28 23:12:08 | 显示全部楼层 |阅读模式
STC8H/STC8G/STC8A8K64D4/STC32G的ADC超级完美 !
用经典教科书的公式,STC的12位ADC计算公式:
ADCn通道的输入电压  = 转换结果 / 4096  * ADC_VRef+
STC的10位ADC计算公式
ADCn通道的输入电压  = 转换结果 / 1024  * ADC_VRef+
ADC_VRef+ 可以是  2.4V ~ ADC_VCC/MCU_VCC
不要用人为修正的公式,那是有瑕疵的ADC才使用的

======================================
有朋友质疑上面的计算公式 4096应该改成4095:


12位ADC 计算公式是/4096,还是/4095;

10位ADC 计算公式是/1024,还是/1023


回复 送花

使用道具 举报

  • TA的每日心情
    开心
    5 天前
  • 签到天数: 1 天

    [LV.1]初来乍到

    0

    主题

    3

    回帖

    38

    积分

    新手上路

    积分
    38
    发表于 2023-5-28 23:30:46 | 显示全部楼层
    所谓的根据AD值求电压就是:通道电压=AD值*斜率。斜率=参考电压的最大值/寄存器最大值。
    因此:通道电压=AD值*参考电压的最大值/寄存器最大值。
    如不正确请指正。

    点评

    zhp
    您的整体思路是正确的,ADC的转换其实就是一个一次函数y=kx+b的关系 STC的12位ADC的线性度应该算是很不错的,对应到y=kx+b,b为0,k为一个恒定值 k=ADC的参考电压值/ADC的最大量化份数 ADC的参考电压值=VREFP - VREF  详情 回复 发表于 2023-5-29 10:16
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    552

    主题

    9532

    回帖

    1万

    积分

    管理员

    积分
    14106
     楼主| 发表于 2023-5-29 09:36:12 | 显示全部楼层
    完美的 12位ADC, 10位ADC,肯定是用 4096, 1024来计算的  !
    传统就是这样啊,STC 对了20年了 !
    如何解释让大家理解公式用 4095/1023是错误的,

    或者是哪家的ADC不完美,故意修改计算公式的

    我请我的技术大哥
    写了几百个字来让大家轻松理解
    4095/1023这种想法是错的
    ===我是解释不清了,我大哥花了1天时间写了个报告给我
            由浅入深的解释



    截图202405050901379221.jpg
    ====================================

    STC8H/STC8G/STC8A8K64D4/STC32G的ADC超级完美 !
    用经典教科书的公式,STC的12位ADC计算公式:
    ADCn通道的输入电压  = 转换结果 / 4096  * ADC_VRef+
    STC的10位ADC计算公式
    ADCn通道的输入电压  = 转换结果 / 1024  * ADC_VRef+
    ADC_VRef+ 可以是  2.4V ~ ADC_VCC/MCU_VCC
    不要用人为修正的公式,那是有瑕疵的ADC才使用的



    ADC 轉換特性曲線是甚麼

    截图202405050843303857.jpg
    截图202405050844106254.jpg

    截图202405050845381328.jpg

    截图202405050846266122.jpg

    截图202405050847269447.jpg

    截图202405050848017485.jpg

    为啥我知到的对的知识多? 因为我有技术大哥认真写报告给我解释

    我啥我越来越不懂了 ? 因为我的技术大哥都是长篇大论引经据典的解释
    ===我看不懂,也没时间看,也只能承认他们是对的 !
            谁让他们本身也是权威呢
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-5-11 09:06
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    16

    主题

    724

    回帖

    2578

    积分

    超级版主

    积分
    2578
    发表于 2023-5-29 10:16:27 | 显示全部楼层
    本帖最后由 zhp 于 2023-5-29 10:18 编辑
    xuxinhd 发表于 2023-5-28 23:30
    所谓的根据AD值求电压就是:通道电压=AD值*斜率。斜率=参考电压的最大值/寄存器最大值。
    因此:通道电压=AD ...

    您的整体思路是正确的,ADC的转换其实就是一个一次函数y=kx+b的关系
    STC的12位ADC的线性度应该算是很不错的,
    对应到y=kx+b,b为0,k为一个恒定值,k=ADC的参考电压值/ADC的最大量化份数
    ADC的参考电压值=VREFP - VREFN,其中VREFP=GND=0,VREFP为参考电压的最大值
    12位ADC的的最大量化份数为4096,即将ADC的参考电压值平均分成4096份

    所以您的理解“寄存器最大值”不太准确,应该是“寄存器最大值+1”
    楼主的“12位ADC的ADCn通道的输入电压  = 转换结果 / 4096  * ADC_VRef+”是正解

    点评

    对的,ADC的转换其实就是一个一次函数y=kx+b的关系,b就是0点误差(正或负均可能),STC8系列、STC32系列的ADC的0点误差基本就是0,线性也非常高,评估ADC线性必须使用更精确的DAC输出电压来评估。 对于逼近型(SAR  详情 回复 发表于 2023-5-29 11:31
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    3044

    回帖

    6863

    积分

    超级版主

    积分
    6863
    发表于 2023-5-29 11:31:08 | 显示全部楼层
    zhp 发表于 2023-5-29 10:16
    您的整体思路是正确的,ADC的转换其实就是一个一次函数y=kx+b的关系
    STC的12位ADC的线性度应该算是很不错 ...
    对的,ADC的转换其实就是一个一次函数y=kx+b的关系,b就是0点误差(正或负均可能),
    STC8系列、STC32系列的ADC的0点误差基本就是0,线性也非常高,评估ADC线性必须使用更精确的DAC输出电压来评估。

    对于逼近型(SAR)ADC,增益为1时,N位ADC的转换结果 = 2^N * Vin/Vref,最大值是2^N -1。
    或者,输入电压 Vin = code * Vref/2^N,code最大值为2^N -1。
      8位ADC就是 ADC code =   256*Vin/Vref,code最大值是255, Vin = code *Vref/256。
    10位ADC就是 ADC code = 1024*Vin/Vref,code最大值是1023,Vin = code *Vref/1024。
    12位ADC就是 ADC code = 4096*Vin/Vref,code最大值是4095,Vin = code *Vref/2048。

    SAR ADC的过程有点像天平,比如12位ADC,对应天平砝码是1、2、4、8……2048克。
    采样电压之后,
    第一步,用最大的砝码(电压)2048去比较,
          若输入电压大于比较电压则最高位为1,这个砝码(电压)留在秤盘上。
          若输入电压小于比较电压则最高位为0,这个砝码(电压)从秤盘拿走。
    第二步,用次大的砝码(电压)1024去比较,
          若输入电压大于比较电压则次高位为1,这个砝码(电压)留在秤盘上。
          若输入电压小于比较电压则次高位为0,这个砝码(电压)从秤盘拿走。
    不断重复上述过程,最后得到结果,最大值就是将所有砝码加起来,4095。

    以前的SAR ADC架构是输入采样电路、R-2R做的DAC、比较器、数据锁存器(数据接DAC的输入),ADC的过程跟上述描述的一样。
    现代的SAR ADC一般都是开关电容式的,在集成电路中,做十几个精确比例的电容比较容易,并且受稳定影响比较小。

    下面为常见几种ADC的对比:

    SAR ADC的速度中等(一般几百KHz到10MHz之间比较多),分辨率中等,高速和高分辨率成本会非常高,很少见到14bit或以上的SAR ADC。
    高速ADC一般是FLASH ADC,分辨率一般不超过10位的,常见8位的,里面有256个比较器,一个时钟就得到一个结果,常见速度可达200MHz。
    双积分、三重积分ADC、计数式ADC速度慢,但是能做高分辨率,高线性,高的工频抑制能力。
    Sigma Delta ADC跟双积分类似,有更高的分辨率、更高的线性。
    至于VFC,即电压-频率转换,可以将电压转成频率,我认为不属于ADC的范畴。

    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    552

    主题

    9532

    回帖

    1万

    积分

    管理员

    积分
    14106
     楼主| 发表于 2023-5-29 11:32:18 | 显示全部楼层
    STC8H8K64U-45MHz-LQFP64/LQFP48/32, TSSOP20
    开天斧, 内置高精准 12位 ADC  测试 数据,
    下图,测试 16384个点,  外部实测,达到真12位ADC的水平



    STC8H8K64U-45MHz-LQFP64/LQFP48/32, TSSOP20
    开天斧, 内置高精准 12位 ADC  测试 数据,
    下图,测试 4096个点,  外部实测,达到真12位ADC的水平


    延伸阅读:
    【新提醒】STC8H8K64U 高精准12位ADC 测试数据图表 - ADC/比较器,DMA支持的12位ADC - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)


    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-20 02:36 , Processed in 0.086582 second(s), 58 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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