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.

[参考译文] TMS570LC4357:ADC 自检和校准

Guru**** 2350610 points
Other Parts Discussed in Thread: TMDX570LC43HDK, HALCOGEN
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/607637/tms570lc4357-adc-self-test-und-calibration

器件型号:TMDX570LC43HDK
主题中讨论的其他器件: HALCOGEN

您好!

我 是第一次使用 Hercules TMDX570LC43HDK。 我已经完成了一些教程,特别是如何将 ADC 用于板载集成光传感器和温度传感器。 我注意到、我使用计算器计算出的 ADC 值与 MCU 计算出的 ADC 值不同。 为了证明这一点、我从 TP23获取了5V 电压、并将其连接到 AD1IN 的 PIN7。 因此、我得到的 ADC 值为4095 = 4.999V。 当我将 PIN7从 AD1IN 连接到 GND 时、结果相同、ADC 值0001 = 0.001220703mV。 最后、我使用了两个10k Ω 电阻器、并构建了一个分压器。 因此 ADC 值必须为2048 = 2.5V、但结果为2.20V。我认为我必须校准 ADC、但我不知道如何校准。 我找到了"技术参考手册 TMS570LC43x 16/32位 RISC 闪存
微控制器"-"22.2.6.1.2校准和偏移误差校正序列 P.857"、但我不知道在 CAL_EN (ADCALCR.0)示例中可以找到的方式和位置。 请帮助! 很抱歉我的英语不好。

此致

V.W

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

    您好、Vitaliy、

    HalCoGen 生成 ADC 校准示例代码。 在 hl_adc.c 中有2个函数:adcCalibration()和 adcMidPointCalibration()。 您可以使用其中任何一个。

    adcCalibration()使用校准模式计算偏移误差。

    adcMidPointCalibration():使用中点校准模式计算偏移误差。

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

    感谢您的快速回复!

    我尝试使用以下代码存储 adcCalibration()的值:

    #include "HL_ADC.h"


    int main (空)

    adcData_t adc_calibration_data;
    adcData_t * adc_calibration_data_ptr =&adc_calibration_data;
    uint32 adc_value_offset;

    adcInit();

    while (1)


    adcCalibration (adcREG1);
    adcStartConversion (adcREG1、1U);
    while (!adcIsConversionComplete (adcREG1、1U));
    adcGetData (adcREG1、1U、adc_calibration_data_ptr);

    adc_value_offset = adc_calibration_data_ptr ->值;



    返回0;


    ADC_value_offset 为4294967144。 如果我从 2^32 = 4294967296减去 ADC_value_offset、结果为152。 这是计算失调电压的正确过程吗?

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

    您好、Vitaliy、

    adcCalibration()计算偏移量并将该值以二进制补码形式写入 ADCALR 寄存器。 您无需在代码中再次计算偏移。

    在正常运行期间(校准被禁用时)、ADCALR 寄存器的内容在被存储在 ADC 结果存储器中之前被自动添加到 AD 内核的每个数字输出中。 您从 ADC 存储器读回的值是校正后的值。

    我假设您使用12位模式、从 DAC 存储器读取的值应小于或等于0xFFF。

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

    您好、Wang、  

    我现在使用 adcMidPointCalibration (adcREG2);。 我注意  到、当我将一个下拉电阻器连接到引脚7 - AD2IN 时、ADC 的电压值为0、543V (下图)。 在 AD2IN 是输入通道的情况下、这是怎么可能的? 当连接到 GND 时,不应有任何电流流动,并且没有输入(下图),当浮动时,这是有道理的。

    当我使用 adcCalibration (adcREG2)时、ADCALR 寄存器的值现在为0x00000004; 当我使用 adcMidPointCalibration (adcREG2)时;ADCALR 的值为0x00000FF9。 我再次构建一个分压器(上图)来校准 ADC 的值。 输入的 ADC 电压现在约为2、42V。  我的差值约为56mV。 它来自哪里?

    此致

    维他利

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

    尊敬的 Vitaliy:

    可能有助于解决您的问题的一些问题:

    -您是否在 ADC 输出引脚悬空时检查了电压电平?

    -在输入级损坏的情况下、您是否已经尝试过另一个 ADC 输入引脚?

    此致

    勒内

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

    您好、Ren é、

    我没有找到输出引脚、或者您说的是具有输出引脚的输入引脚吗?

    我使用万用表检查了 ADC1和 ADC2的所有输入引脚。 我在 ADCIN 和 GND 之间进行了0、035V - 0、049V 测量。

    当然、我尝试了另一个 ADC 输入、但结果是相同的。

    此致

    维他利

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

    您好、Vitaliy、

    您是否已经检查了采样电容器的充电时间和源阻抗?

    在我看来、分压器的阻抗似乎很高-请考虑使用信号放大器。

    此致、

    勒内

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

    您好、Vitality、

    我对 RM57和 LC4357 LaunchPad 进行了多次测试、使用 ADC1采样的值是正确的。

    这是我的采样数据

      通道0:I 直接将 AD1IN0短接至 GND (J3、引脚3至 PIN2)

      通道1:悬空

      通道6:温度传感器

    adcCalibration()的偏移量为0x0B

      adcMidPointCalibration()的偏移量为0x09

      它们彼此非常接近。

       

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

    Ren é 和 QJ Wang、您好!

    我注意到、正如 Ren é 之前提到的、由于我在分压器中使用了高电阻器、Csamp 的电流会很低。

    由于我增加了 Csamp 的采样时间、这些值简直完美!  

    尽管 误差不是很高、但我仍将使用校准。

    感谢您的建议和帮助!

    此致

    维他利