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.

[参考译文] MSP432P4011:运行 TI-RTOS 的 MSP432P4011的 ADC14问题

Guru**** 2517080 points
Other Parts Discussed in Thread: LMT84, SYSCONFIG, CC2640

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/944543/msp432p4011-adc14-issue-with-msp432p4011-running-ti-rtos

器件型号:MSP432P4011

P/N - MSP432P4011
IDE - CCS 9.2
TI-RTOS

您好的论坛;

我在使用运行 TI-RTOS 的 MSP432P4011上的 ADC14硬件和驱动程序时遇到困难。

我有一个定制 PCB、该 PCB 设计中的 MSP432与一组外设相连接。 我在 ADC 引脚上测量了 TI LMT84温度传感器输出(P5.4、即 ADC14.A1)。 LMT 传感器输出与环境温度成比例的模拟电压,电压可转换为*C 温度。

我已使用 SysConfig 工具配置 ADC、如下所示-

我将 ADC 用作14位 VDD (+3.3V)基准、并调用"adc_convertToMicroVolts () fxn 以获得实际的 uV 值、如下所示-  

//打开要使用的 ADC 通道
ADC_Handle adcHandle_TEMP_INT = ADC_OPEN (TEMP_INT、&TEMP_INT_params);
//对 ADC 的模拟输出进行采样
ResStatus = ADC_convert (adcHandle_TEMP_INT、&Result);
//转换为微伏
adcValueUv = adc_convertToMicroVolts (adcHandle_TEMP_INT、结果);
display_printf (handle_disp、0、0、"ADC 读取%d"、adcValueUv);


//使用后关闭 ADC 通道
ADC_Close (adcHandle_TEMP_INT); 

我甚至调用上述函数10次并求平均值以消除任何噪声问题。

我的问题-
我看到通过上述方法产生了显著的失调电压。

我制造和组装了两套相同的硬件(工厂组装、无手工焊接等)、并且我在这两套硬件上运行准确的代码。 我得到了以下结果-  

硬件1 -位置办公室
万用表(DMM)在 ADC 引脚上读取的电压为888mV、对应的温度为26.7*C
ADC 的读数为960mV、偏差为+/-60mV、对应于13.6*C 的温度

硬件2-定位主页
DMM 读取 ADC 引脚上909mV 的电压、 对应于23*C 的温度
ADC 的读数为950mV、偏差为+/-30mV、 对应于15.5*C 的温度

很明显、较小的偏移值将会影响温度检测。



我的问题是-这是否在 ADC14外设的规格范围内? 我是否缺少了一些中间步骤?
任何见解都将不胜感激!
 

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

    Shreyas、您好!

    表5-29. 数据表(https://www.ti.com/lit/gpn/msp432p4011)的精密 ADC 线性参数 具有典型的偏移值、具体取决于 ADC14VRSEL 的配置设置。 但在所有情况下、它仅显示±2mV 的最大偏移。 但 根据   ADC14VRSEL 的配置设置、总未调整误差的最大值为±185 LSB。 我无法从您的 POST 中得知基准电压,但使用3V 基准电压时,该基准电 压转换为大约± ^68mV (=(185/2* 13)*3V)。 这可能会说明发生了什么情况?

    Srinivas

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

    我使用 VDD 作为基准、并从 SysConfig 中选择它、因此我不处理 ADC14VRSEL。 是否有任何可以访问此配置的想法?

    此外、如何从 SysConfig 修改采样/保持时序?

    我担心这可能不仅仅是一个偏移问题、而是一个整体问题、因为测量结果有很大变化。

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

    您好 Srinivas;

    我记得、在 SysConfig 之前、曾经有一个"板"文件、我们可以通过该文件修改 ADC 和其他硬件属性。

    例如、对于 CC2640、我能够将采样时间配置为-  

    {
    //特定于应用的 ADC
    .adcDIO = Board_DIO29_ANALOG、 /*此 ADC 专用于插入电压传感器应用板*/
    .adcCompBInput = ADC_COMPB_IN_AUXIO2、
    .refSource = ADCCC26XX_fixed_reference、
    .samplingDuration = ADCCC26XX_SAMPLING_DURAY_42P6_US、
    .inputScalingEnabled = true、
    triggerSource = ADCCC26XX_TRIGGER_MANUAL
    } 

    是否有用于 MSP432P4011的等效方法? SysConfig 不提供对这些低级配置的访问权限、因此解决方法是什么?

    我之所以提出这一点、是因为同一温度传感器电路在特定的采样持续时间内一直为我们使用 CC2640、我想在 MSP432上复制该精确设置。

    -Shreyas

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

    Srinivas、您好、很抱歉打扰了您、但如果可能、您可以让我在这个问题上朝着正确的方向前进吗?

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

    Shreyas、您好!

    SysConfig 工具应生成包含 ADC 配置的.c 和.h 文件。  ADC14VRSEL 应在这些文件中进行配置。

    您能否访问 SysConfig 生成的文件?

    Srinivas

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

    感谢 Srinivas;

    我确实看到并可以访问这些文件。

    我可以在 ADC 配置中看到以下内容-  

    {
    .adcPin = ADCMSP432_P5_4_A1、
    .refVoltage = ADCMSP432_REF_VOLTGE_VDD、
    .resolution = ADC_14BIT、
    .refExtValue = 3300000
    }、 
    /* TEMP_INT */
    {
    .fxnTablePtr =&ADCMSP432_fxnTable、
    .object =&adcMSP432Objects[TEMP_INT]、
    hwAttrs =&adcMSP432HWAttrs[TEMP_INT]
    }、 

    但是、我看不到 ADC14VRSEL 被定义在任何位置。 我也看不出在哪里可以为 ADC 的采样/保持配置设置一个周期。
    有什么想法、我会错过什么?

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

    Shreyas、您好!

    ADC 配置中的这些配置参数将在项目的其中一个源文件中设置。 您可以在 该源文件中添加其他设置、如 ADC14VRSEL。 这对您来说是可行的选择吗?

     CC2640上可用的12位 ADC 不同于 MSP432P 器件上可用的14位 ADC。 我认为两个器件上的不同参数之间没有1-1对应关系。

    《CC2640用户指南》(https://www.ti.com/lit/pdf/swcu117) (第17.4.8节 ADC)和《MSP432P》(https://www.ti.com/lit/pdf/slau356) ( 第22节精密 ADC)对 ADC 配置寄存器进行了不同的寄存器描述。

    Srinivas

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

    Srinivas、您好、感谢所有的输入。

    我进行了一些挖掘、发现我的输出电容器配置不正确。 传感器的输出电容(100pF)不够大、无法在没有波动的情况下为 ADC 的输入级充电。 在将100pF 与4.7nF 相交换时、我将获得更准确、更稳定的读数。

    谢谢!