您好!
我尝试使用闪存 API 并尝试对闪存进行编程、但它始终返回失败。 如果我尝试在闪存中写入0到1、则会根据手册设置 INVDAT。 在我写入闪存之前、我已经擦除了闪存(也使用函数进行了检查)、一切都正常、使用内存浏览器完全为0xFFFF)、但它没有帮助。 我出了什么问题?
下面是我如何尝试执行它的一些代码:
uint32_t 地址 ToErase = 0x8F000;
uint16_t DATA[4];
data[0]= 0x10;
data[1]= 0x11;
data[2]= 0x12;
DATA[3]= 0x13;
Fapi_StatusType flashStatus = Fapi_issueCommandAddress (Fapi_EraseSector、(UINT32_t *) addressToErase);
while (Fapi_checkFsmForReady ()!= Fapi_Status_FsmReady);
if (flashStatus!= 0)
{
//处理错误
}
否则
{
if (fapi_getFsmStatus()!= 0U)
{
//处理错误
}
其他
{
//检查是否为空
Fapi_FlashStatusWordType flashStatusWord;
flashStatus = fapi_doBlankCheck (((uint32_t *) address ToErase、0x1000、flashStatusWord);
if (flashStatus!= fapi_Status_Success)
{
//处理错误
}
其他
{
flashStatus = fapi_issueProgrammingCommand (&addressToErase、&data[0]、4、NULL、0U、 Fapi_AutoEccGeneration);
//等待闪存程序操作完成
while (fapi_checkFsmForReady()!= fapi_Status_FsmReady);
if (flashStatus!= fapi_Status_Success)
{
将始终出现在这里、因为 INVDAT 为1
//处理错误
}
...}
}