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.

[参考译文] 回复:TMS320F280049C:常规 CLA 问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/784759/re-tms320f280049c-general-cla-questions

主题中讨论的其他器件:TMS320F280049C

谢谢 Lori、

这解决了我的问题、但我只提出了一些更相关的问题、即
--如果我运行 CLA 和主 CPU,那么我如何使工作同步?
-在以上示例中、每次调用 CLA_Task1时、主 CPU 执行 CLA_Task1 ISR、其中数据由 CPU_1收集。 是否有任何方法可以避免 ISR、以便主 CPU 可以在没有 CLA 中断的情况下工作。
----是否有更多方法将数据提供给主 CPU。 例如、我在 CLA 中创建一个数组、然后将其地址传递给 MAIN_CPU?
--当我使用 CLA 时,我内存不足。 我正在使用全部8个 LS RAM。 我可以通过添加其他存储器来进一步增加它吗?
--我想使用 DMA 存储数据。 使用 CLA 时、该平台是否有任何 DMA 示例?

此致、

Bilal

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

    注意:我将您的新问题分为一个新主题。  这有助于我们跟踪问题和解决方案。  将来、您可以选择"提出相关问题"或"提出新问题"-这将非常有用、并将帮助 TI 跟踪问题和解决方案。  遗憾的是、有时会错过已解决问题的后续问题。

    Bilal、

    我认为以下资源将对您有所帮助。  前两个示例位于 TMS320F280049C 的产品文件夹中

    • F280049C 的数据手册:其中包含有关器件上的存储器块、它们的位置以及如何访问它们的信息。  
    • F280049C 技术参考手册:其中更详细地介绍了该器件的 CLA 功能。
    • CLA 技术讲座 https://training.ti.com/control-law-accelerator-cla-hands-workshop 这是针对较旧器件的、但仍然是对 CLA 的很好的介绍。  F28004x 的一个非常有用的新功能是能够将任务8变为后台中断任务。

    问:如果我运行 CLA 和主 CPU、那么我如何使工作同步?

    答:CLA 任务在触发时运行。  触发可由主 CPU 或外设产生。  有关外设列表、请参阅特定器件的技术参考手册。

    在示例(cla_ex1_adc_fir)中、CLA 任务8由 CPU 触发、任务1的触发源是 ADC。  在代码中查找以下行:

    CLA_setTriggerSource (CLA_task_1、CLA_TRIGGER_ADCA1);
    CLA_setTriggerSource (CLA_task_8、CLA_trigger_software);
    CLA_enableTasks (CLA1_base、(CLA_TASKFLAG_1 | CLA_TASKFLAG_8));
    CLA_enableIACK (CLA1_base);
    CLA_forceTasks (CLA1_base、CLA_TASKFLAG_8); 

    Q:在上面的示例中、每次 CLA_Task1被调用时、主 CPU 执行一个 CLA_Task1 ISR、其中数据由 CPU_1收集。 是否有任何方法可以避免 ISR、以便主 CPU 可以在没有 CLA 中断的情况下工作。  

    答:是的、在 CPU 级别、您不会启用 CLA 任务结束中断。  即注释掉此行:

    INTERRUPT_ENABLE (INT_CLA1_1); 

    问: 还有什么方法可以将数据提供给主 CPU。 例如、我在 CLA 中创建一个数组、然后将其地址传递给 MAIN_CPU?

    答:可以使用任何通过存储器传递值的方案。  由您来定义。   

    问: 当我使用 CLA 时、内存不足。 我正在使用全部8个 LS RAM。 我可以通过添加其他存储器来进一步增加它吗?

    答:  请参阅特定器件数据手册中的存储器映射部分。  在这里、您将找到可为 C28x、CLA 或两者配置的存储器块。

    问:我想使用 DMA 存储数据。 使用 CLA 时、该平台是否有任何 DMA 示例?

    答:请参阅特定器件数据手册中的存储器映射。  在这里、您可以找到每个主器件可以访问的存储器块:C28x、CLA 和 DMA。   

    注:  

    技术参考手册(TRM)中存在错误。 它提到了 DMA 到 CLA 的消息 RAM。 F28004x 器件上不存在此功能。 我已提交一个 TT 以更正文档。 数据手册内存映射正确。

    此致

    Lori  

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

    最后一个问题。 技术参考手册(TRM)中存在错误。 它提到了 DMA 到 CLA 的消息 RAM。 F28004x 器件上不存在此功能。 我已提交一个 TT 以更正文档。 数据手册内存映射正确。

    我想说的是、我前面提到的技术讲座是针对较旧的器件。 这仍然是对 CLA 的很好的介绍。 F28004x 上的一个非常有用的新功能是能够将任务8变为可中断的后台任务。

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

    几天以来,我没有听到您的声音,因此我假设我的回答回答了您的问题。 如果情况并非如此,请单击“这无法解决我的问题”按钮,并使用更多信息回复此主题。 如果此主题锁定、请单击"提出相关问题"按钮、然后在新主题中描述您的问题的当前状态以及您可能需要帮助我们帮助解决您的问题的任何其他详细信息。

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

    一些答案非常有用、可以解决我的问题。 我已经能够同时同步和禁用 CLA 后 ISR。 但我在使用 CLA 存储器时仍然面临困难。 我的问题如下:

    我正在使用 CLA 存储器(RAMLSx)中声明的数组。 所有 RAMLSx 都在 CPU 和 CLA 之间共享。
    MemCfg_setLSRAMMasterSel (MEMCFG_Sect_LS7、MEMCFG_LSRAMMASTER_CPU_CLA1);

    因此、我假设我在 CLA 中声明的数组也可由 CPU 访问、如果我在 CLA 头文件中声明相同的数组。 我的整个算法都基于这种技术。 主 CPU 从 ADC 收集数据、并将其放入 CLA 存储器和 CLA 头文件中声明的数组中。 然后、CLA 从该数组中挑选样本并对其进行处理。 在调试模式下、禁用优化后、我将获得正确的结果。

    我还在以下主题中编写了一个有关 CLA 的问题。 您也可以在此处回答。

    e2e.ti.com/.../2907892

    谢谢

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

    谢谢 Bilal。 Sal 似乎正在回答另一个线程上的相关问题。 我将结束本主题、让讨论继续进行。 如果我误解了、只需在该主题上发帖、它就会重新打开。

    此致
    Lori

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

    在完全优化的情况下、我无法调试代码。 因此、我决定使用串行通信接口(SCI)并在计算机的串行监视器(Docklite)上接收数据。 我在算法底部集成了 SCI 代码、将最终结果发送到 PC 上的串行端口。 整个数据都是准确的。

    因此、我得出结论、调试模式不支持优化(完全)、这是所有调试器的故障。

    Sal 提到的另一件事、即使用易失性键盘。 我对各自的变量使用了易失性关键字。 但我发现、当我将这些变量声明为易失性时、执行时间会跳至10 - 20倍(2.5us 至40us)。 因此我删除了易失性声明。 您能进一步评论一下这种行为吗? 但同样、如果不将变量声明为易失性、我会在串行端口接收到准确的数据。

    此致、
    Bilal