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.

[参考译文] CCS/TMS320F28075:闪存可以#39;t 被写入

Guru**** 2478765 points
Other Parts Discussed in Thread: C2000WARE, TMS320F28075, TMS320F28377D, TMS320F28377S

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/922616/ccs-tms320f28075-flash-can-t-be-written

器件型号:TMS320F28075
主题中讨论的其他器件:C2000WARETMS320F28377DTMS320F28377S

工具/软件:Code Composer Studio

您好、专家、

我使用 下面的 TI 示例项目通过 SCI bootrom 开发闪存编程。

C:\ti\c2000Ware_3_02_00_00\device_support\f2807x\examples\CPU1\F2807x_sci_flash_kernel\cpu01

但是 、闪存似乎无法写入。 读回数据为0xFFFF。  所有 oReturnCheck 返回正常。

oReturnCheck = Fapi_issueODE19 CommandWithAddress (Fapi_EraseSector、 (uint32 *)(sectAddress[i]));

oReturnCheck = fapi_doBlankCheck ((uint32 *)(sectAddress[i])、sectSize[i]、 &oFlashStatusWord);

   Buffer[0]= 0x1234;
   缓冲区[1]= 0x5678;
   Buffer[2]= 0x90ab;
   Buffer[3]= 0xcdef;
   缓冲区[4]= 0x1122;
   缓冲区[5]= 0x3344;
   缓冲区[6]= 0x5566;
   Buffer[7]= 0x7788;


u32Index = 0x80000;



                       oReturnCheck = fapi_issueProgrammingCommand ((UINT32 *) u32Index、Buffer、sizeof (Buffer)、0、0、0、 Fapi_AutoEccGeneration);

  
                           while (fapi_checkFsmForReady ()=fapi_Status_FsmBusy);

                                   if (oReturnCheck!= Fapi_Status_Success)
                                   {
                                      while (!SciaRegs.SCICTL2.bit.TXEMPTY){}
                                      SciaRegs.SCITXBUF.bit.TXDT = 0x62;
                                   }
                                   其他
                                   {
                                       while (!SciaRegs.SCICTL2.bit.TXEMPTY){}
                                       SciaRegs.SCITXBUF.bit.TXDT = 0x75;
                                   }

我使用其他器件项目来对闪存进行编程, 例如 TMS320F28377S 、TMS320F28377D, 一切都好,没问题 。  只有 TMS320F28075 无法写入。  

我使用   TMS320F2837xD F021 API 找到了 TMS320F2807x 项目。  我将 运行错误的 API 函数加倍

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

    您好、Lei、

    F2837xD 闪存 API 可用于 F28075。

    您使用的工作频率和等待状态配置是多少?

    程序操作后的 FMSTAT 值是多少?

    谢谢、此致、

    Vamsi

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

    您好、Vamsi、

    1 μ A 我)120MHz CLK。  

    根据  InitSysPll (XTAL_OSC、IMULT_12、FMMULT_0、PLLCLK_by_2);  函数。  我发送了20MHz 外部时钟。

    2)μ A

       #if CPU_FRQ_120MHz
       Flash0CtrlRegs.FRDCNTL.bit.RWAIT = 0x2;
       #endif

    3)μ A

    默认 项目 不会反复写入 FLSEM 设置, 我 在 InitFlash()之前添加了下面的代码, 但 仍无法写入。

      //
       //为 Zone1抓取闪存信标以启用对闪存寄存器的访问。
       //
       EALLOW;
       DcsmCommonRegs.FLSEM.ALL = 0xA501;
       EDIS;

    4)μ A

    Fapi_initializeAPI 中的默认频率参数为150、 我修改了120、 但无法解算

    oReturnCheck = Fapi_initializeAPI (F021_CPU0_BASE_ADDRESS、150);

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

    我找到了原因。    " EALLOW;  和 EDIS;"  导致 API 函数 不正常。  谢谢你。