尊敬的 TI 团队:
我们有使用 TMS320F28384D 的定制电路板,我们的应用是在正常 间隔的闪存区(Bzero_Sector6_start)中写入值10secs..it在 运行状态下工作正常,
while (program_start=1)
{
IF (Write_Sec>=10){
主轴参数();
flash_claimPumpSemaphore (flash_CPU1_wrapper);
EEPROM_Erase (零位安全问题6_START);
eepro_ProgramSingleByte (转轴1_parameter,12,零位位数6_start);
flash_releasePumpSemaphore();
write_Sec=0;}
}
但是 ,当我以调试模式连接调试器时 ,我们面临一个问题,即擦除扇区功能失败,处理器在 eeprom_Eras()函数中出现 hang( estop)
在大多数情况下,在调试模式下工作正常1到2分钟后,该程序将在 erase 函数中获取结构。
处理器在“oReturnCheck = Fapi_issueCommandWithAddress(Fapi_EraseSector,(UINT32*)Bzero_sectorb_start2)”中被击中;”请在下面找到函数。
//####################### eepro_erase_start-扇区 C ############################################################################
void eepro_Erase (UINT32 ERASESECTOR)
{
丁;
EALLOW;
UINT32零位位秒位 b_start2;
Bzero_sectorb_start2= ERASESECTOR;
o 重校验= Fapi_issueCommandWithAddress(Fapi_EraseSector,(UINT32*)零位子位子位子位子位子位子位子位子位子位子位子位子位数_start2);
//
//等待 FSM 完成擦除扇区操作
//
While (Fapi_checkFsmForReady()!= Fapi_Status_FsmReady )(当[Fapi_checkFsmForReady()!= Fapi_Status_FsmReady]
}
//读取 fmstat 寄存器的内容,以了解 FSM 在之后的状态
// erase 命令,查看是否存在任何与擦除操作相关的错误
//
oFlashStatus = Fapi_getFsmStatus();
IF (oFlashStatus!= 0)
{
//
//检查 Flash API 文档中的 fmstat 并进行相应的调试
// Fapi_getFsmStatus()函数提供 fmstat 寄存器的内容。
//检查 EV 位,ESUSP 位,Cstat 位或是否有任何 EV 位
//已设置 VOLTSTAT 位(有关详细信息,请参阅 API 文档)。
//
__ASM(" ESTOP0");
}
//
//检验 SectorL 是否被清除。 擦除步骤本身会执行
//验证。 此验证是可以执行的第二次验证。
//
o 重试= Fapi_doBlankCheck((UINT32 *)Bzero_sectorb_start2,
零64KSector_u32长度,
&oFlashStatusWord);
IF (oReturnCheck!= Fapi_Status_Success)
{
//
//检查 Flash API 文档中是否有可能的错误
//如果 Erase 命令失败,请使用 Fapi_getFsmStatus()函数获取
// fmstat 注册内容以查看 EV 位,ESUSP 位,
//已设置 Cstat 位或 VOLTSTAT 位(请参阅的 API 文档
//更多详细信息)
//
Example_Error (oReturnCheck);
}
C1=4;
EDIS;
EINT;
}
请帮助我们解决此问题并提供解决方案
谢谢,此致,
阿杰·S