TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS570LC4357: 内部flash操作擦写读,操作函数第二轮赋值,不能擦除第一轮读过的地址数据;debug仿真复位后才可以看到状态

Part Number:TMS570LC4357

void main(void)
{
_mpuDisable_();
_mpuInit_();
_mpuEnable_();
gioInit();
hetInit();
emif_ASYNC1Init();
emif_ASYNC2Init();
emif_ASYNC3Init();

SYS_S_InitRti();/*初始化实时中断*/
/*先清一次狗,下次清就要约1秒了*/
gioSetBit(gioPORTB, 7, 0);
SYS_Delay(100);
gioSetBit(gioPORTB, 7, 1);
LIB_SCI_Init();

UINT8 s_unWriteData = 6; // 初始写入数据
UINT8 iflash_write_data[32] = {0}; //写入的数值
UINT8 s_unReadData[32] = {0}; // 读取数据缓冲区
Fapi_StatusType oReturnCheck = Fapi_Status_Success;
while(1)
{
//内部flash读写测试
/*擦除扇区*/

if(s_unWriteData==6)
{
memset(s_unReadData, 0, sizeof(s_unReadData)); // 清空读取数据缓冲区
oReturnCheck = Fapi_initializeFlashBanks(80); //初始化Flash Bank以进行API操作
if ((oReturnCheck == Fapi_Status_Success) && (FLASH_CONTROL_REGISTER->FmStat.FMSTAT_BITS.BUSY != Fapi_Status_FsmBusy))
{
Fapi_setActiveFlashBank(Fapi_FlashBank1); //设置活动的Flash Bank
Fapi_enableMainBankSectors(1<<5); //设置EEPROM存储区中可用的扇区以进行擦除和编程
while (FLASH_CONTROL_REGISTER->FmStat.FMSTAT_BITS.BUSY == Fapi_Status_FsmBusy){}
Fapi_issueAsyncCommandWithAddress(Fapi_EraseSector,(uint32_t*)0x002A0000); //向Flash状态机发出命令

while(FLASH_CONTROL_REGISTER->FmStat.FMSTAT_BITS.BUSY == Fapi_Status_FsmBusy);
while(FAPI_GET_FSM_STATUS != Fapi_Status_Success);

memset(iflash_write_data, s_unWriteData, sizeof(iflash_write_data)); // 填充写入数据
oReturnCheck = Fapi_issueProgrammingCommand((uint32_t*)0x002A0000,iflash_write_data,32,0,0,Fapi_AutoEccGeneration); /*Programming data to 8th sector*/
while( FAPI_CHECK_FSM_READY_BUSY == Fapi_Status_FsmBusy );
while(FAPI_GET_FSM_STATUS != Fapi_Status_Success);

memcpy(s_unReadData, (UINT8*)(0x002A0000), 32);
s_unWriteData =7;
}
}
if(s_unWriteData ==7)
{
memset(s_unReadData, 0, sizeof(s_unReadData)); // 清空读取数据缓冲区
oReturnCheck = Fapi_initializeFlashBanks(80); //初始化Flash Bank以进行API操作
if ((oReturnCheck == Fapi_Status_Success) && (FLASH_CONTROL_REGISTER->FmStat.FMSTAT_BITS.BUSY != Fapi_Status_FsmBusy))
{
Fapi_setActiveFlashBank(Fapi_FlashBank1); //设置活动的Flash Bank
Fapi_enableMainBankSectors(1<<5); //设置EEPROM存储区中可用的扇区以进行擦除和编程
while (FLASH_CONTROL_REGISTER->FmStat.FMSTAT_BITS.BUSY == Fapi_Status_FsmBusy){}
Fapi_issueAsyncCommandWithAddress(Fapi_EraseSector,(uint32_t*)0x002A0000); //向Flash状态机发出命令

while(FLASH_CONTROL_REGISTER->FmStat.FMSTAT_BITS.BUSY == Fapi_Status_FsmBusy);
while(FAPI_GET_FSM_STATUS != Fapi_Status_Success);

memset(iflash_write_data, s_unWriteData, sizeof(iflash_write_data)); // 填充写入数据
oReturnCheck = Fapi_issueProgrammingCommand((uint32_t*)0x002A0000,iflash_write_data,32,0,0,Fapi_AutoEccGeneration); /*Programming data to 8th sector*/
while( FAPI_CHECK_FSM_READY_BUSY == Fapi_Status_FsmBusy );
while(FAPI_GET_FSM_STATUS != Fapi_Status_Success);

memcpy(s_unReadData, (UINT8*)(0x002A0000), 32);
}
}
while(1){}
}

}

测试记录.docx

Daniel:

您好

已经收到了您的案例,调查需要些时间,感谢您的耐心等待

,

Vivian Gao:

您发帖重复,我们还在为您调查,请等待下方帖子的回复。

e2echina.ti.com/…/tms570lc4357-flash

赞(0)
未经允许不得转载:TI中文支持网 » TMS570LC4357: 内部flash操作擦写读,操作函数第二轮赋值,不能擦除第一轮读过的地址数据;debug仿真复位后才可以看到状态
分享到: 更多 (0)