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.

[参考译文] TMS320F28052F:有多少 RAM 可用于用户程序?

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/878009/tms320f28052f-how-much-ram-is-available-for-the-user-program

器件型号:TMS320F28052F
主题中讨论的其他器件:TMS320F28064

从器件说明中可以看到、TMS320F28052F 具有16kB RAM、但我们的工程师之一表示只有8kB RAM 可供使用(其余的 RAM 在从 ROM 转储 InstaSPIN-FOC 时由系统代码自动使用) 他做任何严肃的编码是不够的。 他的观点是 TMS320F28052F 太低端、不适合任何产品开发。 他建议使用另一个 MCU、如 TMS320F28064。 但这意味着我们需要重新设计硬件、这需要时间。

问题是:

1. 16kB RAM 中有多少 RAM 可供用户进行编码? TMS320F28052F 是否太低端、不适合在产品中使用? 我们的应用是 BLDC 电机的速度无传感器控制、感应电机的速度控制。 除电机控制器件之外、系统还应提供 CAN 通信、串行通信和/或以太网通信。

2.如果确实我们不能使用 TMS320F28052F、那么哪一个更适合用于我们这样的应用?

非常感谢您的帮助。

谢谢。

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

    工程师提供的更多详细信息:

    「香港

    TMS320F28052F 具有8kwords RAM (M0 - 1kwords、M1 - 1kwords、L1 - 1kwords、L2 - 1kwords、L3 - 4kwords)

    M0和 M1专用于堆和堆栈、堆花费大约1280个字、其余720个字用于堆栈。

    L3 (2816字)的一部分专用于振动补偿、高频注入等特殊功能的数据

    L1、L2和 L3的一部分(1280字)专用于时间敏感型功能。

    为了确信我们将有足够的 RAM 存储器空间用于代码、我认为我们至少需要使堆栈大小加倍。

    但问题是我们如何做到这一点。 如果我们将来需要的话、我真的不想削减任何东西。 但是、如果我们需要知道我们可以使用哪些最不必要的函数、

    顺便说一下、我们还没有用于 CAN 引导加载程序的任何代码、我不知道它需要多少内存。

    「香港

    谢谢。

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

    您可以查看 《TMS320F2805xF InstaSPIN-FOC 软件技术参考手册》、L0 (0x8000~0x88000) RAM 为 InstaSPIN 保留、您可以使用其他 RAM 作为应用变量或代码的存储器。

    http://www.ti.com/lit/pdf/spruhw0

    052F 和054F 都具有16kB RAM、这对于大多数应用而言应该足够、而不仅仅是低端应用。 大多数程序代码应在闪存中执行、由于 如您所述对时间敏感、因此只需在 RAM 中执行某些 ISR 代码。

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

    感谢您回答我的问题。 我们知道 L0 (2k 字)被保留用于 InstaSPIN、但"InstaSPIN-FOC 和 InstaSPIN-MOTION 用户指南"第328页的表8-4显示、对于 InstaSPIN-FOC 的 RAM 的完全执行、InstaSPIN-FOC 的总内存使用量为0x1870 RAM、大约为6k 字。 显然、L0不足以满足此要求。 我对表8-4的理解是否错误?

    根据我们的工程师、如果 InstaSPIN-FOC 不使用 L0以外的 RAM、由于4k 字专用于不同的功能(例如振动补偿、高频注入等)、因此完全4k 字留给用户用于其代码。 他还提到、每个变量将至少使用一个字、而不是一个字节、因此 RAM 对于用户的代码非常严格。

    你同意吗?

    谢谢。

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

    这意味着所有用户代码包括背景循环代码都在 RAM 中。  您只需要将时间关键型代码(例如 ISR 中的代码)从闪存复制到 RAM 中执行。 L0保留为 InstaSPIN 估算器使用的变量的数据存储器、不是 ROM 代码中 InstaSPIN 算法代码的程序存储器、即使用户代码在闪存中、也不需要将其复制到 RAM 中。

    除了 L0之外、您几乎可以将所有 RAM 用于您的程序和数据。

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

    感谢您的澄清。 我完全同意您的观点、认为 RAM 不足以支持用户的代码。 非常感谢您的帮助。