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.

[参考译文] TMS320F280034:在 CLA 任务中 GPIO 切换似乎缓慢

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1297186/tms320f280034-gpio-toggling-seems-slow-in-a-cla-task

器件型号:TMS320F280034
主题中讨论的其他器件:C2000WARE

我们使用 CLA 来加快电力电子系统的控制律执行、并通过切换 GPIO 来了解 CLA 上的执行时间。 我们有一个系统使用 EPWM1来触发 ADC 测量、EOC 进行 ADC 测量、然后触发 CLA 任务1。 这一切都按预期运行。 最初、我刚刚切换了 CLA 任务中的一个 LED 以检查所花费的时间、这里是 CLA 任务代码:-

//-----------------------------------------------------------------------------
//
// Task 1 - PWM control loop
//
// Description: PWM control logic can be implemented here.
//
//-----------------------------------------------------------------------------
__attribute__((interrupt)) void Cla1Task1 ( void )
{
    //
    // Turn ON Loop1 Profiling GPIO
    //
    GPIO_writePin(16,1);
    loop1_task();

    //
    // Turn OFF Loop1 Profiling GPIO
    //
    GPIO_writePin(16,0);
}

此任务按预期每20us 触发一次、但 LED 的开启和关闭切换需要~2us。 这看起来很长一段时间、尤其是对于 CLA 而言、它应该是一个非常快速的外设。 CLA 直接控制 hte GPIO、我们得到的结果是:-

有没有任何想法、为什么在 CLA 任务中像这样打开和关闭 LED 会花费如此长的时间来执行?

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

    我还应该说、当我测量如上所示的 GPIO 引脚时序时、"loop1_task ();"已被注释掉、因此我们只看将 GPIO 引脚16设置为高电平然后将其设置为低电平的线路的时序。

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

    Iain、  

    对于因在美国休假期间不在办公室而造成的回复延迟、我深表歉意。

    Driverlib 函数对硬件进行抽象化、以方便使用、但这样做的代价是需要花费更多的周期而不是直接写入寄存器。   此外、driverlib 的"调试"版本将比"发布"版本花费更多的周期。  

    为了解决这个问题、可以直接写入寄存器。 C2000Ware 中有一个使用 HWREG 宏通过 CLA 代码执行此操作的示例:

    • C:\ti\c2000\C2000Ware_ \driverlib\f28003x\examples\cla\
    • CLA_Ex5_ADC_JUST_IN_TIME

    突出显示的行将向 GPIOA.SET 寄存器位相应的 GPIO2 (0x4 = b0100)写入 SET 寄存器

    此致

    洛里

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

    您好、Lori:

    感谢您为我进行深入了解。 我将在星期四回到实验室、所以我将尝试一下、并告诉您它如何影响速度。  

    此致、

    伊恩

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

    您好、Lori:

    我刚刚尝试了使用 HWREG 命令、这使情况好多了! 对于只通过 HWREG 将 GPIO 设置为高电平并立即再次设置为低电平的 CLA 任务、我们得到以下测量行为:-

    我们现在看到一个大约16ns 的高脉冲。 我们有一个120MHz 内部时钟、看起来大约需要两个时钟周期来设置为高电平、然后两个周期再次设置为低电平。

    非常感谢您对此提供的帮助、

    祝你一切顺利、Iain