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.

[参考译文] TMS320F28377S:为闪存编程配置闪存

Guru**** 2457760 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/729436/tms320f28377s-config-flash-for-flash-programming

器件型号:TMS320F28377S
主题中讨论的其他器件:C2000WARE

H 正在尝试对闪存进行编程。 我的应用程序正在 Bank0上运行、我正在尝试对 Bank1进行编程。 没有成功。

我的测试代码:

                volatile uint16_t data[100];
                对于(i=0;i<100;i++)数据[i]=i;
                Flash_CfgBank1 ();
                FLASH_Programbank (bone_SectorAB_start、100、(uint16_t *) data);
                Flash_DoneBank1 ();
                uint16_t *数据传输=(uint16_t *) bon_SectorAB_start;
                对于(i=0;i<100;i++) VT100_printf ("%u "、dataptr[i]);

输出为65536。 因此不进行编程。

文档中不清楚如何以及由谁(I 或 lib)配置闪存进行编程。

//函数

 空 Flash_CfgBank1 (空)

   易失性 Fapi_StatusType oReturnCheck;
   EALLOW;
//   Flash_setWaitstates (FLASH1CTRL_base、0x0F);
//   Flash_disableCache (FLASH1CTRL_base);
//   Flash_disableECC (FLASH1CTRL_base);
 //  Flash_laimPumpSemaphore (FLASH1CTRL_base、flash_Bank1_wrapper);//取消命令此命令时分配会崩溃
   oReturnCheck = Fapi_initiatizeAPI ((((Fapi_FmcRegisterType *) F021_CPU0_W1_REGISTER_ADDRESS)、200);
   oReturnCheck = Fapi_setActiveFlashBank (Fapi_FlashBank1);

o 呼叫时返回检查成功。


void Flash_Programbank (uint32_t 地址、uint16_t 长度、uint16_t *数据)

   int i;
   Fapi_StatusType oReturnCheck;
   EALLOW;
   for (i=0;<length;i+=8))
    {
        oReturnCheck = fapi_issueProgrammingCommand ((uint32_t *) address+I、&data[i]、
                                                    8、0、0、
                                                    Fapi_AutoEccGeneration);
        while (fapi_checkFsmForReady ()=fapi_Status_FsmBusy);
        if (oReturnCheck!= Fapi_Status_Success) Flash_Error (oReturnCheck);
    }

o 器件编程时、ReturnCheck 成功。

空 Flash_DoneBank1 (空)

   EALLOW;
   FLASH1CTRL_BASE;
   FLASH_enableCache (FLASH1CTRL_base);
   FLASH_enableECC (FLASH1CTRL_base);



有人建议我做错了什么? 或者需要如何配置闪存以便我可以对其进行编程?

谢谢!

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

    您好!

    1) 1)您是否查看了 C2000Ware 中的闪存编程示例?  这对您来说是否正常?   

    2) 2)您是否查看了 F2837xS 闪存 API (V1.55)参考指南(http://www.ti.com/lit/pdf/spnu630)。  请查看第2.3.3节"闪存 API 使用的关键事实"、看看这是否有助于澄清您的问题。  本节提到、用户应用应该在使用闪存 API 函数之前配置等待状态并泵入信号量。 这能回答您的问题吗?  如果没有、请告知我们您有的具体问题。

    3) 3)另请参阅闪存 API wiki 是否能为您提供帮助: http://processors.wiki.ti.com/index.php/C2000_Flash_FAQ#Flash_API_wiki 

    谢谢、此致、
    Vamsi

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

    Vamsi、

    感谢您回答"您是否重新启动了计算机"。   

    1) 1) C200ware 示例是 TI 如何看待代码质量的好示例。 这证明了它的工作原理。 但这几乎不是一个起点。

    2) 2)闪存 API 文档。 是针对不同平台的 API 的一般说明。

    3) 3)否、但常见问题解答未解决。

    也许我应该重新表述我的问题:您能向我解释一下以下内容的含义吗:

    。 初始化闪存等待状态、回退功率模式、性能特性和 ECC。 使用泵信标获取闪存泵的所有权

    如何对 F28377S (使用 driverlib)执行此操作?   我在文档中没有找到它。

    谢谢!

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

    您好!

    我很高兴为您提供进一步的帮助。

    1)我询问示例是否成功运行的原因:如果示例在您的设置中能够正确编程,则您不会遇到任何电路板问题(例如闪存操作/复位期间的电源等)。  如果您能回答这个问题、我们就能以建设性的方式进行进一步调试。

    2)由于您询问用户应用程序是否必须执行闪存初始化、我想让您知道用户应用程序必须配置等待状态并在使用闪存 API 函数之前泵1个信标(针对目标组)、因此我向您介绍了该文档。  此外、我注意到您已注释出声明泵信标的函数-请取消注释。  您在使用该函数时是否有任何问题?

    3)好的。

    关于您提出的问题:

    a)闪存等待状态:由于 CPU 比闪存更快、我们需要引入等待状态、以便 CPU 等待直到从闪存提取代码/数据。

    b)回退功率模式:闪存组的电源状态可在一个名为 FBFALBACK 寄存器的寄存器中进行配置。  应将其配置为活动模式。

    C)性能特性:为了补偿等待状态引起的延迟、闪存包装程序(FMC)具有代码预取和数据高速缓存特性、可启用这些特性来提高线性代码执行/数据读取的性能。  请读取 TRM (2.12闪存和 OTP 存储器)。

    D) ECC:ECC 是错误校正代码。  当您将其与闪存内容一起编程时、它有助于纠正单个位错误并捕捉双位错误。 请阅读 TRM (2.12.10纠错码(ECC)保护)

    您可以使用以下函数(也用于闪存编程示例)来配置闪存等待状态、回退功率模式、性能特性和 ECC。

      InitFlash_BANK0 ();

      InitFlash_BANK1 ();  

    关于 driverlib 函数、您是否查看了 C:\ti\c2000\C2000Ware_1_00_05_00\device_support\f2837xs\docs 文件夹中提供的文档(F2837xS_DriverLib_Users_Guide.pdf)?  请阅读"19闪存模块"部分

    如果您有任何疑问、请告知我们。

    谢谢、此致、

    Vamsi

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

    Vamsi、

    感谢您的详细回答。 我将查看它。

    谢谢、

    EV