欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

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

QQ登錄

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

搜索
查看: 3703|回復(fù): 26
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)EEPROM/FLASH如何長(zhǎng)壽保存總運(yùn)行時(shí)間?

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:997026 發(fā)表于 2022-6-6 16:46 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
目前有一個(gè)呼吸機(jī)方案,該方案有兩種運(yùn)行模式,一種是開(kāi)機(jī)就運(yùn)行,除非關(guān)閉電源停止。另一種是定時(shí)運(yùn)行,就是設(shè)定運(yùn)行時(shí)間,比如設(shè)定2個(gè)小時(shí),2小時(shí)到后機(jī)器停止。

現(xiàn)在想檢測(cè)總運(yùn)行時(shí)間,就是統(tǒng)計(jì)開(kāi)機(jī)運(yùn)行和定時(shí)運(yùn)行的總時(shí)間,并記錄下來(lái)。這個(gè)總時(shí)間是不可設(shè)置和修改的。就跟汽車(chē)的總里程表一樣的,運(yùn)行一次就不斷往上累加。

實(shí)現(xiàn)原理不復(fù)雜,但我想用純軟件實(shí)現(xiàn),不加掉電檢測(cè)電路,我有個(gè)疑問(wèn)是,如果機(jī)器開(kāi)起來(lái),時(shí)間不斷增加,要不斷往EEPROM里寫(xiě)數(shù)據(jù),比如我這個(gè)呼吸機(jī)要用三年,折合幾萬(wàn)小時(shí),寫(xiě)這么多次,EEPROM撐的住嗎?

有沒(méi)有什么好的思路和算法,可以既能完美保存數(shù)據(jù)又可以延長(zhǎng)EEPROM/FLASH壽命的?我在想汽車(chē)?yán)锩娴目偫锍瘫,?chē)子開(kāi)十幾年,總里程達(dá)到幾十萬(wàn)公里,也沒(méi)見(jiàn)出現(xiàn)問(wèn)題,我想他里面一定不是單純的寫(xiě)數(shù)據(jù)而已,肯定有什么比較好的算法。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:624769 發(fā)表于 2022-6-7 00:37 | 只看該作者
要看你用什么Eeprom 了, 每家的標(biāo)準(zhǔn)不一樣, 通常Eeprom 再小 也有128字節(jié)吧? 就算  4 個(gè)字節(jié)用來(lái)記錄,均衡使用的話, 也有 32個(gè) 區(qū)域可以輪流使用, 假定, 1分鐘記錄 1次, 一個(gè)小時(shí), 60次,也就是所有區(qū)域 擦寫(xiě)兩次, 一天 48次, 一年 17520 次,假定,你的Eeprom 按最差的工藝, 2萬(wàn)次 擦寫(xiě),也夠用 1年,那么, 適當(dāng),增加 Eeprom 大小,或者,擴(kuò)大寫(xiě)入間隔,就能延長(zhǎng) 使用周期了。
回復(fù)

使用道具 舉報(bào)

板凳
ID:883242 發(fā)表于 2022-6-7 01:22 | 只看該作者
硬件解決方案:用鐵電,幾億次寫(xiě)壽命夠你用的了。

軟件解決方案:寫(xiě)到滿就換一個(gè)區(qū)域繼續(xù)寫(xiě)唄,把寫(xiě)滿的區(qū)間加起來(lái)就是總區(qū)間。
回復(fù)

使用道具 舉報(bào)

地板
ID:283954 發(fā)表于 2022-6-7 06:12 | 只看該作者
以stc12為例,4個(gè)扇區(qū),每個(gè)扇區(qū)512字節(jié),一萬(wàn)次擦寫(xiě),每分鐘記錄一次,如果使用得當(dāng),兩個(gè)扇區(qū)可用155年,四個(gè)可用310年。應(yīng)該夠了吧。
回復(fù)

使用道具 舉報(bào)

5#
ID:213173 發(fā)表于 2022-6-7 07:21 | 只看該作者
以STC15系列單片機(jī)為例,其內(nèi)置EEPROM容量4~43K,IAP型更是可以自行分配EEPROM容量。影響EEPROM壽命的關(guān)鍵因素主要是擦寫(xiě)次數(shù)。用戶手冊(cè)標(biāo)明10萬(wàn)次以上。EEPROM是以扇區(qū)512字節(jié)為單位讀寫(xiě),其字節(jié)初始狀態(tài)全部是0xff,要重寫(xiě)數(shù)據(jù)必須先以扇區(qū)擦除。也就是只能寫(xiě)0,不能寫(xiě)1,只有擦除才能置1(由其材料物理特性決定)。那么不擦除扇區(qū)是不是就不能寫(xiě)?答案是否定的。以處理5個(gè)字節(jié)數(shù)據(jù)為例,1個(gè)字節(jié)用于保存所占用的地址信息,4個(gè)字節(jié)用于保存有效數(shù)據(jù)。按地址順序記錄,寫(xiě)滿一個(gè)扇區(qū)寫(xiě)下一個(gè)扇區(qū)或擦除重寫(xiě),大幅降低擦除頻次。再配合掉電保存方式,使其使用壽命無(wú)限延長(zhǎng)。
回復(fù)

