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.

[参考译文] TMS320F28335:ADC 无法在频率的高值和十进制值下正确采样

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/994168/tms320f28335-adc-cant-sample-correctly-at-high-and-decimal-values-of-frequency

器件型号:TMS320F28335
主题中讨论的其他器件:TMDSCNCD28335C2000WARE

大家好、

首先、我尝试使用 DMA 寄存器实现 FIR 滤波器、如 TI F28335控制器技术讲座中的实验9中所述。 我尝试对不同频率的正弦波进行采样、并检查了 ADCBUF 寄存器的值、这些值在大于2-3kHz 的较高频率下会失真、也会在十进制值(如 CCS 中的图所示)上失真、频率为1kHz 和2kHz、但给出了错误的值1.1 kHz、1.2kHz。采样频率在48kHz/epwm2时较高。 理论上不应该发生这种情况、但与采样频率相比、我在如此低的频率下得到了失真的正弦波

我想实施自己的 FFT 代码、因此我需要更正 ADCBUF 寄存器、以便能够检测电流信号中的故障。

有人能解释为什么 ADCBUF 波形在高频或类似十进制的频率下失真?

此致  

Nitesh Mahawar

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

    Nitesh、

    感谢您访问 E2E 论坛。  您能评论一下您的硬件、是 TMDSCNCD28335控制卡还是我们 MCU 的定制硬件吗?  鉴于 PWM 的采样率与所需信号的关系大于>、我还会查看具有示波器的信号源、以确保从该角度来看它是干净的、并且在 ADC 电压范围(0V-3.3V)内。

    另一个组件是、当 PWM 速率与 ADC 触发/采样率相关联时、ADC 本身就具有自己的时钟速率(HSPCLK)和国际时钟分频器配置。  如果您将代码基于我们在 C2000Ware 中的示例、则 ADC 可能会设置为以最大25MHz 时钟频率运行、这在两个样本之间支持高达80ns 的频率。

    如果您获取 ADC 寄存器和 SYSCTRL 寄存器的屏幕截图并将其发布在此处、可能会更容易、因此我可以确认相对时钟。  如果您使用的硬件与控制卡不同、我还需要知道您的输入时钟。

    最棒的
    Matthew

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

    您好、Matthew、

    感谢您的回复。 我将 TMDSCNCD28335控制卡 R2.2与扩展坞配合使用。

     请按照您的要求参阅以下 ADC 寄存器和 SYSCTRL 寄存器的图像

    SysCtrlRegAdcctrlReg

    下面是示波器上2.1Khz 的波形以及 CCS 中的图形(ADCBUF)  

    2.1KhzOriginal waveform2.1KHZAdcBUF

    下面的波形针对7kHz  

    7Khz7Khzadcbuff

    2khz 和1kHz 的波形很好、在 CCS 中正确地绘制了该图。 对于较高的频率以及十进制类型的频率、可以看到这个问题  

    我要强调的是、我需要在 ADCbuf 中为 FFT 代码提供正确的数据、以便我能够获得信号的频率内容。

    有关这方面的任何建议都将有所帮助。

    希望这些数据有所帮助。

    此致、

    Nitesh M

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

    Nitesh、

    您能否向下滚动 ADC 寄存器上的某个位并同时捕获 ADCTRL3?  具体而言、我希望查看 ADCCLKPS 是否为3或更大。  现在、HSPCLK 分频器= 1 (将 CPU 时钟除以2)、如果 ADCTRL3 = 0、则意味着 ADC 的时钟频率为75MHz。  ADC 的最大时钟频率为25MHz。

    如果这不能解决问题、我们可以尝试提高 PWM 采样率、看看这是否能解决问题?  基本上、我希望获得更多样本、以便 FFT 运行。  如果 PWM 为48kHz、并且您看到7kHz 或以上输入正弦出现问题、则我们每个周期有6个或更少的点。  如果我们可以将点恢复到1kHz 正弦波(每周期48个点)的位置、则会提高 FFT 的精度。

    最棒的

    Matthew