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.

[参考译文] LAUNCHXL-F28377S:Launchpad F28377S:使用具有时间关键代码的中断以及低功耗模式和唤醒功能

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/629015/launchxl-f28377s-launchpad-f28377s-using-interrupts-with-time-critical-code-along-with-low-power-mode-and-wakeup

器件型号:LAUNCHXL-F28377S

尊敬的先生:

我在结构健康监控项目中使用 TI Launchpad F28377S。  

在我的整个系统中、我想提供3个外部输入信号(使用 GPIO 引脚和外部开关)。 这些外部信号(我更喜欢使用外部中断 、因为它将使我能够在运行时的任何时候灵活地识别它们)并且每个信号将决定要执行的特定代码流(例如在系统的不同工作模式之间切换)。 同样、我 在系统中有时间关键型代码(包括使用其自身中断 ADCINT1至 ADCINT4以交替方式以可能的最大频率进行 ADC 采样)。 为此,我将使用   controlSUITE 中默认示例程序的逻辑"ADC_SoC_Continuous")。

现在、我 不想中断系统中的这个时间关键型操作。 但我需要识别信号、然后在完成此时间关键 型操作(因为它非常小、大约为2ms)后、更改代码流。 有可能吗? 我想在时间关键型操作期间禁用中断、并在完成后再次启用中断。 但是,它是否也会禁用 ADCINT ?  (运行此 ADC 采样代码所必需的)。 还有其他方法可以做到这一点吗?   我仅使用这3个外部中断。 我能否在时间关键型操作期间仅禁用这3个中断? 在我计划时、它是否能够完美地工作?

同样、我希望使用这3个外部信号中的一个将器 件置于低功耗模式(可能是待机模式或空闲模式)、并通过使用这些信号中的任何一个以及识别其中断(用于改变系统中的控制流)来唤醒器件。  我的意思是、所有3个外部信号都应该能够唤醒器件并识别其中断(直接跳转到特定的运行模式)。

请向我展示正确而完美的方法。 在我的系统中所需的所有组件。

如果有非常基本的问题、请道歉 。 因为、我是第一次使用 launchpad/TI 微控制器设计系统、我对它的了解非常少、需要一些专家建议。 所以、请帮助我理解它。

谢谢你  

Mandar Kostavade

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

    正确的做法是、在乒乓代码期间发生的中断可能会导致遗漏一些结果。 但是、对于 ADC 乒乓采样、ADCINT 标志不需要通过 PIE 从 ADC 模块传播到 CPU -它仅在本地使用。 因此、在 CPU 或 PIE 级别禁用中断不会导致乒乓代码出现任何问题、因此这绝对是处理应用要求的有效方法之一。

    现在、处理这种情况的最佳方法是使用 F28377xS 器件中的一些并行功能同时执行这两项操作。 这里的一些可能性是:
    *在 ADC 在后台进行转换时,DMA 负责保存 ADC 数据。 CPU 可自由处理外部信号。 我们在 C2000Ware 中提供了 ADC_SoC_Continuous_DMA 示例。 这是针对 ePWM 设置的、因此您可以将 ePWM 触发频率推高或使用乒乓 ADCINT 标志来触发 DMA。
    * CLA 负责保存 ADC 数据
    * CLA 处理外部信号?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢 Devin 的快速回复、

    在处理中断时、您能否检查我的理解:
    在这里、如果我现在假设在我设置其相应的 PIEIERx.4位时使用 XINT1作为其中一个输入信号、即"PieCtrlRegs.PIEIER1.bit.INTx4=1 "。 它将允许对该中断进行编程。 但是如果我在时间关键型操作期间禁用此位,那么它将不允许在发生中断时对其进行探测,而只需锁存其相应的 PIEIFRx.4位。 但是,在重新启用 PIEIERx.4之后,它是否允许预先锁存的 PIEIFRx.4位进行探测门控? (这是我需要的东西。 因为它不会与 ADCINT 混乱)

    低功耗模式(待机)又如何? 我是否能够使用全部3个 XINT 中断来启动器件并识别其中断?
    如果我使用开关情况来更改程序的控制流、这是否是好的做法? (使用变量在每个外部中断处更改其值)

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

    是的、您应该能够禁用中断、然后如果在此期间发生中断、则在重新启用中断时将对其进行处理。

    阅读 TRM (www.ti.com/.../spruhx5e.pdf)中的"外设中断"一节、其中包含许多有用的信息、包括您应该遵循什么顺序来安全地动态启用/禁用中断。

    我不确定该问题的唤醒+中断部分;我将标记其他人来查看。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Mandal、

    如果我理解正确、您将尝试使用相同的 GPIO 唤醒器件、这些 GPIO 将用作确定代码执行流程的控制信号。 是这样吗?

    如果是这样、可以使用任何 GPIO0-63在 CPU 被驱动为低电平有效时唤醒 CPU。 唤醒后、CPU 接收 WAKEINT 中断(如果已配置)。 CPU 唤醒后、可以为正常 XINT 配置相同的 GPIO、以确定执行流程。

    有关更多详细信息、请参阅《技术参考手册》。

    此致、
    Nirav