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.

[参考译文] DRV8316REVM:BLDC 电机位置跟踪辅助和 UART 示例集成

Guru**** 2392905 points
Other Parts Discussed in Thread: LAUNCHXL-F280025C, TMS320F280025C

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

https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1462971/drv8316revm-assistance-with-bldc-motor-position-tracking-and-uart-example-integration

器件型号:DRV8316REVM
主题中讨论的其他器件:TMS320F280025C、LAUNCHXL-F280025C

工具与软件:

尊敬的 TI 团队:

我以大约0.15 RPM 的极低速度运行 BLDC 电机、需要以1ms 的分辨率监控其位置。 尝试实现此目的时、我最初是探索您的图形工具、但分辨率太低、因此我尝试另一种方法。

使用 通用电机控制实验 、借助 TMS320F280025C、DRV8316EVMR、我一直在努力集成您的 UART 示例。 但是、我在合并过程中遇到内存问题(请参阅随附图片以供参考)。

是否有其他方法可以分配存储器或管理资源来成功组合这些示例?

感谢您的支持和指导。

此致、

。  



在使用取消注释 add_device 方法(file.h)后

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

    嘿 Shahar、

    我已将该主题分配给一名团队成员。 请在下周回复。

    此致!
    Akshay

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

    Shahar、您好!

    这似乎不是由电机或电机驱动器引起的、我真的不熟悉这个问题。 我正在加入我们的 MCU 团队、请给他们几天时间来提供更新。

    此致、

    Yara

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

    Shahar

    乍一看、您用于此项目的 CMD 文件需要进行调整、因为它会处理内存分配。

    但是,我只认为在尝试合并2个大代码库时有必要这样做,而不仅仅是将一个基本示例折叠到一个大型项目中。 add_device()函数来自哪里? 默认情况下、UMCL 没有此功能、如果我没有弄错、UMCL 示例也不会访问 SCI/UART 示例。

    此致、
    Jason Osborn

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

    你好、Jason、感谢您的回应。

    我找到的是 UART 示例 sci_ex4_stdout_redirect TMS320F280025C 的临时add_device()固件、其中包含对函数的调用。 三个 print 语句中的每一个语句(一个到 SCIA、一个到 CCS、最后一个到 SCIA)都会导致内存错误、无论何时一起使用还是单独使用。 此外、我尝试构建一个具有20,000个值的基本列表、这也导致了内存故障。

    谢谢!

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

    有趣的是、我错过了该特定的示例。 其他示例(不依赖于 file.h 中的 stdout 流功能)是否正常工作、或者它们是否也会导致内存错误?

    此致、
    Jason Osborn

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

    是的、其他示例也会导致内存错误。

    为了解决这些问题、我转向了 Sitara AM263x。

    您能帮我解决这个问题吗?  

    帖子

    谢谢!

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

    Shahar

    我一定会继续协助调试 LAUNCHXL-F280025C。 关于内存错误、我想指出的是、这非常奇怪。 我过去自行运行这些示例用于测试目的、而不会出现问题。 您使用的 CCXML 和 CMD 文件正确吗? 如果是、LAUNCHXL-F280025C 上的板载开关的状态是怎样的?

    对于 Sitara AM263x 线程、我将检查该响应的状态。

    此致、
    Jason Osborn

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

    尊敬的 Jason:

    为了使问题更加明确、我在电机实验室中添加了非常基本的逻辑、以实现控制三种不同速度的三种模式、同时还提供了基本的 PID 速度控制逻辑。

    该实验在此设置下工作。 但是、当我尝试添加 UART 示例/大型阵列时、会遇到内存错误。

    CCXML:


    驱动器选择:


    添加阵列内存 错误:

    即使我尝试将 cleanuniversal_motorcontrol_lab_f28002x 工程与合并#include <stdio.h>、并添加简单的方法调用 Put、我仍然会遇到内存错误。

    谢谢

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

    我最终能够使用您最新博文中的信息复制此行为、感谢您的澄清、尤其是显示编译失败的构建日志。 我将发布2个帖子。 在第一个帖子(这一个)中、我将介绍此问题的解决方案。 在下一篇文章中、我将解释该问题以及如何决定该解决方案:

    解决方案:

    • 打开。 .../src_device/f28002x_flash_lib_is.cmd这是我在之前的文章中提到的项目的内存分配文件。
      • 第57、70、75、80和85行的文本均为RAMM1D""。 这是工程中.bss、hal_data、user_data、foc_data 和 sys_data 内存段的内存分配。
      • RAMM1D""替换为"" RAMLS567
    • 现在代码编译时应该不会出现内存错误。

    此致、
    Jason Osborn

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

    现在、解释该问题以及我如何决定解决方案。

    问题:

    由于与流处理过程(stdio 等)相关的信息未通过#pragma DATA_SECTION 和.cmd 文件分配进行显式分配、因此编译器根据.cmd 文件自动执行此过程。 cmd 文件的编写方式本质上是、编译器会尝试将所有内容都移动到名为"RAMM1D"的存储器部分中、该部分是这个项目分配给数据存储的 MRAM 部分。 通常,这不是很大的问题,但显然当你尝试和使用 stdio 报头的功能,它会导致问题。

    错误视图会显示这些信息、但构建日志中确切地指出哪个存储器部分发生故障的文本会显示需要在存储器分配中查找的具体信息。 要以图形方式查看此信息、请使用 CCS 中的"Memory Allocation"视图。 每当您构建项目以显示内存分配时、都会填充此视图。 (如果重新构建时视图似乎没有更新、请单击右上角的"pin"按钮并再次单击。 就我而言、这会强制进行更新。)

    以下是基于您描述的失败状态的内存分配失败情况、如下所示:

    同时、下面是在不进行任何函数调用的情况下(即在我们添加任何函数调用之前)成功分配内存的情况 与代码相关的函数):

    请注意这些差异:

    1. .bss (大小458)仅在调用函数时出现
    2. .sysmem (大小1024)仅在调用函数时出现
    3. .data 的大小从10增加到248

    总之,这增加了一个大小差异1720。 通过查看.data 的分配详细信息、您可以看到与我们在这里预期的那样、.data 之间存在与流式传输运行时支持相关的差异。

    由于 RAMM1D (MRAM 专用于数据的部分)最多只能容纳1400个器件、并且在添加功能之前已包含1076个器件、因此我们需要对其进行微调。 最简单的方法是重新分配。

    在我列出的.cmd 文件中、我们可以看到分配给 RAMM1D 的所有内容。 (只需按 CTRL+F 搜索 RAMM1D、要查找的格式应该从第二个结果开始清晰。)

    按照我的经验、很多操作都可以从 MRAM 中移出、然后再移入 LSRAM、而不会出现任何问题。 我之所以选择这些部分、是基于我对此器件和其他以不同方式进行分配的器件上类似工程的 CMD 文件的经验、以及此器件的默认 CMD 文件如何分配任务。

    新分配无问题地运行:

    我希望这对您有所帮助!

    此致、
    Jason Osborn