大家好,团队
客户提出的问题可能需要您的帮助:
芯片组7使用 TI 的收费驱动程序代码操作。 配置芯片时,bank7被划分为24个块,每个块为64个字。 首先调用函数 TI_FICE_EraseImmediateBlock 擦除该块,然后写入该块。 但有时会出现擦除失败,客户希望知道为什么会出现这种情况。 下面是要写入的代码:
void SysParameterWriteBlock (uint16_t uIBlockNumMax)
{
STD_ReturnType 返回;
IF(u32FeedWriteBlockNum <24U)
{
RTN = TI_FICE_EraseImmediateBlock (uIFeeWriteBlockNum+1U);
IF (E_OK ==返回)
{
u32EepEstesFlg = 0U;
}
否则
{
u32EepEsteFlg |= bTrue;
}
WDG_feed();/*片内看门狗的看门狗溢出时间为100 ms */
IF (eepBlockInforStu[uIFeeWriteBlockNum%24U].blockData !=空)
{
u32EeprommWriteFlg |= eepro_write_block (uIFeeWriteBlockNum+1U,(uint8_t*) eepBlockInforStu[u32FeeWriteBlockNum%24U].blockData);
}
u32FeedWriteBlockNum++;
}
}
静态 UINT32_t EEPROM_WRITE 块(uint16_t blockNum,uint8 *pData)
{
STD_ReturnType oResult=E_NOT_OK;
UINT32_t uIResultBit=bFalse;
UINT16状态;
UINT32 DELAY _cnt =0U;
做什么
TI_FICE_MainFunction();
eep_delay();
状态=TI_FICE_GetStatus (0U);
延迟_cnt++;
}
while ((状态!=空闲)&&(延迟 cnt < 1000U));
IF (状态=空闲)
{
/*异步将块写入 EEP。 *
oResult = TI_FICE_WriteAsync (blockNum,pData);
}
延迟_cnt = 0U;
做什么
TI_FICE_MainFunction();
eep_delay();
状态=TI_FICE_GetStatus (0U);
延迟_cnt++;
}
while ((状态!=空闲)&&(延迟 cnt < 1000U));
oResult = TI_FICE_WriteSync (blockNum,pData);
延迟_cnt = 0U;
做什么
TI_FICE_MainFunction();
eep_delay();
状态=TI_FICE_GetStatus (0U);
延迟_cnt++;
}
while ((状态!=空闲)&&(延迟 cnt < 1000U));
如果(oResult = E_OK)
{
uIResultBit= bFalse;
}
否则
{
uIResultBit= bTrue;
}
返回 uIResultBit;
}
跟踪到 TI_FeInternal_CheckModuleState 函数返回 TI_fee_GlobalVariables[0]。fee_ModuleState == busy_internal,它是否与频繁操作相关?
请帮您检查此案例? 谢谢。
此致,
樱桃