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.

[参考译文] TMS320F28P650DK:现有工程(包括 SysConfig)已调用 FLASH_API 函数、以对 F28P65 的内部闪存区域执行写入、读取和校准操作。

Guru**** 2411290 points
Other Parts Discussed in Thread: SYSCONFIG, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1540941/tms320f28p650dk-existing-projects-including-sysconfig-have-called-the-flash_api-function-to-perform-write-read-and-calibration-operations-on-the-internal-flash-area-of-the-f28p65

器件型号:TMS320F28P650DK
Thread 中讨论的其他器件:SysConfigC2000WARE

工具/软件:

SysConfig 配置

您好、专家。 我基于此过程对 flashapi_ex2_programming 进行了修改。

FLASHZ-API 函数的特定操作

memcpy (&RamfuncsLoadStart、&RamfuncsLoadEnd、RamfuncsRunStart);//将初始化Flash代码复制到RAM
Volatile Fapi_Flash 状态类型 oFlashStatus;
Fapi_Status 类型返回检查;
Fapi_Status 类型 oReturnChecka;
Fapi_Flash 状态字类型 oFlashStatusWord;
FLAG_WRITE =1;
uint32_t u32CurrentAddress = 0;
if (FLAG_WRITE = 1)


FLAG_WRITE = 0;
缓冲器[0]= 0x1122;
缓冲器[1]= 0x3344;
缓冲器[2]= 0x5566;
缓冲器[3]= 0x7788;
缓冲器[4]= 0x99AA;
Buffer[5]= 0xAABB;
缓冲器[6]= 0xBBCC;
缓冲器[7]= 0xDDEE;

EALLOW;
oReturnCheck = Fapi_initializeAPI (FlashTech_CPU0_BASE_ADDRESS、
DEVICE_SYSCLK_FREQ/1000000U);Flash初始化 μ s
if (oReturnCheck!= Fapi_Status_Success)

//
//检查闪存 API 文档是否存在可能的错误
//
Example_Error (oReturnCheck);
}
oReturnCheck = Fapi_setActiveFlashBank (Fapi_Flash 组 0);//检测flash的扇区是否为初始化状态
if (oReturnCheck!= Fapi_Status_Success)

//
//检查闪存 API 文档是否存在可能的错误
//
Example_Error (oReturnCheck);
}
EDIS;
EALLOW;
ClearFsmStatus();
Fapi_setupBankSectorEnable (FLASH_WRAPPER_PROGRAM_BASE+FLASH_O_CMDWEPROTA、0xFFFFFF00);
Fapi_setupBankSectorEnable (FLASH_WRAPPER_PROGRAM_BASE+FLASH_O_CMDWEPROTB、0x00000003);
oReturnCheck = Fapi_issueAsyncCommandWithAddress (Fapi_Erase 扇区、(uint32_t *) Bzero_Sector 1_START);
//等待 FSM 完成擦除扇区操作
while (Fapi_checkFsmForReady ()!= Fapi_Status_Fsm){}

if (oReturnCheck!= Fapi_Status_Success)

//检查闪存 API 文档是否存在可能的错误
Example_Error (oReturnCheck);
}

//读取 FMSTAT 寄存器内容以了解之后 FSM 的状态
// ERASE 命令查看是否存在任何与擦除操作相关的错误
oFlashStatus = Fapi_getFsmStatus();
IF(oFlashStatus !=3)

//检查闪存 API 文档以获取 FMSTAT 并相应地进行调试
// Fapi_getFsmStatus () 函数给出 FMSTAT 寄存器的内容。
//检查是否有任何 EV 位、ESUSP 位、CSTAT 位或
//设置 VOLTSTAT 位(更多详细信息,请参阅 API 文档)。

}
//验证扇区 0 是否已擦除
//
oReturnCheck = Fapi_doBlankCheck ((Bzero_Sector *) uint32_t 1_start、
扇区 2kb_u32length、
&oFlashStatusWord);
if (oReturnCheck!= Fapi_Status_Success)

//
//检查闪存 API 文档以获取错误信息
//
Example_Error (oReturnCheck);//FMSTAT_FAIL
}
EDIS;
EALLOW;
ClearFsmStatus();
Fapi_setupBankSectorEnable (FLASH_WRAPPER_PROGRAM_BASE+FLASH_O_CMDWEPROTA、0xFFFFFF00);
Fapi_setupBankSectorEnable (FLASH_WRAPPER_PROGRAM_BASE+FLASH_O_CMDWEPROTB、0x00000003);
oReturnCheck = Fapi_issueProgrammingCommand ((uint32_t *) Bzero_Sector 1_start、缓冲器、8、0、0、Fapi_Auto EccGeneration);// flash烧写(在给定的地址烧写内同)μ s
while (Fapi_checkFsmForReady ()= Fapi_Status_Fsm);
oFlashStatus = Fapi_getFsmStatus();
oReturnCheck = Fapi_doVerify ((uint32_t *) Bzero_Sector 1_start、4、Buffer、&oFlashStatusWord);//μ 这个长度单位是字节、所以除以2
}
EDIS;

您好、专家;

flashapi_ex2_programming — 该工程没有 SysConfig;

<<我想知道需要向当前工程(具有 SysConfig)添加什么配置才能运行 F28P65 的 FLASH_API 函数;在哪里可以找到缺少的头文件?

 flashapi_ex2_programming--CMD 文件

SysConfig

<<如何修改 SYSCONFIG_CMD、以使其与 flashapi_ex2_programming--CMD 文件兼容?

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

    您好、

    请在 Include 选项下添加“C:\ti\c2000\C2000Ware_5_01_00_00\libraries\flash_api\f28p65x\include\FlashAPI“。

    此致、

    Rajeshwary