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.

[参考译文] F28M35H52C:当我执行程序时、C28x 闪存块的闪存擦除和程序 API 不起作用。

Guru**** 2526980 points
Other Parts Discussed in Thread: CONTROLSUITE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/721114/f28m35h52c-flash-erase-and-program-apis-for-c28x-flash-block-does-not-work-when-i-execute-the-program

器件型号:F28M35H52C
Thread 中讨论的其他器件:controlSUITE

您好!

我使用的是 Code Composer Studio 版本:6.0.0.00190、编译器版本为 TI v6.2.5。 所有库和包含文件都已添加到项目中

我一直在尝试用一些数据擦除和编程 C28x 闪存块中的扇区 E (比如4 16位值到4个位置)。

  • 闪存泵被增益
  • 闪存 API 已初始化
  • 闪存组被设定为激活
  • 闪存被擦除(扇区 E)、FSM 就绪被检查并且 FMC 数据高速缓存被清空
  • 闪存被编程(扇区 E)、 FSM 就绪被检查、读取 FSM 状态和 FMC 数据高速缓存被清空。
  • 擦除和编程期间、所有 CPU 中断被禁用。
  • EALLOW 和 EDIS 也被照顾。

这个与闪存相关的代码被写入一个函数并从 main()中调用。 所有系统初始化、闪存初始化、PLL 等都已正确完成。 所有闪存用户函数和库都已从 RAM 中运行。

我的问题是、如果运行代码、闪存 API 不会向扇区 E 写入任何值、并且任何闪存 API 函数都不会返回错误。 但是、如果我再次调用该函数(在 main 中、同一函数先后调用两次)、那么我会看到写入扇区 E 的值、这是第二次执行该函数。  

我无法找到它为什么第一次不使用该数据对闪存进行编程?

我们非常感谢您在这方面提供的任何快速帮助。

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

    阿德南

    感谢您为此调试提供的详细信息。

    1) 1) 未对数据进行编程时,Fapi_getFsmStatus()返回的值是多少?

    2) 2)对函数的第一次和第二次调用之间是否有任何差异? 比如地址或数据、或者?

    3) 3) 程序命令是否返回第一个函数调用的 Fapi_statusSuccessess?

    4) 4) 您要用于 C28x 的频率/等待状态配置是什么?

    请尽可能共享代码(删除任何敏感信息或代码)。

    谢谢、此致、

    Vamsi

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

    我将我的项目代码与 C:\ti\controlSUITE\device_support\f28m35x\V210\F28M35x_examples_Dual\flash_prog\c28中的示例代码进行了比较

    并能够解决问题。 在擦除和编程同一函数调用内的闪存位置之前、我正在抓取闪存泵。 在调用擦除和编程函数之前、将闪存泵增益代码放入主代码、使其在首次尝试时正常工作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    阿德南

    很高兴我们的示例帮助您解决了问题。

    我要求提供示例代码以查看是否存在此类问题。

    谢谢、此致、

    Vamsi