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.8335万:从5.2 升级到7.3 (包括编译器)会为ADC转换提供不正确的结果

Guru**** 2563740 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/635904/ccs-tms320f28335-upgrading-from-ccs5-2-to-7-3-including-the-compiler-gives-incorrect-results-for-adc-conversion

部件号:TMS320F2.8335万

工具/软件:Code Composer Studio

您好,

我们一直将5.2 与TI编译器版本6.1 .6配合使用。  有代码对输入信号进行采样(使用ADC),然后确定信号的频率。

在CCS 5.2 中,它正确地显示频率为60 Hz。

我将CCS升级到了7.3 ,当然这也需要更换编译器。  现在编译器是16.9 Tm5 LTS。

优化设置为4 (整个程序),并优化速度(5)级别。

现在使用相同的源代码时,检测到的频率为120 Hz。

我绘制了ADC读数的图表,比较并对比了用两种不同的CCS生成的结果,很明显,7.3 认为信号的速度是CC的 两倍5.2。

输入信号相同,并且为60 Hz,因此在7.3 中构建代码时出现问题。   

是否有人遇到过此问题?  问题是什么?  如何解决?

谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    进一步研究这一点,似乎ADC转换在7.3 与CCS 5.2 中的速度是其速度的3倍。
    ISR应以19.2 kHz运行,但在7.3 中,它最终以6.4 kHz运行。
    转换由ePWM触发,TBPRD寄存器设置为7812 (150 MHz/9600 Hz/2)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您是否能够将用于触发转换的PWM导出到引脚并确认其运行速度是否达到预期速度? 在CCS的“寄存器”窗口中,您是否能够确认ADC和ePWM的预校准器都按预期进行了编程?

    您 应该能够将旧的编译器版本安装到更新的CCS中。我理解您可能需要使用更新的版本, 但是,在新的CCS中尝试旧的可能有助于确认是编译器中的更改导致了问题,而不是其他因素。

    http://software-dl.ti.com/codegen/non-esd/downloads/download.htm#C2000

    Whitney

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

    非常感谢您的回复。 我最后确定使用的库是rts2800_fpu32_fast_sup补 遗.lib而不是fpu32.lib以及其他一些更改,使其正常工作。 我将在所有问题都解决后更新线程所需的全部操作。

    现在我正在16.9 Tm5编译器中查找math.h,但我找不到它。 16.9 4编译器中有Math.h。 数学h.h会怎样? 我是否需要将所有的include文件更改为math.h?

    谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在编译器版本16.9 .........4中看到float.h,math.h,linkage.h和string.h,但在版本16.9 .5中看不到。 为什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    很高兴您能再次使用。

    我打开了安装16.9 .5.LTS的文件夹,并在“include”文件夹中找到了所有这些头文件。 你说他们不是为你准备的吗? 我不确定是什么原因造成的。 也许您应该尝试重新安装它...?

    Whitney

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

    我重新安装了CCS7和编译器16.9 .........5 LTS两次,现在这些头文件出现在“INCLUDE”文件夹中。 我不太确定以前发生了什么。

    感谢您的建议。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我还需要将以下内容添加到我的代码中:

    #if DBL_mant_dig == FLT_mant_dig
    float cosf (float x){ return cos(x);}
    float sinf (float x){返回sin (x);}
    float sqrtf (float x){返回sqrt(x);}
    #endif

    使其进行编译。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您分享您的解决方案。 现在问题是否完全解决了?

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

    很抱歉,我花了一些时间来检查。 问题现已解决。

    谢谢你。