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.

[参考译文] TMS320F280041:ADCRESULTx 始终读为0

Guru**** 2532630 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1060331/tms320f280041-adcresultx-always-reads-0

器件型号:TMS320F280041
主题中讨论的其他器件:C2000WARE

我对 F280041上的三个 ADC 使用以下配置:

    /*
     * Enable internal reference on ADCs
     */
    ADC_setVREF(ADCA_BASE, ADC_REFERENCE_INTERNAL, ADC_REFERENCE_3_3V);
    ADC_setVREF(ADCB_BASE, ADC_REFERENCE_INTERNAL, ADC_REFERENCE_3_3V);
    ADC_setVREF(ADCC_BASE, ADC_REFERENCE_INTERNAL, ADC_REFERENCE_3_3V);

    /*
     * Set ADCCLK divider to /2
     */
    ADC_setPrescaler(ADCA_BASE, ADC_CLK_DIV_2_0);
    ADC_setPrescaler(ADCB_BASE, ADC_CLK_DIV_2_0);
    ADC_setPrescaler(ADCC_BASE, ADC_CLK_DIV_2_0);


    /*
     * Set pulse positions to late
     */
    ADC_setInterruptPulseMode(ADCA_BASE, ADC_PULSE_END_OF_CONV);
    ADC_setInterruptPulseMode(ADCB_BASE, ADC_PULSE_END_OF_CONV);
    ADC_setInterruptPulseMode(ADCC_BASE, ADC_PULSE_END_OF_CONV);

    /*
     * Power up the ADC and then delay for 1 ms
     */
    ADC_enableConverter(ADCA_BASE);
    ADC_enableConverter(ADCB_BASE);
    ADC_enableConverter(ADCC_BASE);

    DEVICE_DELAY_US(1000);

当然、外设时钟被启用:

    SysCtl_enablePeripheral(SYSCTL_PERIPH_CLK_ADCA);
    SysCtl_enablePeripheral(SYSCTL_PERIPH_CLK_ADCB);
    SysCtl_enablePeripheral(SYSCTL_PERIPH_CLK_ADCC);

当我将一个通道配置为由 ADCA 采样时、一切工作正常、AdcaResultsRegs.ADCRESULTx 包含有效值。

但是、ADC B 显示了一种奇怪的行为:例如、如果我将通道 B0配置为由 ADCB 使用 SOC nr 进行采样。 6、会发生以下情况:

  • ADC 配置正确、
  • ADC 实际转换以下内容:
  • 但是:结果寄存器始终读为零!!

ADC B 和 ADC C 上的其他通道也会出现同样的问题。只有 ADC A 看起来工作正常。

我是否错过了一些配置? 什么可能导致此类问题?

提前非常感谢您的帮助。

谢谢、Emil

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

    您好!

    我将查看此查询、稍后将返回。

    谢谢
    Vasudha

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

    您好!

     您在此应用中使用的是哪种电路板? 此外、您是否尝试运行 C2000Ware 下提供的任何 ADC 示例? 这些示例通常配置多个 ADC 实例。 检查这些在您的电路板上运行是否正常。

    位置: C2000Ware_4_00_00_00\driverlib\f28004x\examples\adc

    谢谢
    Vasudha

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

    Vasudha、您好!

    感谢您的回答。

    我正在使用定制板、但也有可用的 Launchpad。 我在 launchpad 上运行了 ADC 示例、它们工作正常。 但是、在我的板上、ADCB 和 ADCC A/D 转换器也显示了我之前在运行 ADC 示例时描述的行为。

    下面是我的板的一些屏幕截图:

    • MCU 模拟部分的架构:

    • 电路板模拟部分的布局:

    此设计中是否存在明显的错误?

    哪些因素会导致转换器实际转换(ADCCTL1.ADCBSYCHN 具有对应于所选最高 SOC 的有效值)、但 ADCRESULT 寄存器读数正好为0?

    再次感谢您的帮助、

    最棒的

    Emile

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

    您好!

    我将对此进行深入研究、并将很快返回给您。

    谢谢
    Vasudha