问答

汇集网友智慧,解决技术难题

21ic问答首页 - 280049的Flash写入失效原因

280049的Flash写入失效原因 赏100家园币

z_jzhao2022-11-21
        当在当前地0x8DFFC写入4个字,都正常写入,接着在0x85000写入一个字后,却发现没有写入,但返回的状态位却是正确的,为什么会没有写入;代码如下:

                u32FlashAddr = APP_TESTADDR; //0x8DFFC
                oReturnCheck = Fapi_issueProgrammingCommand((Uint32 *)u32FlashAddr, u16FlasshDat, 4,0, 0,Fapi_AutoEccGeneration);
                while(Fapi_checkFsmForReady() == Fapi_Status_FsmBusy);  //写入正常


                u32FlashAddr = APP_TESTADDR; //0x85000
                oReturnCheck = Fapi_issueProgrammingCommand((Uint32 *)u32FlashAddr, u16FlasshDat, 1,0, 0,Fapi_AutoEccGeneration);
                while(Fapi_checkFsmForReady() == Fapi_Status_FsmBusy); //写入异常
回答 +关注 14
20168人浏览 2人回答问题 分享 举报
2 个回答
  • 这种情况可能是由于在写入0x85000时出现了错误导致的。错误原因可能有很多,例如访问了不能写入的地址、写保护了该地址、写入操作超时等。
    在写入Flash存储器时,应该注意以下几点:
    • 确保地址有效,不能访问不能写入的地址。
    • 确保写保护功能没有打开。
    • 确保写入操作没有超时。
    • 确保操作正确,比如在写入之前应该先读取该地址的数据并校验,以确保写入的数据与原数据不同。
    • 在写入Flash存储器之前,应该先擦除该地址所在的扇区。
    • 在写入Flash存储器时,应该注意数据对齐,例如,在C2000处理器中,Flash存储器的数据必须按照32位对齐写入。
    • 在写入Flash存储器时,应该注意代码的并发性,避免多个任务同时访问Flash存储器导致的冲突。


您需要登录后才可以回复 登录 | 注册