校准DS4830光电微控制器的内部ADC失调
Abstract
DS4830光电控制器内部的模/数转换器(ADC)失调可随温度和增益设置而变化,但DS4830允许用户测量ADC内部失调。将测得的ADC失调加至ADC失调寄存器,以抵消失调误差。本应用笔记演示利用应用程序校准DS4830内部ADC的失调。
引言
模/数转换器(ADC)将输入电压转换为相应的数字编码。理想的ADC在编码空间内实现这种行为。图1所示为采用2V基准的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
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内部失调信息。
- 以下位置为ADCN和ADST寄存器的对应值。
- 地址覆盖位(ADCN.LOC_OVR)置1
- ADC配置选择位(ADST.ADCFG)置1
- ADC寄存器索引位(ADST.ADIDX[4:0])置0
- 写ADDATA寄存器(ADDATA)。ADDATA[4:0]位中的ADC通道选择位ADCH[4:0]应为25。此外,对ADDATA寄存器中的替代位置位ALT_LOC[4:0]执行写操作(0至24之间的任意值)。ADC内部失调转换结果放在替代位置位指向的数据缓冲器位置。例如:
- ADDATA = 0x0039;这将ADC配置为内部失调测量,差分模式,替代位置为0,增益为1,ADC右对齐。
- ADDATA = 0x4139;这将ADC配置为内部失调测量,差分模式,替代位置为1,增益为3,ADC右对齐。
- ADDATA = 0x6439;这将ADC配置为内部失调测量,差分模式,替代位置为4,增益为4,ADC右对齐。
- 将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内部失调校准步骤。
流程图