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.

[参考译文] TMS320F280023:运行主代码时、将参数值存储在同一闪存组的不同扇区中

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1376130/tms320f280023-storing-parameters-values-in-different-sector-of-same-flash-bank-while-running-the-main-code

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

工具与软件:

大家好、

我使用23个器件型号、并且我想在运行主应用程序代码时将一些参数值存储在另一个扇区的闪存中。 我将使用闪存 API 代码来执行此操作。 如果可以这样做,请建议我如何集成两个代码和我要注意什么预防措施.

谢谢。此致、

Devendra Kumar

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

    尊敬的 Devendra:

    无法从擦除/编程操作所针对的同一个闪存存储体(即使来自同一存储体的不同扇区)执行闪存 API。

    您必须按照 C2000Ware 的闪存 API 使用示例中所示、将闪存 API 复制到 RAM 中。

    谢谢。此致、
    Vamsi

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

    您好 Vamsi、

    感谢您的答复。

    我做了一个单独的项目说新的闪存 API 项目,可以轻松地首先擦除,然后在 bank0的扇区6写入一个新的值,我还选择了除扇区6在擦除设置 的闪存设置下 的项目属性的调试部分.

    我的主代码位于扇区1、2和3。 我已经添加了新的闪存 API 项目到我的主代码与所有的配置,包括选项 和库也。

    我在将闪存 API 函数复制到 RAM 后,在 while ()中调用它。

    在这种情况下,我需要注意的其他事情,如计时器或任何其他中断或其他任何事情。

    谢谢。此致、

    Devendra  

     

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

    尊敬的 Devendra:

    感谢您的更新。

    我会在下周初审查并与您联系。

    谢谢。此致、
    Vamsi

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

    您好 Vamsi ,

    我请您考虑我的 Querry。 请浏览以上文章。

    1)我想补充的是,我已经把新的项目代码集成到我的主应用程序代码中,我已经观察到它正在影响我的 PI 控制环路代码,即运行在 timer0下。 应采取哪些措施来解决此问题?

    2)当编程闪存扇区时,每个扇区有20k W/E 周期。 和中、我将使用扇区6的@0x86000和0x86001地址来更新两个参数。 是否可以只擦除一个特定的地址或者一组地址而不是擦除一个整个扇区?

    有什么有效的方法只存储特定行业中很少的参数(每天更新10-20次)。  

    谢谢。此致、

    Devendra

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

    尊敬的 Devendra:

    1) 1)您的 PI 控制环路是否从用作擦除/编程操作目标的闪存组中执行?  如果愿意、我建议您将控制循环代码移至 RAM (我猜是 timer0 ISR)。

    2)您需要擦除整个扇区。  您不能擦除一个特定的地址。   

    关于将参数存储到特定扇区的方法: 请参阅下面的 EEPROM 指南:

    有关 C2000 Gen3器件的 EEPROM 仿真驱动器的应用手册: https://www.ti.com/lit/pdf/sprade8 

    谢谢。此致、
    Vamsi

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

    尊敬的 Vamsi:

    很高兴听到你的声音。

    是的,我正在使用唯一的库存在于23零件号(闪存库0 ),而我的主代码驻留在相同的库,但不同的扇区不同的擦除/写入操作在另一扇区.

    那么。 您是否建议我先将控制循环代码、即 timer0 ISR、复制到 RAM、然后再执行?  

    接下来我将介绍 EEPROM 仿真。 非常感谢。

    谢谢。此致、

    Devendra  

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

    尊敬的 Devendra:

    很高兴提供帮助。

    关于控制循环: 是的、如果您需要控制循环不等待闪存执行擦除/编程操作、那么您最好将其复制到 RAM 中并从 RAM 执行。

    谢谢。此致、
    Vamsi

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

    尊敬的 Vamsi:

    我已经从 RAM 执行了 ISR、它一直工作正常。 我想感谢您帮助我取得了出色的成果。

    现在、继续在扇区6中存储一些参数。 这些参数(例如总能量,总小时数,总周期)将每天更改20次。 我已经学习了 EEPROM 仿真应用手册。 至少在使用闪存 API 以及 EEPROM 仿真应用手册中、我们只能擦除一个扇区。  我的主要关注点是、每个扇区不超过20k E/W 周期。

     在本例中、

    1)我使用的是闪存 API 还是 EEPROM 仿真,两个应用程序 API 中的擦除周期和写入周期分别有何区别?

    2) 2)使用闪存 API 或 EEPROM 仿真只写入一个16位数据字、哪个 API 会使用20k E/W 周期中的更多写入周期? 一次写入整个扇区是否使用相同的写入周期而不是在扇区中写入一个字?  

    请帮助,我理解这些基本的疑问.

    谢谢。此致、

    Devendra  

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

    尊敬的 Devendra:

    很高兴它有所帮助。   

    我看到您还有其他 EEPROM 问题。  我可以在下周早些时候查看它们-这是好吗?

    谢谢。此致、

    Vamsi

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

    Devendra

    简单来说:EEPROM 驱动程序在给定新数据时更新下一个可用地址(并在请求时提供最新数据)。  除非扇区已满、否则不会擦除扇区。  如果所选的 EEPROM 扇区已满、则 EEPROM 驱动程序将擦除该扇区以继续写入新数据。  因此、使用 EEPROM 驱动程序将节省 W/E 周期。

    请阅读 EEPROM 指南。

    谢谢。此致、

    Vamsi