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-F28027F:实验10e、了解 cpu_time.pwm_period 和 cpu_time.timer_delt_max

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

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/690293/launchxl-f28027f-lab-10e-understanding-cpu_time-pwm_period-and-cpu_time-timer_delta_max

器件型号:LAUNCHXL-F28027F
主题中讨论的其他器件:MOTORWARE

大家好、我将 f28027f launchpad 与 BOOSTXL-DRV8305搭配使用。

我正在修改实验10e、开始执行我正在处理的项目。  在文档中,它指出 mainISR()对时间至关重要,您可以通过查看 cpu_time 结构中的变量来监视它的执行时间。  motorware 文档还指出““cpu_time.timer_delta_max”的值小于“cpu_time.pwm_period”*2–100,以避免 ISR 时间溢出。”

我完成了代码工作、发现在 hal.c 文件中、cpu_time.pwm_period 似乎是由行设置的

 uint16_t  halfPeriod_cycles =(uint16_t)(systemFreq_MHz*pwmPeriod_usec)>> 1;

如果您使用的是低电感 PMSM、建议在前面的实验中增加 USER_PWM_FREQ_kHz 变量。  但是,如果将此变量增加得太多,则 CPU_TIME.PWM_PERIOD 的值将变得太低,时间关键型 mainISR()将违反上述条件以避免溢出。  这不会对 mainISR()增加任何内容,只需使用低电感电机并将 USER_PWM_FREQ_kHz 设置为30运行实验10e 即可。

代码正常工作,但我担心 mainISR()根据实验手册中的条件进行正确操作。  我的 cpu_time.timer_delta_max 当前为3140个计数。   

我该如何降低 cpu_time.timer_delta_max 以使其处于实验室手册条件内?  我担心这一点、因为如果我开始编辑代码并添加其他中断、我需要注意所有潜在的冲突中断/事件、而我担心的是、实验室手册中缺少解释。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你是对的。 此函数仅用于调试、以计算 ISR 的 CPU 使用时间。 它支持每个 ISR 节拍的 PWM 节拍数、默认为1、因此如果需要使用更高频率的 PWM、您可以按如下所示更改 CPU_TIME_setParams ()。 很抱歉造成混淆。

    cpu_time_setParams (cpu_timeHandle、(pwm_getPeriod (halHandle->pwmHandle[0])* USER_NUM_PWM_TICKS_PER_ISR_TICK);
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢、这是我怀疑的、但我想确认的。