Part Number: TMS570LC4357
Tool/software: Code Composer Studio
I am trying to program a flash memory location of Bank1 from Bank 0 of TMS57LC4357 and running the flash library from SRAM.
As per spnu501 after programming command, Observed the value 0x1010 from FAPI_GET_FSM_STATUS which means that PGV bit and CSTAT bit are set.
In our application the HCLK=90MHz (GCLK=180 MHz), As per data sheet RWAIT needs to be set to '2'(not working) and we tried configuring the RWAIT to different values 1- 8 and observed below:
1. RWAIT values set to 1-6 - 0x1010 from FAPI_GET_FSM_STATUS and not programmed the data at flash address .
2. RWAIT value set to 7-8 - 0x1010 from FAPI_GET_FSM_STATUS and programmed few bytes correctly at flash address. but not completely.
I have enabled Fapi_enableAutoEccCalculation before flash initialization. PFB my flash programming code .
Bool flash_api_test(void)
{
Uint32 address = 0;
while( (Fapi_enableAutoEccCalculation()) != Fapi_Status_Success);
Fapi_StatusType f_initialize = Fapi_initializeFlashBanks(90);
Bool init_success = (Fapi_Status_Success == f_initialize);
Fapi_StatusType f_active1 = Fapi_setActiveFlashBank(Fapi_FlashBank1);
Bool active_success1 = (Fapi_Status_Success == f_active1);
Fapi_StatusType f_enable1 = Fapi_enableMainBankSectors(0xFFFF);
Bool enable_success1 = (Fapi_Status_Success == f_enable1);
address = 0x003C0000;
Fapi_StatusType status = Fapi_checkFsmForReady();
for (status = Fapi_checkFsmForReady();
status != Fapi_Status_FsmReady;
status = Fapi_checkFsmForReady())
{
}
Fapi_enableAutoEccCalculation();
Fapi_StatusType f_erase_status = Fapi_issueAsyncCommandWithAddress(Fapi_EraseSector,
(Uint32*)(address));
Bool pgm_success1 = (Fapi_Status_Success == f_erase_status);
Bool pgm_success2;
Fapi_StatusType status1 = Fapi_checkFsmForReady();
for (status1 = Fapi_checkFsmForReady();
status1 != Fapi_Status_FsmReady;
status1 = Fapi_checkFsmForReady())
{
}
pgm_success1 = (pgm_success1 && (FAPI_GET_FSM_STATUS == 0ul));
if(pgm_success1)
{
Fapi_enableAutoEccCalculation();
Uint64 data = 0x3132333435463738ULL;
Fapi_StatusType f_program_status = Fapi_issueProgrammingCommand( (Uint32 *)( address ),
(Uint8 *)( &data ),
sizeof(data),
0,
0,
Fapi_AutoEccGeneration );
pgm_success2 = (Fapi_Status_Success == f_program_status);
Fapi_StatusType status3 = Fapi_checkFsmForReady();
for (status3 = Fapi_checkFsmForReady();
status3 != Fapi_Status_FsmReady;
status3 = Fapi_checkFsmForReady())
{
}
pgm_success2 = (pgm_success2 && (FAPI_GET_FSM_STATUS == 0ul));
}
return pgm_success2;
}
Requesting you to please help me out in above issue in Flash programming.
