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.

[参考译文] TMDXIDDK379D:FCL 移至 launchxl-f28379d、DRV8305采样 ADC 占用整个 PWM 周期

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1005756/tmdxiddk379d-fcl-moved-to-launchxl-f28379d-and-drv8305-sample-adc-takes-the-whole-pwm-cycle

器件型号:TMDXIDDK379D
主题中讨论的其他器件:LAUNCHXL-F28379DMOTORWAREDRV8305

我一直在修改 motorware 中的 TMDXIDDK379D FCL 项目、以便 使用 DRV8305驱动程序处理 launchxl-f28379d。  我在经历了相当大的困难后取得了很大的成功。  控制工作正常、但 FCL 代码会一直等待 FCL_CPU_CODE.c FCL_POSITION _CURRENT_Clarke_MACRO 中的 ADC 中断

while(!(AdcIntFlag->bit.ADCINT1));

我在 while ()之前和之后添加了一个 GPIO 高电平、这表明它在那里等待整个 PWM 周期(请参阅通道4上的 GPIO 和 PWM 的图像)。

 

这种情况的问题是 CPU 不断地进入 ISR、这样它就没有机会为 main 中的以下行提供服务:

(*Alpha_State_Ptr)();   // jump to an Alpha state (A0,B0,...)

并且 CPU 上不能运行其他代码。  这是正确的行为吗?  那么、移动 ISR 在 ADC 上触发是否有意义?  在本例中、我在 FCL 的核心设计中是否缺少在 PWM 上选择 ISR 而不是在 ADC 上选择 ISR 的内容?

此致

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

    我认为这与外设在初始化后的输出方式有关。 您能否确保在激活中断之前清除所有相关的 ISR 标志? 检查 初始化部分中 ADC 偏移滤波器代码发出的这些标志。 线索就在这里的某个位置。

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

    我已经解决了我的问题。  我在主循环中读取 ADC、以设置 ADC PPB 参考偏移并在读取后清除事件标志。  这导致我不得不等待下一个结果变为可用、该结果位于 PWM 周期的末尾。

    我的解决方法是在 main 中放置一个块、等待另一个结果变为可用、然后让代码的其余部分变得词典化。  这会导致我读取"旧数据"吗?  我假设在10kHz 的方案中它真的不是那么旧?

    此帖子对此表示歉意。  为其他人加载我的项目 是否合理、以便在具有 DRV8305的 launchxl-f28379d 上使用 FCL 的 driverlib 版本?

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

    当然、为什么不呢。 很高兴你解决了这个问题。 发布后、您可以关闭该主题。

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

    e2e.ti.com/.../Stab_5F00_motor_5F00_control_5F00_driverlib.zip

    是否有人想使用我的 hack 和 slashed 代码。  可能还不是最好的清理、但它可能会帮助别人。

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

    好的、您可以单击 Resolved 来关闭线程。