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.

[参考译文] CCS/TMS320F2.8379万D:ADC采样率问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/635707/ccs-tms320f28379d-adc-sampling-rate-issue

部件号:TMS320F2.8379万D
主题:controlSUITE中讨论的其他部件

工具/软件:Code Composer Studio

大家好,

        这是塞纳特。 我对TI微控制器系列比较熟悉。 我正在尝试向ADC提供正弦波输入,但ADC输出失真。 我不知道这是否一个时间问题。 如果是这种情况,有人能帮我设置ADC 采样率吗。  我将通过ADC_SOC_continous_cpu01测试ADC转换。 请您帮助我更改代码中的哪些内容,以将采样率设置为44.1 kHz。

提前感谢!

Sainath Reddy。

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

    我建议您导入'ADC_SOC_ePWM'示例,该示例可在此处找到:
    C:\ti\controlSUITE\DEVICE_SUPPORT\F2837xD\V210\F2837xD_Examples_CPU1\ADC_SOC_ePWM</s>2837

    只需修改ePWM模块的TBPRD值即可获得44.1kHz频率。

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

    感谢您对Gautam的回复。 您能帮我更改TBPRD值以获得44.1 kHz吗? 我对CCS和tidsp非常陌生。  

    谢谢你。

    此致,

    Sainath Reddy。  

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

    从概念上讲,ePWM周期越长,采样率就越慢。 影响ePWM周期的一些因素:

    *PLL设置/实际CPU速度
    *SYSCLK至ePWM全局时钟分配器(在ClkCfgRegs.PERCLKDIVSEL寄存器中)
    *ePWM时基预缩放器
    *TBPRD值
    *UP-COUNT模式或UP-DOWN COUNT模式

    此外,事件预缩放器可能会影响触发频率(即,如果每N次比较或期间匹配事件只生成一个触发器)

    由于这里有许多因素,我建议您配置ePWM,以便在生成触发器的同一事件上切换引脚。 这将允许您使用示波器验证触发频率。

    在引脚上获取ePWM的一些最基本的代码是在该线程中:
    e2e.ti.com/.../63.4282万
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的回复Devin。 我计算的TBPRD值为TMPRD = 200 MHz / 44.1 kHz = 4308。  

    这是计算TBPRD值的正确方法。 如果正确,我是否需要将值直接指定为4308,或者我是否需要转换为十六进制。

    我是否需要更改任何其他寄存器值才能更改采样率????

    我在ADC方面面临的另一个问题是数字化输出。 它通常是由于我的代码中有任何错误而发生的。  

    谢谢你。

    此致,

    Sainath Reddy。

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

    这是您希望如何计算期间的一般想法,但结果不正确。

    由于ClkCfgRegs.PERCLKDIVSEL寄存器中的全局分配,有效的ePWM时钟可能为100MHz (但请检查该寄存器的内容并阅读寄存器在TRM中的作用)。

    ePWM TBPRD还可以为模块提供本地时钟分频器,因此您也需要检查该值。

    检查PLL输入时钟(X1针脚)和PLL倍频和分频器设置也很值得,以确保200MHz系统时钟正确。

    总的来说,由于有许多可能的设置可以更改计时,因此您需要让ePWM切换引脚,以便您可以使用示波器验证计时(或者,您也可以向已知频率的ADC输入波形,然后检查转换后的结果)。

    是的,您可以直接将4308 (或您提出的任何内容)作为整数写入TBPRD寄存器。十六进制值具有前导'0x'。例如0x10D4。

    我不确定我是否遵循您的ADC结果问题? 数字值与预期的偏差是否超过模块性能数据表中指定的公差?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    基本上,我通过函数发生器向TI DSP的ADC提供正弦波输入。 所以,当我验证ADC输出时。 但是,ADC输出模式的某些部分会失真。 您是否知道输出中通常会出现这些错误的原因。  是因为代码错误还是其他原因。

    谢谢你。

    此致,

    Sainath Reddy。

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

    您好,Sainath,

    这种扭曲可能有多种原因。  其中一些可能是:

    • 由于布线,阻抗不匹配或驱动器强度或带宽不足,信号无法很好地传输到ADC。   
      • 理想情况下,您应使用短屏蔽电缆(如BNC电缆),然后使用高带宽和低噪声运算放大器对板上的信号进行本地缓冲。  ADC输入的运算放大器输出应具有较低的R值(可能为30至50欧姆),并且ADC输入上的电容器为10x至20x通道。
    S+H时间不足。
    • 如果输入具有高阻抗,则需要增加S+H持续时间(由ACQPS设置控制)。  这还包括函数发生器和ADC输入之间的电缆的感应阻抗(这就是理想情况下将输入缓冲在ADC输入附近板上的原因)。
    ADC支持电路或基本设置有问题
    • 如果ADC时钟高于数据表指定的最大额定值,则输出可能失真或只是垃圾
    • 如果VREFHI输入不稳定且由良好的源驱动,则可能发生失真。  请注意,一个F2837x controlCARD的修订版具有与VREFHI输入上的缓冲电容器相关的错误。
    • 如果VDDA电源超出范围或电流受限,ADC可能会产生失真输出
    • 采样率问题可能会导致混叠,从而使采样波形出现意外情况。 通常情况下,如果采样速率太慢,则会出现这种情况。