找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3046|回復(fù): 5
收起左側(cè)

如何判斷flash內(nèi)存是否寫(xiě)入過(guò)數(shù)據(jù)

[復(fù)制鏈接]
ID:585428 發(fā)表于 2021-4-16 08:48 | 顯示全部樓層 |閱讀模式
求教。我想將設(shè)備的初始化數(shù)據(jù)寫(xiě)入到w25q128這款flash內(nèi)存中,但因?yàn)槌跏蓟臄?shù)據(jù)不是永遠(yuǎn)不變的,個(gè)人可以根據(jù)需要修改,然后將新的數(shù)據(jù)保存。

所以我想做一個(gè)初始化判斷,如果芯片沒(méi)有寫(xiě)入過(guò)數(shù)據(jù),那么導(dǎo)入初始化數(shù)據(jù),如果寫(xiě)入過(guò)數(shù)據(jù),那么就讀取寫(xiě)入的數(shù)據(jù)。
已知w25q128這款芯片初始狀態(tài)時(shí),每一位存儲(chǔ)的都是1。所以我做了一個(gè)簡(jiǎn)單的判斷,但是我覺(jué)得不是特別保險(xiǎn)。
請(qǐng)問(wèn)有沒(méi)有人做過(guò)這方面,有更好的方案。謝謝分享。
下面是我的代碼:
  1. u8 datatemp[8];
  2.         W25QXX_Read((u8*)datatemp,0X000000,8); //起始地址0號(hào)扇區(qū),讀取數(shù)據(jù),并賦值給datatemp數(shù)組
  3. if(datatemp[0]!=0XFF)  //不等于0xFF,說(shuō)明有用戶(hù)保存的數(shù)據(jù),那么不再初始化
  4. {
  5. }
  6. else //等于0xFF=》進(jìn)行初始化設(shè)置
  7. {
  8. }
復(fù)制代碼




回復(fù)

使用道具 舉報(bào)

ID:388929 發(fā)表于 2021-4-16 09:15 | 顯示全部樓層
真正的儲(chǔ)存由第二個(gè)扇區(qū)開(kāi)始,第一扇區(qū)留著做記號(hào),每次程序判斷時(shí)就去讀那個(gè)記號(hào)就好,有記號(hào)就寫(xiě)過(guò),沒(méi)記號(hào)就沒(méi)寫(xiě)過(guò)
回復(fù)

使用道具 舉報(bào)

ID:585428 發(fā)表于 2021-4-16 09:22 | 顯示全部樓層
billaj 發(fā)表于 2021-4-16 09:15
真正的儲(chǔ)存由第二個(gè)扇區(qū)開(kāi)始,第一扇區(qū)留著做記號(hào),每次程序判斷時(shí)就去讀那個(gè)記號(hào)就好,有記號(hào)就寫(xiě)過(guò),沒(méi)記 ...

了解了,您這個(gè)方式比我的做法好很多。謝謝
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2021-4-16 10:31 | 顯示全部樓層
方法其實(shí)有很多,樓上已提供了一種方法。再比如你保存的數(shù)據(jù)在某范圍之內(nèi),讀取后判斷其是否在有效范圍之內(nèi),否則無(wú)效就寫(xiě)入新數(shù)據(jù)。亦或用數(shù)據(jù)串的形式保存,加入一個(gè)字節(jié)的驗(yàn)證碼更保險(xiǎn)。

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:584814 發(fā)表于 2021-4-16 11:00 | 顯示全部樓層
想知道有沒(méi)有寫(xiě)過(guò),就是做標(biāo)記,你可以將新器件先寫(xiě)滿(mǎn)0或1。
但這種辦法也有問(wèn)題,比如你寫(xiě)滿(mǎn)了0或1而你新寫(xiě)的也正好是全0或1.....
所以要根據(jù)自己的實(shí)際要求去做。要是寫(xiě)文檔什么的搞個(gè)標(biāo)記有個(gè)意思就可以了。

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:585428 發(fā)表于 2021-4-16 11:19 | 顯示全部樓層
wulin 發(fā)表于 2021-4-16 10:31
方法其實(shí)有很多,樓上已提供了一種方法。再比如你保存的數(shù)據(jù)在某范圍之內(nèi),讀取后判斷其是否在有效范圍之內(nèi) ...

您的這種加校驗(yàn)位的方法確實(shí)更加的嚴(yán)謹(jǐn),能夠更好的防止意外情況的發(fā)生。謝謝
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表