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.

[参考译文] TMS320F280039C:ADC 基准问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1239050/tms320f280039c-adc-reference-issue

器件型号:TMS320F280039C
主题中讨论的其他器件:LAUNCHXL-F280039C

您好!

我使用的是 LAUNCHXL-F280039C、并想将 ADC 配置为使用来自 VREFHI 的外部基准电压。 我将 ADC_setVREF (..) 执行任何形式的 ADC 初始化、但它不起作用。 所有 ADC 结果寄存器都为零、但 SOC 必须被触发、因为我有由 ADC 转换完成事件触发的 ISR。

我已经注意到、ADC 在 ADC_setVREF (ADCx_BASE、ADC_reference_internal、ADC_reference_3_3V)下可以正常工作、但如果我选择2.5V 基准电压、则会出现相同的问题:所有结果寄存器均为零。 调试期间、我可以通过更改 ANAREF2P5SEL 位在内部基准电压电平之间切换。如果我使用 ANAREF2P5SEL=0、转换可以正常;但如果我使用 ANAREF2P5SEL=1、则不行。 如果 ANAREF2P5SEL=1、我可以在 VREFHI 引脚上测量2.5V 基准电压。

我在勘误表中未看到与此相关的信息。 在选择不同的基准电压电平时是否还需要执行其他操作?

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

    Hi Szabolcs、

    F280039C 器件上有3个 ADC 模块。  所有3个 ADC 上的 VREFHI 引脚都是通用的、这意味着所有3个 ADC 都需要具有相同的 VREFHI 配置。  如果您需要在  ADC_reference_3_3V 和 ADC_reference_2_5V 之间切换、则需要 为每个 ADC 模块调用 ADC_setVREF   、并且仅为 ADCA、ADCB 和 ADCC 选择 ADC_reference_3_3V 或 ADC_reference_2_5V。

    此致、

    约瑟夫

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

    您好、Joseph:  

    我已经知道这一点、所以我的问题是、即使我将所有的 ADC 模块参考电压设置为外部电压或2.5V 电压、转换也不起作用。

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

    Hi  Szabolcs、

    从 ADC_reference_3_3V 切换到 ADC_reference_2_5V 时、我无法重现您观察到 的情况。  我还使用了  LAUNCHXL-F280039C、并在 adc_ex1_soc_software 示例上进行了尝试。  我将在 A0和 A1上馈送直流信号、因为示例代码使用这些输入通道。  我可以在 ADC_reference_3_3V 和 ADC_reference_2_5V 之间切换、然后我将获得预期的转换结果。  我还可以从外部(向 VREFHI 引脚和 GND 馈送2.5V 电压)和内部 VREF (从 VREFHI 断开外部 VREF 源)模式切换、并获取预期的转换结果。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    //
    // Set up ADCs, initializing the SOCs to be triggered by software
    //
    Board_init();
    //
    // Enable Global Interrupt (INTM) and realtime interrupt (DBGM)
    //
    EINT;
    ERTM;
    ADC_setVREF(myADC0_BASE, ADC_REFERENCE_INTERNAL, ADC_REFERENCE_2_5V );
    //
    // Loop indefinitely
    //
    while(1)
    {
    //
    // Convert, wait for completion, and store results
    //
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    我在 while 环路之前添加了 ADC_setVREF ()、并且可以在其中更改任何基准模式和基准电压而不会出现任何问题。

    您是否遵循过任何示例、尤其是关于 ADC 设置顺序的示例?

    此致、

    约瑟夫

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

    您好、Joseph:

    问题解决了。 我让模拟引脚在 LaunchPad 上保持未连接状态、出于某种原因、如果我使用3V3参考设置、所有已配置的 SOC 结果寄存器都包含一些随机值、但在使用其他两种参考设置时、它们都为零。

    这很愚蠢、因为使用 adc_ex1_soc_software 示例代码、我获得了全部三种类型基准设置的随机 SOC 值、因此我认为我的代码存在问题。

    感谢您的帮助!

    此致、

    Szabolcs