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.

[参考译文] TMS320F28377D:ADC 宏问题

Guru**** 2466550 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1489547/tms320f28377d-adc-macro-issue

器件型号:TMS320F28377D

工具与软件:

尊敬的 TI:

我有一个客户端使用宏来计算 ADC 值。 但在使用同一 DSP 的两个电路板之间会遇到意外行为。 在版本 A 上、宏正确执行、并且准确计算相应的物理值。 将相同代码刷写到修订版 B 时、CPU 不再输出预期值、而是返回0。

更改这个宏会显著影响代码库、因为它在整个应用程序中被广泛使用。 因此、在向客户端提出任何修改建议之前、必须确认宏本身是导致问题的原因。

为了进一步调查、我使用转换系数手动计算了版本 B 中的 ADC 值、以确定宏是否被错误执行。 手动计算确认了 ADC 值的准确性并正确地发送到应用程序。

非常感谢您为诊断和解决此问题提供支持。

此致、

#define Analog_ReadPhy(channel) 	ANALOG_CLAMP((float32_t)(Analog_Read(channel)*Analog_Trim[Analog_##channel].Coef_A)+Analog_Trim[Analog_##channel].Coef_B,Analog_Trim[Analog_##channel].MinPhyValue,Analog_Trim[Analog_##channel].MaxPhyValue)

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

    您好!

    我发现宏使用的缓冲区已声明、但已被放置在 CMD 文件中未定义的段中。 但是、在修订版 A 中、缓冲器可用、转换有效。