用于直流测量的ADC配置

7个帖子/ 0新
最后一篇
Icujba.
离线
最后一次露面:4年5个月前
加入:2015-05-13 08:04
用于直流测量的ADC配置

我想知道推荐的ADC配置,用于使用SDK 3.0.8.0进行正确和稳定的直流测量值

基于“UM-B-004 DA14580_581外设DRVERS_V1.4.PDF”和“DA14580_DS_V3.1.PDF”的信息,我的配置当前如下所示:

adc_calibrate()
adc_init(gp_adc_se | gp_adc_chop,adc_polarity_unsigned,0 / * no gp_adc_attn3x * /)
ADC_ENABLE_CHANNEL(ADC_CHANNEL_P00)
adc_get_sample()
adc_disable()

查看adc_get_vbat_sample()它是:
1. GP_ADC_CHOP使用率不是首选,尽管强烈建议在“DA14580_DS_V3.1.PDF”中,而是使用具有相对GP_ADC_SING的两个样本
2.在ADC_INIT()之后使用20微秒延迟,该延迟与“da14580_ds_v3.1.pdf”中的“表293”中描述的定时特征映射(注意:在ADC_CALIBRATE()中adc_int()之后使用相同的20微秒延迟())))。

1. ADC_INIT()之后需要20微秒延迟?
2.考虑到ADC_INT()设置GP_ADC_DELAY2_REG是否通过GP_ADC_DELAY_REG和GP_ADC_DELAY2_REG控制必要的延迟。
3. ADC相关寄存器的内部工作有更多信息吗?

设备:
RVA.
离线
最后一次露面:2天前1周
职员
加入:2014-02-07 14:10
嗨Icujba,万一你不是

嗨Icujba,如果您不使用衰减,不需要延迟。随着衰减(如果您打算测量电压> 1.2V的情况下),您应该添加一些延迟,以允许内容收取。这应该在4us的范围内。有关ADC的内部工作的更多信息,但这是不可用的宠物。你有一些具体问题吗?

最好的问候,RVA

Icujba.
离线
最后一次露面:4年5个月前
加入:2015-05-13 08:04
嗨RVA,

嗨RVA,
感谢你的回复。我将使用“衰减”方案的推荐延迟。
最好的问候,离子

贾克科S.
离线
最后一次露面:5年9个月前
加入:2015-06-25 13:04
你好,

你好,

我真的很简单代码,我没有得到ADC的一致结果(至少4位丢弃4位,所以有效的分辨率是6位,您也在电池中制作),看起来ADC也很相当巨大的偏移错误,校准没有帮助。偏移误差是尤其在较低电压下的主要问题......

我的测试设置真的很简单:External_Power ---> 100K欧姆电阻--->输入引脚(配置为PID_ADC)。代码使用您的示例,因此尚未修改ADC功能(在最后阶段添加了Chop Bit)

UINT16 U16ADC = 0U;
UINT16 i = 1000u;
uint16 u16min = 0xffffu;
UINT16 U16MAX = 0U;
dbg_print(“\ n \ radc att 1x,calib在meas之前,1000x单次meas \ n \ r”);
adc_enable_channel(adc_channel_vdd_ref);
adc_calibrate();
adc_init(gp_adc_se,0,0);//单端模式,1V18
adc_enable_channel(adc_meas_temp);
当我 - )
{
U16ADC = ADC_GET_SAMPLE();
如果(U16ADC if(U16ADC> U16MAX){U16MAX = U16ADC;}
}
adc_disable();
dbg_print(“ADC min:0x%x,max:0x%x,diff%u \ r \ n”,u16min,u16max,u16max-u16min);

凭借50MV录制的最大值是正确的,休息太低:
ADC ATT 1X,CALIB在MEAS之前,1000x单次测量
ADC MIN:0xF,MAX:0x3B,Diff 44

我还尝试平均10个样本,但结果仍然〜50mV误差〜17%,140mV有〜5,5%误差和550mV 1,7%的误差,最小误差(〜1,25%)达到〜700mV水平达到在这个错误后看起来保持稳定......

提高电压没有帮助,min / max样本之间的差异保持相同(并且再次最高的样本是正确的)
ADC ATT 1X,CALIB在MEAS之前,1000x单次测量
ADC MIN:0x150,MAX:0x17A,Diff 42

ADC校准寄存器值在校准后的范围之间变化......
offp:0x204-0x208
OFFN:0x1f8-0x1fa.

数据表中未描述ADC功能,所以我想获得所有材料。还有一些寄存器位(GP_ADC_CHOP,GP_ADC_IDYN ......)可以做某事,但根据您的参考设计(电池非常稳定的DC-SOURCE?)不使用...

在ADC_INIT()中启用GP_ADC_CHOP,那么结果在MIN / MAX差异方面更好,但现在MAX不是那么关闭实际值......
ADC ATT 1X,CALIB在MEAS之前,1000x单次测量
ADC MIN:0x158,MAX:0x176,Diff 30

我猜GP_ADC_CHOP应肯定使用。可以同时启用GP_ADC_I20U和GP_ADC_IDYN常量VS动态之间的区别是多少?

贾克科S.
离线
最后一次露面:5年9个月前
加入:2015-06-25 13:04
抱歉说这件事

抱歉,关于最大值是正确的,我看过50mv的差异,44dec作为AD转换结果是50mV,假设1,18V参考。所以没有办法确定SW中的“正确”值......

贾克科S.
离线
最后一次露面:5年9个月前
加入:2015-06-25 13:04
我猜我想出来了

我猜我想出了一些问题的部分(Min&Max之间的差异很大),外部电源存在噪音。我向测量结束添加了Capasitor,解决了那个。仍然看起来如何抵消错误,这是一个功能吗?错误看起来是〜5%-2%在下端最高...

使用以下公式转换MV打印* 1180/1023和ADC值现在是小数
72MV(测量)给出(CHACH_ON):ADC MIN:65,MAX:67,Diff 2,AVG:66 MV:76
366MV(测量)给出(CHOP_ON):ADC MIN:314,MAX:316,Diff 2,AVG:314 MV:362
692MV(测量)给出(CHOP_ON):ADC MIN:588,MAX:590,Diff 2,AVG:588 MV:678
835MV(测量)给出(CHOP_ON):ADC MIN:706,MAX:709,Diff 3,AVG:707 MV:815
1066MV(测量)给出(CHACH_ON):ADC MIN:903,MAX:906,Diff 3,AVG:905 MV:1043

kurbylee.
离线
最后一次露面:3年6个月前
加入:2014-11-05 09:10
我需要以最大速度进行样本

我需要以最大速度(约50kHz)来样,例如我续了1000个样本,我不能使用Capasitor,所以,对我的次要偏移是巨大的。
任何人都可以告诉我如何解决它?