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/TMS320F28027F:从闪存运行的主 ISR

Guru**** 2539500 points
Other Parts Discussed in Thread: MOTORWARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/609816/ccs-tms320f28027f-mainisr-running-from-flash

器件型号:TMS320F28027F
主题中讨论的其他器件:MOTORWARE

工具/软件:Code Composer Studio

您好!

我想知道、我们能否从闪存运行 mainISR 而不将代码复制到 RAM 中?  对电机控制是否有任何热爱?  

大多数 motorware 项目示例将 mainISR 复制到 RAM 中、如下所示。 我们可以摆脱它吗? 有爱吗?

ifdef 闪存
#pragma CODE_SECTION (mainISR、"ramfuncs");
#endif

通常、RAM 比闪存快、但由于 RAM 存储器大小非常有限、我尝试重新调整代码大小并尽可能节省更多的存储器。  

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

    区别在于、RAM 中的代码执行速度比 闪存中的代码执行速度更快。 如果 ISR 频率非常高、则必须将 ISR 代码从闪存复制到 RAM、否则会 导致 ISR 时间溢出、例如 InstaSPIN-FOC 的时间超过10kHz。 如果 ISR 频率小于5kHz、则无需执行此操作。

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

    Yanming、  

    非常感谢您的回复。

    1) 1) user.h 中的当前 ISR 为15kHz,是  USER_ISR_FREQ_Hz 您所说的参数“大于10kHz”?  

    #define USER_ISR_FREQ_Hz      ((float_t) USER_PWM_FREQ_kHz * 1000.0 /(float_t) USER_NUM_PWM_TICKS_PER_ISR_TICK)

    #define USER_PWM_FREQ_kHz         (15.0)

    #define USER_NUM_PWM_TICKS_PER_ISR_TICK    (1)

    2) 2)除了 mainISR 之外、在最新的 Motorware 版本中、它实际上具有更多从闪存到 RAM 的函数复制。  

    它们是否都是由于("时间溢出")必须留在 RAM 中的原因而导致的?  

    ifdef 闪存
    #pragma CODE_SECTION (mainISR、"ramfuncs");
    #pragma CODE_SECTION (runSetTrigger、"ramfuncs");
    #pragma CODE_SECTION (runFieldWeakening、"ramfuncs");
    #pragma CODE_SECTION (runCurrentReconstruction、"ramfuncs");
    #pragma CODE_SECTION (angleDelayComp、"ramfuncs");
    #pragma CODE_SECTION (getAbsElecAngle、"ramfuncs");
    #pragma CODE_SECTION (getAbsMechAngle、"ramfuncs");
    #endif

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1.对。 所有 ISR 代码必须在 PWM 周期内执行、这也是 ISR 时间。
    2.对。 这些函数将从 mainISR 中调用并在 ISR 中执行。