This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] RM57L843:10位 ADC1组1 ch0偏移/直流增益问题、10kohm 可变电阻器、Vref = 3.3V

Guru**** 2482105 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/706348/rm57l843-10-bit-adc1-group-1-ch0-offset-dc-gain-problem-with-a-10kohm-variable-resistor-vref-3-3v

器件型号:RM57L843

大家好!

使用正确校准的万用表观察可变电阻器上的电压会产生不同的值、因为控制器中 AD 检测到的电压不是恒定偏移、也不是直流增益误差。 我已经进行了一些测量:

万用表电压[V] ADC 计数器值[1] ADC 电压[V] 万用表电压- ADC 电压差[V]
2.9999 897 2.89072275  0.10917725

2.0002.

5774 1.84980464  0.15039536
1.0001 290 0.934570313 0.065529687

什么会导致差异?如何解决差异或将其最小化至0.01以下? 无论是否具有校准功能、都曾尝试过、甚至尝试将其设置为12位 ADC、这两种方法都不起作用。 提前感谢您的回复。

我也包括代码:

/*用户代码开始(0)*/
*用户代码结束*/

*包含文件*/

#include "hl_sys_common.h"

/*用户代码开始(1)*/

#include "hl_esm.h"
#include "hl_adc.h"
#include "hl_gio.h"



adcData_t adc_data[1];
void 等待(uint32);

/*用户代码结束*/

/*用户代码开始(2)*/
/*用户代码结束*/

int main (void)
{
/*用户代码开始(3)*/
uint32 ch_count=0;
uint32 id =0;
uint32值=0;
浮点电压= 0、valueloat = 0;

/*初始化 Gio *
gioInit();
gioSetDirection (gioPORTB、1);

/*初始化 sci/sci-lin:偶校验,2个停止位*/
sciInit();

/*初始化 ADC */
/*组1 ->通道0和1 *
/*硬件触发源作为 GIOB 引脚0 *
adcInit();

adcCalibration (adcREG1);
adcMidPointCalibration (adcREG1);

/*开始 ADC 转换*/
adcStartConversion (adcREG1、adcGROUP1);

while (1)/*。 永久继续*/
{
/*使用 Gio 端口 b 引脚0触发*/
gioSetBit (gioPORTB、0、1);

/*... 等待并读取转换计数*/
while ((adcIsConversionComplete (adcREG1、adcGROUP1))==0);
ch_count = adcGetData (adcREG1、adcGROUP1、&ADC_DATA[0]);

ch_count = ch_count;


ID = ADC_DATA[0].id;
值= ADC_DATA[0].value;



gioSetBit (gioPORTB、0、0);



电压=((浮点)值/1024)* 3.3;



等待(0xFFFFFFF);
};

/*用户代码结束*/

返回0;
}


/*用户代码开始(4)*/

空等待(uint32时间)
{
while (time){time--;};
}
/*用户代码结束*/

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您可以通过增加输入采样时间来尝试转换吗?

    此致、
    Sunil
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Zsolt Nagy

    您是否使用电压基准或来自器件电源的 ADrefhi? 请检查 ADrefhi 是否为3.3V Sharp。

    此致
    米罗
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢你们、你们都说得对。 Vin 和 ADrefhi 上的电压真的不同、两者都不是3.3V Sharp、我还需要增加采样时间来获得更准确的 ADC 值。

    此致、

    Zsolt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我很高兴你能使它发挥作用。 请将答案标记为"已验证"、以便该主题在论坛上关闭。

    此致、
    Sunil
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如何实现? 我已经在两个答案中选中"这解决了我的问题"。

    此致、

    Zsolt
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的快速响应。 您无需再执行其他操作。 我将"关闭"此帖子。