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.

[参考译文] TMS320F28377S:在触发 ADC SOC 事件后 ADCINTFLG 未被置位

Guru**** 2442960 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1008251/tms320f28377s-adcintflg-was-not-set-after-trigger-adc-soc-event

器件型号:TMS320F28377S

您好、专家、

我的客户遇到一个问题、即在软件触发 ADC SOC 事件后 ADCINTFLG 未设置。 当 ADC 的输入电压超过2.3V 时、就会出现此问题。

在 PWM 中断开始时、它们使用 ADCSOCFRC 来触发全部四个 ADC 的 ADC 转换、如下所示:

此外、在该 PWM 中断中、它们使用 while 函数等待 ADC 转换完成。

但代码滞留在这里、因为 ADCINTFLG 未设置为1。   

您能否帮助解释在触发 ADC SOC 事件后 ADCINTFLG 未设置的情况? 有没有关于这个问题的建议?

下面是 ADC 的配置。

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

    您好!

    客户在尝试操作一个中断、同时在另一个中断内部工作。 默认情况下、C28x 内核不支持嵌套功能、在该功能中、较高优先级的中断(ADC)可以在较低优先级的中断执行期间从较低优先级(ePWM)中断中接管。

    您可以要求您的客户参阅以下文章: C28x 中断嵌套 、以了解有关如何在 C28x 内核上配置嵌套的详细信息。

    希望这对您有所帮助。

    谢谢、

    Aditya

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

    Aditya、

    客户未使用 ADC 中断、仅使用 PWM 中断且没有中断嵌套、

    问题是、为什么在没有中断嵌套时、在触发 ADC SOC 事件后、ADCINTFLG 有时未被置位?

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

    强、

    作为常规练习的一部分、我们无论如何都可以建议避免 ISR 中的任何等待函数。 最好将 ADC ISR 与 PWM 一起使用以执行其他任务。 这 有望解决该问题。 我们也在研究当前问题、但您可以建议您这样做、直至找到问题的根本原因。

    谢谢、

    Aditya

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

    您好、Aditya、

    是的、这就是我们建议客户做的事情、客户找到根本原因。 谢谢、我们可以解决这个问题。  

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

    你好、很强、

    您似乎已经解决了这一问题、但我要注意的是、客户代码中存在的 ADC SW 触发方案因以下几个原因而不建议使用:

    • 软件在多条线路中触发多个 ADC 将导致不同 ADC 的异步操作(每个 ADC 在 CPU 按顺序执行相应的软件强制操作时启动)。  这会对 ADC 产生性能影响(请参阅 TRM 的"确保同步运行"部分以及器件数据表中的 ENOB 和隔离条件。  
    • ePWM 具有针对 ADC 的硬件触发机制。  除了解决上述异步问题之外、硬件触发 通常会导致确定性时序 (与 ISR 不同、在多 ISR 系统中、ISR 可能会延迟)。 硬件触发还应允许您在 ADC 结果完成时进入 ISR、因此不需要对所有标志进行自旋等待(如果需要、您可以彻底检查 ADCINT 标志是否已设置、而不是自旋等待)。  这将大大减少 ISR 所花费的时间。