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.

[参考译文] CCS/TMS320F28379D:将传入信号的数据存储到文件中

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/741473/ccs-tms320f28379d-storing-data-of-a-incoming-signal-into-a-file

器件型号:TMS320F28379D
Thread 中讨论的其他器件:C2000WAREcontrolSUITE

工具/软件:Code Composer Studio

你好

我想在 DSP 中存储有限数量的传入 SDFM 信号采样数据、然后将其导出到文件(例如 Excel 文件)中。 最简单的方法是什么?  该方法应足够快、能够以 fs=50kHz 的速率存储数据。  

此致

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

    您能详细说明一下您要做什么吗? 您是否正在尝试存储原始 SD 调制器位流? (或)您是否正在尝试将筛选出的数据存储到阵列中?

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

    我想存储已过滤的数据(实际电流数据)并在 PC 中使用它们。
    除 SDFM 之外、我还在尝试找到存储任何内部 DSP 数据的最简单方法、例如电机速度(由 QEP 生成)或电机估算转矩或磁通等
    我不需要存储太多数据。 只有有限的数字就足够了(100个数据、速率为50K 或100K 样本/秒)
    此致
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Messi、

    请查看以下 C2000Ware 路径中的示例:-

    \device_support\f2837xd\examples\cpu1

    sdfm_PWM_SYNC_CPU
    sdfm_files_sync_dma
    sdfm_files_sync_cla

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

    Manoj、

    我有相同的问题。  我应该使用哪种方法? 哪种方法是最简单的? 是否有任何文档可帮助我解决此问题? 或者、我应该阅读 TRM DMA 和 CLA 章节吗?

    请告诉我、DSP 的哪一项功能应用于将数据传输到我的 PC、以便我可以立即采用这种方式使用它?

    在下面的帖子中、我已经看到、为了存储数据、我们可以使用"watch windows"。 使用观察窗口以足够快的速率存储数据是怎么可能的、这是可能的? (例如,以每秒50K 样本的速率生成的10ms 的所有数据)

    https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/308446?how-to-store-data-into-computer-


    此致

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

    我并不完全了解您的系统要求/带宽。 所有3个建议示例使用 CPU (或) CLA (或) DMA 将滤波器结果存储在缓冲器中。 我们的大多数客户倾向于使用 CLA (或) DMA 选项。 他们通常更喜欢将 CPU 用于其他东西。 因此、您可以使用 CLA / DMA SDFM 示例。 运行此示例应有助于您快速入门。

    如果要导出存储在数组中的筛选数据、只需将原始数据保存到.dat 文件中、然后将其导出到 Excel 工作表(如果需要)即可。

    此致、
    曼诺伊
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    C2000数字控制库(DCL)中有一组数据记录例程、您可以在 C2000Ware 中免费下载这些例程。 一种简单的方法是使用这些函数将感兴趣的变量记录到一个或多个数据缓冲区中、然后手动将它们导出到 Excel 或其他文件中。 DCL 包含周期有效缓冲区写入函数、通常会将这些函数放置在 ISR 中。 该技术在库示例中得到了广泛使用(请参阅 DF22示例)、并提供了源代码来说明如何实现该技术。 一旦有了完整的缓冲区、您可以在 CCS 存储器窗口中将其打开、然后在存储器窗口中右键单击并选择 Save Memory..."。 您可以将数据保存在.dat 文件中、例如可以在 Excel 或 Matlab 中打开该文件。 您还可以在 CCS 存储器浏览器中选择所需的数据、然后直接复制粘贴到 Excel 中。 还有其他方法、但我提供这种方法作为一种简单的方法、似乎可以满足这里的要求。

    此致、

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

    你好 Richard   

    感谢你的答复。

    我将按照您的建议使用 DCL。 我认为您的意思是我应该使用"FDLOG"和"MLOG"。  

    1-这两个函数(宏代码)是否使用了 DMA? 还是 DMA 是存储和访问数据的不同方式?  

    2- 如何获得用于28377d 的".cmd"文件(例如 F28069_DCL.cmd)和".asm"文件以修改它们以记录数据?  

    3 -在我的项目中使用"FDLOG"需要哪些".asm"文件、我应该将这些文件复制到我的项目中?

    此致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Manoj
    感谢您的建议。
    我将在这个问题上做更多的工作。
    此致
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我建议重点介绍 DCL 中的 FDLOG 组件。  这些函数在内联 C 或汇编语言中实现(而不是宏)、并且它们都不会使用 DMA。  您可以设置一个 DMA 通道来将数据移动到已分配的 RAM 块中。  这是另一种方法。

    我没有为  F2837x 系列编写任何 FDLOG 示例、但修改链接器命令文件将会很简单。  参阅我之前提到的 DF22代码示例、您可以使用与 F28069链接器文件第56-59行类似的方法来分配尽可能多的 RAM 块。

    此致、

    Richard

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

    感谢 Richard 的建议

    我将重点介绍 FDLOG。 但是、由于我尚未使用 C2000ware 以及".cmd"文件、我有点困惑。
    我的项目是使用 controlSUITE 文件创建的。 此外、我的项目中目前没有任何".cmd"文件。

    -要使用"FDLOG"、除了"DCL_fdlog.h"之外、我还应该将哪些文件包含在我的项目中?

    -是否可以在我的项目中包含并使用"F28069_DCL.cmd"而不对28377d 进行修改? 或者,我是否可以在不修改的情况下使用这些路径的“,cmd”文件? "C:\ti\controlSUITE\device_support\F2837xD\V210\F2837xD_common\cm"。 如果是、哪些文件?

    -".asm"文件怎么样? 我也应该包含它们吗?

    此致

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

    您可以使用 controlSUITE 或 C2000Ware。 需要记住的主要内容是 controlSUITE 不再进行更新、因此您将始终在 C2000Ware 中找到最新的材料。 对于 DCL、最新版本为 v3.1 (您使用的是 v1.0)。

    您的项目中将需要一个链接器命令文件、并且您需要了解如何使用它们的基础知识。 在 controlSUITE 中、您将找到可从开始使用的文件"2837xD_RAM_lnk_CPU1.cmd"、然后进行上述更改。

    要使用 FDLOG、您只需要头文件"DCL_fdlog.h"。 您不需要添加任何汇编文件。

    此致、

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

    很抱歉我的业余问题!
    但这两个文件之间的差异很大:"2837xD_RAM_lnk_CPU1.cmd"和"F28069_DCL.cmd"。
    我应该在"2837xD_RAM_lnk_CPU1.cmd"中进行哪些修改、以便使用"FDLOG "存储一些数据。 是否有任何方法可以帮助我解决此问题(内存)。
    我是否只需要将"F28069_DCL.cmd"的以下部分添加到"2837xD_RAM_lnk_CPU1.cmd"?

    /*数据缓冲区*/
    PDataLogSection:>RAML5,page = 1align(2)
    QDataLogSection:>RAML6,page = 1align(2)
    DataLogSection:>RAML7,page = 1align(2)
    DataLogSection:>RAML8,page = 1align(2)


    还是需要进行其他修改? 例如以下部分:

    /*数字控制器库函数*/
    dclfuncs:>RAML4L,page = 0
    dcl32funcs:>RAML4L,page = 0

    ramfuncs:>RAML4L,page = 0
    load_start (_RamfuncsLoadStart)、
    load_end (_RamfuncsLoadEnd)、
    run_start (_RamfuncsRunStart)、
    run_size (_RamfuncsRUNSIZE)


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

    我不认为复制这些行是必要的、也不是一个好方法。  您可能需要阅读《汇编语言工具指南》第8章中链接器命令文件的基础知识:

    但是、随附的是从草案 DCL v4.0用户指南中提取的内容、该指南将引导您逐步了解如何将数据记录功能添加到代码中。  我建议您只需按照以下步骤操作。  如果有任何不清楚的内容、请随时回帖。

    此致、

    Richard

    e2e.ti.com/.../DCL-v4.0-User_2700_s-Guide-_2800_129_2D00_130_2900_.pdf

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

    非常感谢 Richard

    我已经从"spru513"的 ch8开始了解".cmd"文件。
    再次感谢您提供的"DCL 用户指南"、我也将仔细阅读它。

    您能告诉我如何知道 "2837xD_RAM_lnk_CPU1.cmd"的存储器地址、我可以使用这些地址来写入数据吗? 我的意思是、我是否可以通过添加以下表达式来修改上述文件、而无需考虑:

    mySectionName:> RAMGS0,PAGE = 1 ALIG(2)

    谢谢。 我对 TI 支持团队非常满意。

    此致。

    萨那

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

    你好 Richard

    我已经阅读  了"DCL V4.9用户指南"以及与存储器和各节相关的 spru513的重要部分。

    我遵循了"DCL V4.9用户指南"的说明。

    我将一个简单项目导入到 CCS 中:

    C:\ti\c2000Ware_DigitalPower_SDK_1_01_00_00\c2000ware\device_support\f2837xd\examples\cpu1\blinki\cpu01

    然后、我已从以下路径向我的项目添加了"2837xD_RAM_lnk_CPU1.cmd"文件:

    C:\ti\c2000Ware_DigitalPower_SDK_1_01_00_00\c2000ware\device_support\f2837xd\con\cmd

    我打算在此文件中添加以下代码:

    "

    存储器

    …μ A
    RAML5:origin = 0x00C000、length = 0x002000
    …μ A

    部分

    …μ A
    mySectionName:> RAML5,page = 1 align (2)
    …μ A
    }"

    但是在此之前、当我构建项目时、在链接期间发生了一些错误。 (我已附上 显示错误的 CCS 屏幕截图)

    值得注意的是、我没有更改 "2837xD_RAM_lnk_CPU1.cmd"文件、只是将其添加到 blinky 工程中! (这是测试 FDLOG 之前的一步!)

     还随附了我的项目的一些属性屏幕截图。

    我不知道为什么会出现此错误!

    请帮帮我。

    我还附加了修改后的闪烁码 I、我添加了与 FDLOG 相关的指令。

    此致

    e2e.ti.com/.../test.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您添加了两个链接器命令文件、因此存储器块定义了两次。 在“属性”->“常规”屏幕中,选择 "Linker command file:"的选项。 在示例中、它已在文件搜索路径屏幕中指定、因此您无需在此处使用它。 然后重新构建、错误应消失。
    此致、
    Richard
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Richard

    我知道我应该删除"Linker command file:"字段。

    但是每次我删除它(选择无),然后单击“确定”,下次打开属性时,它会再次出现!!!

    您可以在附加的图片中看到它。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉、我以前没有看到过此问题、无法重现。 请耐心等待我、我会找一位能够提供帮助的人。 谢谢。

    此致、

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

    谢谢 Richard
    我已经解决了这个问题、知道我正在处理 FDLOG
    问题是、我已将"工作区"添加到链接器搜索路径中。 在工作区的某个位置(我不知道在哪里!) 存在"2837xD_RAM_lnk_CPU1.cmd"文件。 正如您说过的、正在执行两个链接器命令文件。
    知道您能告诉我哪些存储器地址允许我使用 FDLOG 写入数据吗? 它是否不同?
    此致

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

    与指令的第4步一样、只需选择一个不用于其他任何内容的存储器范围。  缓冲器需要进入数据空间(页1) RAM。  在文件的 SECTIONS 部分中查看分配给每个存储器块的内容、并选择足够大的任何可用块以获取缓冲区。  在您提到的示例.cmd 文件中、RAMGS6似乎未被使用、因此您可以从该文件开始。  汇编语言工具指南 I reference 提供了有关如何编写.cmd 文件的一般示例。

    此致、

    Richard

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Richard
    感谢你的帮助
    此致
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    不用客气。 很高兴它帮助了我们。

    此致、

    Richard
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好 Richard
    您对存储数据的想法非常有效。
    谢谢你
    与 DSP 的内部 RAM 相比、是否可以以类似的方式将数据写入具有更多存储器的外部 SD-RAM?
    如果是、我是否应该使用相同的".cmd"文件? 是否有任何用于此目的的示例?
    此致
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我认为是这样。 原则上、记录器应以与外部存储器相同的方式工作、但我个人对 SD-RAM 没有任何经验。 因为这是一个不同的问题、您是否想为它打开一个新的帖子? 这样、我们就可以将其分配给在这一领域有知识的人。 谢谢。

    此致、

    Richard
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Richard 也是
    最后一个问题:

    我可以使用"2837xD_FLASH_lnk_cpu1.cmd"并通过将闪存存储器块移动到数据页面并使用它们通过 FDLOG 进行数据存储来对其进行修改吗? 我用它在 RAM 块上记录数据的方式是什么?

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

    很抱歉我迟到了。  不可以、很遗憾、您无法在闪存上使用这些数据日志函数。  闪存的工作方式与 RAM 不同。  您需要将数据记录到 RAM 中。  

    此致、

    Richard

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

    谢谢 Richard
    令人失望! 我想最后我必须使用示波器和 DAC 将数据传输到 PC! 因为 SD 卡速度不够快、内部存储器太小。
    顺便说一下,感谢您的帮助。
    此致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    不用客气。 很抱歉、没有更好的消息。

    此致、

    Richard