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:将瞬态捕捉模块(TCM)与 SysConfig 正确配合使用

Guru**** 2455360 points
Other Parts Discussed in Thread: SYSCONFIG, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1457619/tms320f280049c-correct-usage-of-transient-capture-module-tcm-in-conjunction-with-sysconfig

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

工具与软件:

我将 C28x MCU 与 SysConfig 配合使用(下面的屏幕截图中显示了软件发布信息)。

在 main()中、我通常会调用 C2000Ware_libraries_init ()。

在 SysConfig 中、我添加了一个名为"transentCaptureModule1"的 TCM 资源、如下所示、以及一个具有适当名称的缓冲区。

我还添加了

DCL_runTCM (&transientCaptureModule1、dq0AbcInputsComplement.id.newestOutputPU);

中断处理程序、它正在处理我要捕获的值。

i ARM 瞬变 CaptureModule1并且它进入 TCM_ARIMED 模式。 创建条件以触发  transientCaptureModule1后 、模式更改为 TCM_COMPLETE、表示它已捕获数据流。 我遇到的唯一问题是、任何地方似乎都没有任何捕获的数据。

我没有看到任何代码(我的代码或来自 SysConfig 的代码)将由名为 transentCaptureModule1_arr  的 SysConfig 分配的缓冲区与 transentCaptureModule1相关联。

SysConfig 为  c2000ware_libraries.c 中的 transentCaptureModule1_arr  的分配提供了适当的代码、并在 c2000ware_libraries.h 中提供了外部引用、但我从未看到缓冲区与 TCM 结构关联的位置。  

SysConfig 会为 TCM 模块生成初始化代码、但不会 引用 transentCaptureModule1_arr、也不会引用我可以看到的任何其他数组存储。  添加 IIN、在编译和链接时没有错误、CCS 表达式窗格会在我尝试查看缓冲区时指出缓冲区不存在、但链接映射文件中没有提及缓冲区、因此确认缺少缓冲区。  我猜缓冲区是在链路中被丢弃的、因为它从未被使用过。

我缺少什么? 我找不到 TI 提供的任何展示如何使用该模块的示例程序。 DCL 用户指南也没有显示任何有关如何使用此模块的示例。  我猜是 SysConfig 不会为此模块生成完整的初始化集、尽管它确实提供了一个 init 函数并进行调用。

SysConfig 生成的代码位于 C2000Ware_libraries.c 中、如下所示:

//
// DCL TCM
//
//
// transentCaptureModule1变量
//
TCM 瞬态 CaptureModule1 = tcm_defaults;
FDLOG 瞬态 CaptureModule1_fdlog = FDLOG_DEFAULTS;
float32_t 瞬态 CaptureModule1_arr[1000];
void transentCaptureModule1_init (){
//
// transentCaptureModule1设置
//
DCL_initTCM (
瞬态捕获模块1 (&S)、
TransentCaptureModule1_fdlog.fptr、
1000、
100、
0.88、
1.01
);
DCL_armTCM (&transientCaptureModule1);
}
void tcm_init (){
暂存 CaptureModule1_init();
}

当我在捕获完成后查看 CCS 中的 TCM 结构时、指针仍然初始化为全零。  我缺少什么?

以下是触发捕获后的表达式窗格:

如果您有一个很好的示例程序、请告知我、因为我还没有找到它。  DCL 参考手册非常详细地介绍了该模块的工作原理、但并未提供有关如何使用该模块的示例。  它似乎也不知道 SysConfig 分配一个的能力。

谢谢!

Don

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

    有人回家吗?

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

    你好,唐,我道歉晚回复. 刚刚从休息回来。

    是的、您是正确的、因为 TCM 中发现 FDLOG 从未关联到缓冲区(transentCaptureModule1_arr)。 我将申请在下一个 SysConfig 版本中修复此问题。 我们的示例也很幸运、而我们有一个 TCM 示例 C2000Ware\libraries\control\DCL\c28\examples。 这是一个未使用 SysConfig 来演示功能的示例。  

    因此、在运行 TCM 之前、您是否可以在主例程中添加以下行?

    DCL_initLog(&transientCaputreModule1_fdlog, transientCaputreModule1_arr, 1000);

    请注意、SysConfig 中的默认链接器未为.bss 段分配足够的存储器以适应  transentCaptureModule1_arr。 因此、请选择更多的 RAM 部分、如 RAMLS5、6、7。

      

    如果这样可以解决问题以及您有任何其他问题、请告诉我。

    此致!

    Sen Wang