应用笔记 5321

校准DS4830光电微控制器的内部ADC失调

By: Sanjay Jaroli

摘要 : DS4830光电控制器内部的模/数转换器(ADC)失调可随温度和增益设置而变化,但DS4830允许用户测量ADC内部失调。将测得的ADC失调加至ADC失调寄存器,以抵消失调误差。本应用笔记演示利用应用程序校准DS4830内部ADC的失调。

引言

模/数转换器(ADC)将输入电压转换为相应的数字编码。理想的ADC在编码空间内实现这种行为。图1所示为采用2V基准的3位ADC的传递函数。
图1. 1/2 LSB补偿的理想3位ADC
图1. 1/2 LSB补偿的理想3位ADC
然而,设计一款在所有架构下都满足理想ADC特性的ADC非常困难。由于各种设计限制或约束,转换器存在各种误差,例如积分非线性(INL)、微分非线性(DNL)、增益以及ADC输入失调。
失调误差是ADC最常见的误差。对应于零电压输入(ADC输入连接至地)的ADC数字编码输出称为ADC失调图2所示为带有失调的3位ADC传递函数。
图2. 带有失调的1/2 LSB补偿3位ADC
图2. 带有失调的1/2 LSB补偿3位ADC

DS4830 ADC内部失调

DS4830光电微控制器内置13位ADC和ADC失调寄存器(ADVOFF),用于校准ADC内部失调。工厂对每一DS4830在室温、不同ADC增益ADCG1 (1.216V满幅)下进行失调校准。然而,DS4830 ADC内部失调会随温度和增益变化。
DS4830可测量任意ADC增益设置下的ADC内部失调。然后利用测量值校准ADVOFF寄存器。为测量ADC内部失调,ADC控制器将内部地连接至ADC输入,然后启动ADC转换。ADC控制器具有专用的通道选择地址25,指示ADC控制器测量ADC的内部失调。ADC控制器没有专用的数据缓存器储存ADC的内部失调结果。为存取内部失调转换结果,必须使用ADC控制器的地址覆盖选项。

用于ADC内部失调的地址覆盖选项

默认设置下,ADC转换结果储存在通道编号对应的ADC缓存器内。ADC控制器提供“地址覆盖”选项。该选项允许将ADC转换结果放在任意数据缓存器地址(0-24数据缓存器)。ADC控制寄存器(ADCN)具有地址覆盖控制位LOC_OVR。如果将该位置1,则允许用户选择一个替代位来储存ADC转换结果。ADC状态寄存器(ADST)的ADC转换配置寄存器选择位(ADCFG)置1时,替代位置由ADDATA[12:8]位(ALT_LOC[4:0])定义。

测量内部失调的ADC配置步骤

以下步骤介绍将DS4830的ADC数据和配置寄存器(ADDATA)配置为测量ADC内部失调信息。
  1. 以下位置为ADCN和ADST寄存器的对应值。
    1. 地址覆盖位(ADCN.LOC_OVR)置1
    2. ADC配置选择位(ADST.ADCFG)置1
    3. ADC寄存器索引位(ADST.ADIDX[4:0])置0
  2. 写ADDATA寄存器(ADDATA)。ADDATA[4:0]位中的ADC通道选择位ADCH[4:0]应为25。此外,对ADDATA寄存器中的替代位置位ALT_LOC[4:0]执行写操作(0至24之间的任意值)。ADC内部失调转换结果放在替代位置位指向的数据缓冲器位置。例如:
    1. ADDATA = 0x0039;这将ADC配置为内部失调测量,差分模式,替代位置为0,增益为1,ADC右对齐。
    2. ADDATA = 0x4139;这将ADC配置为内部失调测量,差分模式,替代位置为1,增益为3,ADC右对齐。
    3. ADDATA = 0x6439;这将ADC配置为内部失调测量,差分模式,替代位置为4,增益为4,ADC右对齐。
  3. 将ADC配置选择(ADST.ADCFG)置0,ADC寄存器索引位(ADST.ADIDX[4:0])置0。

ADC内部失调和校准

将ADC配置为内部失调测量后,ADCN寄存器中的ADC转换位(ADCONV)置1,开始ADC转换。ADC控制器将内部地连接至ADC输入,以测量ADC内部失调,启动ADC转换。转换结果为实测ADC内部失调。可从ALT_LOC[4:0]位指示(ADC配置期间设置)数据缓存器位置读取转换结果。
为校准ADC内部失调,将实测ADC内部失调取反(二进制补码)加至ADVOFF寄存器。表1为基于实测ADC内部失调的ADVOFF数值示例。这些ADVOFF数值假设工厂校准ADVOFF为0。ADC正常工作期间,最终结果传送至数据缓存器之前,将ADVOFF的数值叠加到转换结果。
表1. 用于ADC内部失调校准的ADVOFF寄存
Measured ADC Internal Offset ADVOFF Register (in Hex)
(in Decimal) (in Hex)
-2 FFFEh 0002h
-1 FFFFh 0001h
0 0000h 0000h
1 0001h FFFFh
2 0002h FFFEh
:上电(POR)期间,工厂默认值覆盖校准值。

示例代码

main.c中的代码演示ADC内部失调校准步骤。

流程图

流程图