使用道具 舉報(bào)

6#
ID:219796 發(fā)表于 2022-6-7 09:41 來(lái)自觸屏版 | 只看該作者
年月日時(shí)分秒十二個(gè)字節(jié)不就夠了么?
回復(fù)

使用道具 舉報(bào)

7#
ID:110604 發(fā)表于 2022-6-7 15:16 | 只看該作者
其實(shí)可以用自帶電池的rtc模塊記錄,里面sram可以寫(xiě)無(wú)數(shù)次
回復(fù)

使用道具 舉報(bào)

8#
ID:1033160 發(fā)表于 2022-6-8 11:42 | 只看該作者
以STC15系列單片機(jī)為例,其內(nèi)置EEPROM容量4~43K,IAP型更是可以自行分配EEPROM容量。影響EEPROM壽命的關(guān)鍵因素主要是擦寫(xiě)次數(shù)。用戶手冊(cè)標(biāo)明10萬(wàn)次以上。EEPROM是以扇區(qū)512字節(jié)為單位讀寫(xiě),其字節(jié)初始狀態(tài)全部是0xff,要重寫(xiě)數(shù)據(jù)必須先以扇區(qū)擦除。也就是只能寫(xiě)0,不能寫(xiě)1,只有擦除才能置1(由其材料物理特性決定)。那么不擦除扇區(qū)是不是就不能寫(xiě)?答案是否定的。硬件解決方案:用鐵電,幾億次寫(xiě)壽命夠你用的了。  軟件解決方案:寫(xiě)到滿就換一個(gè)區(qū)域繼續(xù)寫(xiě)唄,把寫(xiě)滿的區(qū)間加起來(lái)就是總區(qū)間
回復(fù)

使用道具 舉報(bào)

9#
ID:1033160 發(fā)表于 2022-6-8 11:42 | 只看該作者
硬件解決方案:用鐵電,幾億次寫(xiě)壽命夠你用的了。

軟件解決方案:寫(xiě)到滿就換一個(gè)區(qū)域繼續(xù)寫(xiě)唄,把寫(xiě)滿的區(qū)間加起來(lái)就是總區(qū)間
回復(fù)

使用道具 舉報(bào)

10#
ID:965189 發(fā)表于 2022-6-8 12:04 | 只看該作者
我的一個(gè)東西記錄時(shí)間,一分鐘保存一次,秒忽略。
回復(fù)

使用道具 舉報(bào)

11#
ID:161164 發(fā)表于 2022-6-8 15:38 | 只看該作者
如用的是STC89C52,有5k EEProm (5120Byte)
每分鐘在新地址寫(xiě)兩個(gè)Byte(int)
寫(xiě)的值為EEProm的寫(xiě)滿次數(shù)
那么寫(xiě)到0x7FFF就有5120/2*32767=83883520分鐘=159年
回復(fù)

使用道具 舉報(bào)

12#
ID:161164 發(fā)表于 2022-6-8 16:19 | 只看該作者
又想到一個(gè)新點(diǎn)子
利用STC偽EEProm的特性(可寫(xiě)0不可寫(xiě)1)
只用一個(gè)扇區(qū)(512Byte)就可以計(jì)錄508年
首先頭兩Byte用來(lái)記錄擦除次數(shù)
然后每分鐘對(duì)每一Byte清零一個(gè)位元

B11111110
B11111100
B11111000
當(dāng)這地址為0時(shí)清零下一地址
當(dāng)這一扇區(qū)全零時(shí)就已經(jīng)過(guò)了(512-2)*8=4080分鐘
當(dāng)擦除次數(shù)達(dá)到0xFFF7(65535)時(shí)
機(jī)器就運(yùn)行了65535*4080=267382800分鐘=508年
回復(fù)

使用道具 舉報(bào)

13#
ID:624769 發(fā)表于 2022-6-8 16:36 來(lái)自觸屏版 | 只看該作者
lkc8210 發(fā)表于 2022-6-8 16:19
又想到一個(gè)新點(diǎn)子
利用STC偽EEProm的特性(可寫(xiě)0不可寫(xiě)1)
只用一個(gè)扇區(qū)(512Byte)就可以計(jì)錄508年

