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.
工具与软件:
尊敬的专家:
我有关于 使用闪存模拟 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。
但我在 参考指南中看到
您好;
我有两个问题:
1)
如您所说、3. 该器件的闪存 API 中不需要 EALLOW 和 EDIS。 尝试使用已移除它们的最新版本闪存 API (2.00.10)。 您可以下载最新版本的 C2000Ware 以获取该版本的闪存 API。
但我在 参考指南中看到
您好;
我有三个问题:
1)
如您所说、3. 该器件的闪存 API 中不需要 EALLOW 和 EDIS。 尝试使用已移除它们的最新版本闪存 API (2.00.10)。 您可以下载最新版本的 C2000Ware 以获取该版本的闪存 API。
但我在 参考指南中看到
您好!
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。