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.

[参考译文] TMS320F2800137:EEPROM

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1391349/tms320f2800137-eeprom

器件型号:TMS320F2800137
Thread 中讨论的其他器件:C2000WARE

工具与软件:

尊敬的专家:

我有关于 使用闪存模拟 EEPROM 的一些问题。

1) EEPROM_READ()函数提供读取数据并将其存储到临时缓冲区的功能。 找到当前的组和页、并且当前页的内容存储在 Read_Buffer 中:

如何读取最后一些数据?例如,我有三个参数,在第1页写入参数1 ,在第2页写入参数2 ,我可以读取参数2 ,但如何读取参数 1 ?

2)在 EEPROM 中有三个参数,在第1页写入参数1  ,在第2 页写入参数2 ,在第3页写入      参数3 ,参数2需要更新,所以在第4页写入   参数2 ?当更新多次时,使用最后一页,我应该擦除整个页面,所以所有参数都被擦除。

如何处理  参数1和  参数3?读取    参数1和参数3、重写?

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

    您好!

    1. eeprom_read()函数仅读取最近写入的数据。 如果您想读取特定页,可以修改 EEPROM_Write()函数以接受组/页号作为参数。  

    2.是的、如果您需要经常重写参数2、并希望保留参数1和3、则必须在 EEPROM 被擦除后重写。 参数2是否需要存储在 EEPROM 中?  

    此致、

    Skyler

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

    谢谢

    当某个参数需要经常更新时、是否有在 EEPROM 中处理该参数的好计划?

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

    您好!

    如果某个参数需要经常更新、或许最好不要将其保留在 EEPROM 中。

    此致、

    Skyler

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

    你(们)好

    但在应用程序中,发生了错误,当错误 恢复时,需要检查 电源打开的次数。 如何记录打开电源的次数

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

    另一个问题:

      EEPROM_Write()函数:

    它将被写入当前页。 该过程会一直持续到所选扇区的最后一页被写入数据为止

    为什么不能通过设置页面和银行来写它?

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

    您好:

    我有3个问题:

    1)在应用程序中,发生错误,当错误 恢复时,需要检查 电源打开的次数。 如何记录打开电源的次数

    2)

     EEPROM_Write()函数:

    它将被写入当前页。 该过程会一直持续到所选扇区的最后一页被写入数据为止

    为什么不能通过设置页面和银行来写它?

    3)在 FAPI_F280013x_EABI_v2.00.01.lib 中擦除/编程闪存时、闪存 API 根据需要在内部使用 EALLOW 和 EDIS 来允许/禁止写入受保护的寄存器。

    当 EDIS 时、它会影响其他中断的执行周期、例如电机 ISR、如何解决这个问题?

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

    您好!

    1.您是否在信息存储位置的背景下询问此问题? 这个问题有许多因素、在没有更多背景的情况下很难提供答案。

    2.如果要修改 EEPROM_Write()函数的工作方式、可以这样做。 您可以添加参数来对特定的组/页进行编程、但必须确保不会覆盖任何先前写入的页面、而不事先擦除它们(只能在不进行擦除的情况下将闪存从1变为0、并且还必须考虑 ECC)。  

    3.此器件的闪存 API 中不需要 EALLOW 和 EDIS。  尝试使用已移除它们的最新版本闪存 API (2.00.10)。 您可以下载最新版本的 C2000Ware 以获取该版本的闪存 API。

    此致、

    Skyler

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

    您好:

     在 UDS 应用中,有许多参数需要更新,可能是2个扇区,如何处理许多参数,需要写读?

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

    您好!

    如果您需要频繁覆盖仿真 EEPROM 中存储的参数、则必须实现允许在擦除之间保留某些数据的逻辑。 或者、您可以在仿真 EEPROM 被擦除时重新写入所有数据。 反复从仿真 EEPROM 读取不是问题。

    此致、

    Skyler

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

    你好

    如您所说、3. 该器件的闪存 API 中不需要 EALLOW 和 EDIS。  尝试使用已移除它们的最新版本闪存 API (2.00.10)。 您可以下载最新版本的 C2000Ware 以获取该版本的闪存 API。

    但我在 参考指南中看到

    TMS320F280013x/15x 闪存 API 版本2.00.10.00
    如下所示
    哪种说法是正确的?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好;

    我有两个问题:

    1)

    如您所说、3. 该器件的闪存 API 中不需要 EALLOW 和 EDIS。  尝试使用已移除它们的最新版本闪存 API (2.00.10)。 您可以下载最新版本的 C2000Ware 以获取该版本的闪存 API。

    但我在 参考指南中看到

    TMS320F280013x/15x 闪存 API 版本2.00.10.00
    如下所示
    哪种说法是正确的?
    2)在执行以下函数后、
    Fapi_issueBankEraseCommand (( uint32 *)u32CurrentAddress ); In Example_Erase 357ks();
    该代码有2ms 暂停、或其他 操作(我不确定)如下图所示
    黄色:ADC 中断周期指示(12kHz)
    绿色:Example_Erase 4.2000 ks()被排除。
    为什么 有2ms 暂停或其他 操作? 导致它的原因?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好;

    我有三个问题:

    1)

    如您所说、3. 该器件的闪存 API 中不需要 EALLOW 和 EDIS。  尝试使用已移除它们的最新版本闪存 API (2.00.10)。 您可以下载最新版本的 C2000Ware 以获取该版本的闪存 API。

    但我在 参考指南中看到

    TMS320F280013x/15x 闪存 API 版本2.00.10.00
    如下所示
    哪种说法是正确的?
    2)在执行以下函数后、
    Fapi_issueBankEraseCommand (( uint32 *)u32CurrentAddress ); In Example_Erase 357ks();
    该代码有2ms 暂停、或其他 操作(我不确定)如下图所示
    黄色:ADC 中断周期指示(12kHz)
    绿色:Example_Erase 4.2000 ks()被排除。
    为什么 有2ms 暂停或其他 操作? 导致它的原因?
    3)当擦除/编程操作正在进行时、应从闪存组进行任何读取/获取访问。
    您能在什么地方重置 MCU 或执行某些操作或其他操作、您能告诉我吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    1.经过进一步检查后,在 Flash API 中调用 EALLOW 和 EDIS 几次。 但是、它们不会影响您的电机 ISR。

    2/3. 出现此行为的原因可能是调用闪存 API 的函数是闪存。 调用闪存 API 的函数应该从 RAM 中运行、否则您将看到暂停。

    此致、

    Skyler

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

    2/3. 出现此行为的原因可能是调用闪存 API 的函数是闪存。 调用闪存 API 的函数应该从 RAM 中运行、否则您将看到暂停。

    所有闪存操作均从 RAM 运行、使用#pragma CODE_SECTION (ClearFSMStatus、".TI.ramfunc");

    为何暂停 MCU?

    当停止 MCU 时、恢复条件是什么?

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

    您好!

    您能否在相关的.map 文件中验证这些函数具有基于 RAM 的运行地址?

    此致、

    Skyler

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

    你好

    在 相关的.map 文件中、哪里可以找到这些函数具有基于 RAM 的运行地址? 您能给我一个示例?

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

    您好!

    感谢您提供屏幕截图、看起来闪存 API 函数和调用闪存 API 的函数都是从 RAM 运行的。 我们将对此进行更深入的探讨并与您联系。

    此致、

    Skyler

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

    你好。

    我希望找出原因或解决问题、因为我们需要在电机运行时编写 EEPROM

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

    您好!

    我们仍在研究这个问题。

    此致、

    Skyler

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

    你(们)好

    您是否已找到问题的原因?

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

    您好!

    屏幕截图中提供的响应不是问题。 ISR 是否从同一组运行?

    此致、

    Skyler

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

    你好

    2800137只有一个存储体。

    我希望找出原因或解决问题、因为我们需要在电机运行时编写 EEPROM

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

    您好!

    您可以在 RAM 中运行 ISR 吗?

    此致、

    Skyler

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

    你好

    我在 RAM 中运行 ISR、但不是 ram、中运行的所有子函数、如电机算法、 大量代码、都无法在 RAM 中运行。

    在此 MCU 上、其他客户也应该有类似的要求。 您为他们提供哪种解决方案?

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

    您好!

    如果电机算法在闪存中运行并且闪存 API 正在执行、您将看到此行为。 对于单存储体器件、无法同时在同一闪存存储体上编程和执行代码。 因此、您将看到该停止行为。 如果您知道此 ISR 将发生在电机控制算法的哪一部分、就可以在 RAM 中运行该 ISR、这样就可以解决问题。 否则、您可以减少闪存 API 写入的数据量、以尝试减少算法暂停的时间。

    此致、

    Skyler

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

    好的、谢谢

    只能使用外部 EEPROM。