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.

[参考译文] TMS320F28379D:降压交流电压信号-无法通过 ADC 读取

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

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1060949/tms320f28379d-step-down-ac-voltage-signal---unable-to-read-via-adc

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

您好!

  我正在使用函数发生器生成一个刻度为0-3V、直流失调电压为1.5V 的正弦波信号。 并使用以下逻辑将该信号应用到 ADC 通道0

   通道2 = AdcaResultRegs.ADCRESULT0;

if (通道2 >= 2049)

  MAIN_v =(通道2 - 2049);

其他

  MAIN_v =(2049 -通道2);


MAIN_avg = MAIN_avg + MAIN_v;
MAIN_CONT++;

if (MAIN_CONT >= 200)

MAIN_VOLT = MAIN_avg /MAIN_CONT;
MAIN_avg = 0;
MAIN_CONT = 0;

但每次我只有5-10个计数、即使振幅发生变化。

此致、

Shariq Hussain

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

    您好、Shariq、

    • 您是否已使用示波器确认信号按预期到达 ADC 引脚?  
    • 如何触发 ADC? 它是通过 ePWM 还是其他某种方法触发的?
    • 每次您进入 ISR 时、Adca.ADCRESULT0都会更新、还是总是相同的值?
    • VREFHI 基准引脚和 VDDA 模拟电源上的电压是多少?
    • 器件的工作频率是多少 CPU SYSCLK (此器件通常为200MHz)?  您是否通过检查 XCLKOUT 或通过检查 ePWM 频率等更间接的方法来确认器件频率?
    • 什么是 SYSCLK 到 ADCCLK 预分频设置?   (在该器件上、通常应为"6"=/4、以便从200MHz SYSCLK 中为您提供50MHz ADCCLK)
    • 通道 A0的 S+H 窗口持续时间是多少?  12B ADC 的最小值为75ns (15个 SYSCLK @ 200MHz)、但如果信号未在 PCB 上进行本地缓冲(由于函数发生器和 ADC 输入引脚之间的布线阻抗)、您可能需要更长的值   
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Devin、

    1、是的、信号到达 ADC 引脚。 我在示波器上看到了这一点。

    EPWM1上的触发信号。

    ADCRESULT0在每次进入 ISR 时更新、每次计数改变。 甚至我也可以精细地读取直流电压。

    VDDA 为3.3V。

    5、200 MHz。

    6、 AdcaRegs.ADCCTL2.bit.prescale = 6;  

    7、 AdcaRegs.ADCSOC2CTL.bit.ACQPS = 14;

    谢谢、此致、

    Shariq

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

    您好、Sharique、

    如果您没有阅读、那么从根本上来说、仍存在一些问题。  您可以尝试以下操作:

    尝试将输入信号移至不同的通道、同时修改 SW 以选择该通道。  您还可以设置一个 SOC 序列、以便对给定 ADC 上的多个不同或所有可能通道进行采样。

    代码运行后、在"Expressions"窗口中检查 AdcaRegs 的状态(如果尚未检查)、以确保初始化写入的设置符合预期。  您还可以在 SOC 或 ADCINT 中查找溢出标志、这些标志可能指示程序流不符合预期。

    还可以尝试在 C2000ware 中运行其中一个未经修改的预封装 ADC 示例。   

    另一种可能是 ADC 已损坏?  如果 ADC 因 ADC 输入引脚上的过压或欠压而损坏、您将看到大量泄漏电流流入 ADC 引脚。   您可以通过一个大电阻器(例如10k)向 ADC 引脚输入3.3V 和0V 来测试这一点、并查看泄漏电流是否存在分压器效应。   对于大多数 ADC 输入引脚、泄漏电流应该为1uA 或更低、而与缓冲 DAC 复用的任何引脚(包括 ADCA0)都有一个随机50k 下拉电阻器。