你這個(gè)想法很好,但是行不通。
5年前開(kāi)始,只要stc出新型號(hào)就實(shí)驗(yàn)(stc32和stc16沒(méi)有試過(guò),有條件的話,你試試),結(jié)論是stc的單片機(jī)不是只能1寫(xiě)0,是只能ff寫(xiě)其他值,你可以按你的想法試試,一次次改寫(xiě),然后最高位和最低位,都會(huì)不受控的隨機(jī)的變1,甚至,我降低要求,先寫(xiě)個(gè)隨便什么值,再寫(xiě)0x00,都不是每次能成功,即第二次寫(xiě)入,只能確保破壞原值,不能保證寫(xiě)成目標(biāo)值,即便你要改成0x00。所以,寫(xiě)入后擦除再寫(xiě),是唯一辦法。
回復(fù)

使用道具 舉報(bào)

14#
ID:161164 發(fā)表于 2022-6-8 16:59 | 只看該作者
本帖最后由 lkc8210 于 2022-6-8 17:04 編輯
188610329 發(fā)表于 2022-6-8 16:36
你這個(gè)想法很好,但是行不通。
5年前開(kāi)始,只要stc出新型號(hào)就實(shí)驗(yàn)(stc32和stc16沒(méi)有試過(guò),有條件的話, ...

太遺憾了那就改為每分鐘對(duì)一個(gè)Byte寫(xiě)0x00
當(dāng)這一扇區(qū)全零時(shí)就已經(jīng)過(guò)了(512-2)=510分鐘
當(dāng)擦除次數(shù)達(dá)到0xFFF7(65535)時(shí)
機(jī)器就運(yùn)行了65535*510=267382800分鐘=63年
還可以接受吧?

回復(fù)

使用道具 舉報(bào)

15#
ID:1033264 發(fā)表于 2022-6-8 17:16 來(lái)自觸屏版 | 只看該作者
ID:10331609# 2022-6-8 11:42 硬件解決方案:用鐵電,幾億次寫(xiě)壽命夠你用的了。  軟件解決方案:寫(xiě)到滿就換一個(gè)區(qū)域繼續(xù)寫(xiě)唄,把寫(xiě)滿的區(qū)間加起來(lái)就是總區(qū)間
回復(fù)

使用道具 舉報(bào)

16#
ID:329625 發(fā)表于 2022-6-8 18:50 | 只看該作者
理論方面是滿足的,具體的還要參考你用的芯片的次數(shù)
回復(fù)

使用道具 舉報(bào)

17#
ID:883242 發(fā)表于 2022-6-8 22:27 | 只看該作者
dalaoshi 發(fā)表于 2022-6-7 06:12
以stc12為例,4個(gè)扇區(qū),每個(gè)扇區(qū)512字節(jié),一萬(wàn)次擦寫(xiě),每分鐘記錄一次,如果使用得當(dāng),兩個(gè)扇區(qū)可用155年, ...

每分鐘一次,一萬(wàn)次擦寫(xiě)是7天。。∧膩(lái)的155年???

既然分扇區(qū),那么即使是字節(jié)可以單獨(dú)寫(xiě),那也要整個(gè)扇區(qū)擦除。不擦你怎么把80h改成7fh呢???
回復(fù)

使用道具 舉報(bào)

18#
ID:161164 發(fā)表于 2022-6-8 22:50 | 只看該作者
Hephaestus 發(fā)表于 2022-6-8 22:27
每分鐘一次,一萬(wàn)次擦寫(xiě)是7天。!哪來(lái)的155年???

既然分扇區(qū),那么即使是字節(jié)可以單獨(dú)寫(xiě),那也要 ...

155x365x24x60=81,468,000分鐘
81,468,000/1024/10000=7.95
即每個(gè)字節(jié)寫(xiě)8次
大概和我12樓的想法類(lèi)似
但被13樓證明了是不可能的
回復(fù)

使用道具 舉報(bào)

19#
ID:230742 發(fā)表于 2022-6-8 23:00 | 只看該作者
為什么不用掉電檢測(cè)呢?就算加電路也不復(fù)雜吧。那不是比這簡(jiǎn)單多了?
回復(fù)

使用道具 舉報(bào)

20#
ID:883242 發(fā)表于 2022-6-8 23:02 | 只看該作者
lkc8210 發(fā)表于 2022-6-8 22:50
155x365x24x60=81,468,000分鐘
81,468,000/1024/10000=7.95
即每個(gè)字節(jié)寫(xiě)8次

了解了,寫(xiě)8次就是12樓的做法,但是13樓確定這種辦法不能用。
回復(fù)

使用道具 舉報(bào)

21#
ID:283954 發(fā)表于 2022-6-8 23:09 | 只看該作者
188610329 發(fā)表于 2022-6-8 16:36
你這個(gè)想法很好,但是行不通。
5年前開(kāi)始,只要stc出新型號(hào)就實(shí)驗(yàn)(stc32和stc16沒(méi)有試過(guò),有條件的話, ...

還好有你的實(shí)驗(yàn)結(jié)果,要不然做的時(shí)候還不知道會(huì)浪費(fèi)多少時(shí)間,但你這一結(jié)果表示FLASH偶爾能把原來(lái)的0寫(xiě)成1,那不就違反的FLASH的物理特性了?所以還得再小心求證了。

lkc8210君的想法很好,我原本想用到兩個(gè)扇區(qū),現(xiàn)在一個(gè)就行了。
回復(fù)

使用道具 舉報(bào)

22#
ID:624769 發(fā)表于 2022-6-8 23:46 | 只看該作者
dalaoshi 發(fā)表于 2022-6-8 23:09
還好有你的實(shí)驗(yàn)結(jié)果,要不然做的時(shí)候還不知道會(huì)浪費(fèi)多少時(shí)間,但你這一結(jié)果表示FLASH偶爾能把原來(lái)的0寫(xiě)成 ...

也不算 把 0 寫(xiě)成 1,   感覺(jué)就是 里面電荷亂了,

試驗(yàn)的最初目的,是事先在Eeprom 里面存入  512個(gè) 值,用掉一個(gè) 清掉一個(gè)。
本來(lái)是認(rèn)為,只要 我寫(xiě)0x00, 不管原來(lái)什么數(shù)據(jù),都能清掉吧? 后來(lái)發(fā)現(xiàn),永遠(yuǎn)清不完,才專門(mén)寫(xiě)了測(cè)試程序去做這樣一個(gè)試驗(yàn)。然后發(fā)現(xiàn),只要 非0xff的地方, 寫(xiě)入 0x00  90%以上都不會(huì)變 0x00 也不會(huì)保留原值,而是變成一個(gè)隨機(jī)值, 有的地方1會(huì)變 0 有的地方會(huì) 0變1, 而一旦出現(xiàn)這種狀況的 地址,在重新擦除之前,不管你怎么改寫(xiě),都無(wú)法變成 0x00  或者 0xff,   基本上,嘗試多次寫(xiě)入 任意值 之后, 用二進(jìn)制來(lái)看, 會(huì)穩(wěn)定的在類(lèi)似: 01000000  和 00010010 這樣的值之間變化。就是 大部分是0 有1~2個(gè)會(huì)是1,位置還會(huì)游走。
具體原因不清楚。也許是 Flash 的正常特性,也許是 STC 的 IAP 的漏洞缺陷? 總之, 差不多測(cè)試了 百來(lái)片(80片以上絕對(duì)有)的STC單片機(jī),幾乎覆蓋STC全系列( 除了 STC16, STC32 沒(méi)有測(cè)試過(guò),) 這個(gè)問(wèn)題一直存在。 關(guān)于手冊(cè)上的, 只能把 1 寫(xiě)成 0,這個(gè)說(shuō)法,和事實(shí)嚴(yán)重不符的問(wèn)題,也反映過(guò),總被他們按照“寫(xiě)入前必須擦除扇區(qū)” 來(lái)敷衍,從不給正面回答。
正好12#提到這個(gè)想法,我就順便說(shuō)一下親身經(jīng)歷,避免有人和我一樣中招。
回復(fù)

使用道具 舉報(bào)

23#
ID:883242 發(fā)表于 2022-6-9 00:04 | 只看該作者
188610329 發(fā)表于 2022-6-8 23:46
也不算 把 0 寫(xiě)成 1,   感覺(jué)就是 里面電荷亂了,

試驗(yàn)的最初目的,是事先在Eeprom 里面存入  512個(gè) 值 ...

那就是SLC、MLC、TLC……的區(qū)別了。沒(méi)想到死大、慘集成度這么低的芯片也會(huì)用到MLC。。。。。

SLC是一個(gè)存儲(chǔ)單元只記錄0、1兩個(gè)值,1可以寫(xiě)成0,0不能寫(xiě)成1。符合你的預(yù)測(cè)。

TLC是一個(gè)存儲(chǔ)單元分8個(gè)電壓等級(jí),000、001、010、011、100、101、110、111,讀這個(gè)存儲(chǔ)單元是測(cè)量電壓,然后給出3bit數(shù)據(jù)。這種結(jié)構(gòu)當(dāng)然是你的測(cè)試結(jié)果了。
回復(fù)

使用道具 舉報(bào)

24#
ID:283954 發(fā)表于 2022-6-9 02:15 | 只看該作者
188610329 發(fā)表于 2022-6-8 23:46
也不算 把 0 寫(xiě)成 1,   感覺(jué)就是 里面電荷亂了,

試驗(yàn)的最初目的,是事先在Eeprom 里面存入  512個(gè) 值 ...

我到這個(gè)站找到相關(guān)話題的研討。
去搜索下這篇文章
EEV b log的FLASH memory write without pre-erase

我的英文水平有限,勉強(qiáng)看得懂,原來(lái)很多FLASH是不允許在本來(lái)已經(jīng)是0的單元再寫(xiě)0的,這是關(guān)鍵的說(shuō)明:

CAUTION
A flash memory location must be in the erased state before being programmed. Cumulative programming of bits (back-to-back program operations without an intervening erase) within a flash memory location is not allowed. Re-programming of existing 0s to 0 is not allowed as this overstresses the device.

但有些新品牌的FLASH可以這么做,所以還能再等待。

既然說(shuō)明書(shū)說(shuō)對(duì)已經(jīng)是0的單元重新寫(xiě)0會(huì)造成過(guò)度勞累,你有空還可做一個(gè)實(shí)驗(yàn),把要重寫(xiě)的那個(gè)字節(jié)(8位)讀出后,把0先變成1,再補(bǔ)上要寫(xiě)的0,再寫(xiě)入,這樣就可避免在原來(lái)的0再寫(xiě)0,就不會(huì)“過(guò)度勞累”,看看有什么結(jié)果哈。

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

25#
ID:1033481 發(fā)表于 2022-6-9 13:51 | 只看該作者
不需要不停的寫(xiě)進(jìn)去,每隔10分鐘寫(xiě)一次甚至半小時(shí)寫(xiě)一次就好了,因?yàn)橛行C(jī)器不是按照分鐘收費(fèi)啊。這樣可以讓壽命提高N倍
回復(fù)

使用道具 舉報(bào)

26#
ID:624769 發(fā)表于 2022-6-9 18:03 | 只看該作者
Hephaestus 發(fā)表于 2022-6-9 00:04
那就是SLC、MLC、TLC……的區(qū)別了。沒(méi)想到死大、慘集成度這么低的芯片也會(huì)用到MLC。。。。。

SLC是一 ...

原來(lái)如此,漲知識(shí)了, 看來(lái) STC用的就是 MLC 或者 TLC 的Flash 了。這樣,Eeprom的問(wèn)題,就解釋的通了。
就是這么簡(jiǎn)單的一個(gè)問(wèn)題,他們技術(shù)部門(mén)為啥要藏著掖著的?用MLC,TLC的U盤(pán)也不是沒(méi)有,講出來(lái)很丟人么?
回復(fù)

使用道具 舉報(bào)

27#
ID:624769 發(fā)表于 2022-6-9 18:10 | 只看該作者
lkc8210 發(fā)表于 2022-6-8 16:59
太遺憾了那就改為每分鐘對(duì)一個(gè)Byte寫(xiě)0x00
當(dāng)這一扇區(qū)全零時(shí)就已經(jīng)過(guò)了(512-2)=510分鐘
當(dāng)擦除次數(shù)達(dá)到0 ...

仔細(xì)想一想,其實(shí)按照你的計(jì)數(shù)方式,Eeprom 的主意也不是不能打,經(jīng)過(guò)我 上萬(wàn)次的測(cè)試,發(fā)現(xiàn),雖然再次寫(xiě)入,不能改寫(xiě)成目標(biāo)值,但是破壞原值,還是可以確保的。站在Eeprom 利用最大化,榨干剩余價(jià)值的立場(chǎng)來(lái)講,我覺(jué)得不然,這樣:
與其,每個(gè)單元寫(xiě) 0x00, 不如我們寫(xiě) 0x5A;
按你的思路,我們一個(gè)扇區(qū),全寫(xiě)成 0x5A;  就是 510分鐘。
再全寫(xiě) 0xA5, 不管變成啥 反正,都 非0x5A 了,就 1020 分鐘了。
然后,反復(fù)擦除,寫(xiě)到報(bào)廢,就 126 年了。
就算,1秒寫(xiě)一次, 拼上一個(gè)扇區(qū)的壽命,能寫(xiě)2年,4個(gè)扇區(qū),能8年,基本產(chǎn)品也報(bào)廢了。 這主意不錯(cuò)吧?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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