|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
如何保證PIC片內(nèi)EEPROM讀寫的可靠性? |
| 作者:poor 欄目:單片機 |
做了一個汽車上的儀表,需要將理程數(shù)記錄在PIC單片機的片內(nèi)EEPROM中,0.1公理記錄一次,但在實驗中發(fā)現(xiàn),正常的使用中沒有問題,但在很頻繁的上電下電中,偶爾會出現(xiàn)EEPROM寫錯誤,本該寫“00”的,寫成了“FF”,我是用C編的程序,用的16F872,寫EEPROM是調(diào)用的編譯器提供的函數(shù)eeprom_write(),本想將理程寫在三個地方,讀出來加以比較,但礙于擦寫次數(shù)的限制,只能寫一次,如果在寫一次的情況下,提高其可靠性,哪位仁兄有這方面的經(jīng)驗,大家共同探討一下。 * - 本貼最后修改時間:2003-9-5 9:04:56 修改者:poor |
| 2樓: | >>參與討論 |
| 作者: highend 于 2003/9/3 10:59:00 發(fā)布:
讀一讀mid range... 寫完后要檢驗,讀取一般。。。 讀取一般只讀一次,如果要求更可靠,可以讀兩次,比較,很簡單。。 寫完后一定要檢驗,規(guī)格書里面很詳細。 |
|
| 3樓: | >>參與討論 |
| 作者: shiaf 于 2003/9/3 13:35:00 發(fā)布:
to 樓主,我有一個很好的辦法解決你的問題。 我也是做汽車里程表的。 |
|
| 4樓: | >>參與討論 |
| 作者: poor 于 2003/9/3 14:38:00 發(fā)布:
TO:shiaf不妨說出來聽聽,大家一起交流交流。 |
|
| 5樓: | >>參與討論 |
| 作者: poor 于 2003/9/4 8:59:00 發(fā)布:
今天加上了校驗。。。。 今天做了些改進,在寫完一個字節(jié)后,馬上讀出來,看是否是所寫的數(shù),如果不是,則重寫一次,感覺有效果,出錯的機率有大幅下降,但在頻繁上下電2000多次的時候,仍會出一些錯,估計是在寫錯后,還來不及校驗系統(tǒng)就已經(jīng)掉電了,正在想更可靠的解決方法,歡迎大家繼續(xù)討論。 |
|
| 6樓: | >>參與討論 |
| 作者: bolofeng 于 2003/9/4 16:05:00 發(fā)布:
這樣 把要寫的字節(jié)相加,得到累加和校驗字節(jié)。 把它們分別寫到兩個地方。 上電時讀出,累加校驗,不對的話,讀第二組數(shù)據(jù),還不對,讀取默認數(shù)據(jù)。 |
|
| 7樓: | >>參與討論 |
| 作者: xmljx 于 2003/9/4 16:49:00 發(fā)布:
EEPROM bolofeng的方法是個好方法,我也用過。 我想問一下,你有沒有用掉電檢測?如果有用,那么幾本上不會寫錯。 掉電檢測很重要。。! |
|
| 8樓: | >>參與討論 |
| 作者: david4383 于 2003/9/4 20:28:00 發(fā)布:
檢測到掉電后。 電容要有足夠的電量供給單片機工作,否則出錯很多 |
|
| 9樓: | >>參與討論 |
| 作者: poor 于 2003/9/5 9:04:00 發(fā)布:
關(guān)于寫在不同的地方和掉電檢測 bolofeng說的的確是可以解決,還可以分別寫在三個地方,但在我這個系統(tǒng)中,EEPROM的擦寫次數(shù)非常緊張,盡管是10萬次,也不見得夠用,所以不能寫在三個地方啦。 掉電檢測??我還沒用到,是用芯片內(nèi)部的還是需要搭接外部電路??是在寫的時候 不斷檢測PCON寄存器的BOR標志嗎,可那是掉電復位的標志??請xmljx詳述一下,可以嗎? |
|
| 10樓: | >>參與討論 |
| 作者: hotpower 于 2003/9/5 9:11:00 發(fā)布:
寫前校驗,可以減少EEPROM的擦寫次數(shù) |
|
| 11樓: | >>參與討論 |
| 作者: bolofeng 于 2003/9/5 9:31:00 發(fā)布:
有感 其實一個系統(tǒng)的可靠性有一半是取決于硬件系統(tǒng)的完整性和可靠性。 還有一半當然是軟件了。 這個問題有過討論了,要做到相當可靠,光靠軟件是不行的。 況且你的硬件資源這么緊張。。。。。。 我的感覺是外部up管理芯片+電壓檢測+軟件校驗,能做到比較可靠。 |
|
| 12樓: | >>參與討論 |
| 作者: poor 于 2003/9/5 11:06:00 發(fā)布:
硬件已做了相當?shù)目紤] 因為是用在汽車上的產(chǎn)品,硬件上的干擾等等問題已做了相當?shù)目紤],基本做到了成本最低,但運行可靠,而且運行效果不錯,以前的工程師用匯編編的程序,經(jīng)過上萬次的開關(guān)實驗,歷時幾個月,未發(fā)現(xiàn)有此問題,但由于種種原因,沒有以前的源代碼,我接手是用C語言重編的,就發(fā)現(xiàn)了此問題,因為可以基本排除是硬件的問題,因為硬件都是一樣的,是不是用C語言寫EEPROM的eeprom_write()函數(shù)調(diào)用有問題呢??? |
|
| 13樓: | >>參與討論 |
| 作者: shiaf 于 2003/9/5 15:55:00 發(fā)布:
呵呵!不是 eeprom_write()函數(shù)問題。 這個問題,我能幫你解決。EEPROM 寫的壽命是 10萬次,你是 0.1公里寫一次,也就是說你的表跑到 10000公里以上就不可靠了。而我們的指標通常是 100000公里。所以說你的整個設(shè)計思想是錯誤的(軟件部分)。 |
|
| 14樓: | >>參與討論 |
| 作者: guagualu 于 2003/9/6 16:35:00 發(fā)布:
樓上的兄弟........ 可聯(lián)系 ludh@ct-hollon.com 我這里有些資料 |
|
| 15樓: | >>參與討論 |
| 作者: xmljx 于 2003/9/7 14:19:00 發(fā)布:
掉電檢測 掉電檢測是用硬件檢測的(有專門的掉電檢測芯片),當?shù)綦姾?電源下降到一定幅度后產(chǎn)生一個脈沖信號,用INT中斷監(jiān)視掉電脈沖,則可在uS級內(nèi)響應中斷,再根據(jù)寫數(shù)據(jù)時間和整機功耗確定濾波電容的容量,可保證寫入數(shù)據(jù)的可靠.根本不用0.1公里寫一次,該寫的時候?qū)?否則就放RAM中即可,EEPROM的寫次數(shù)足矣. |
|
| 16樓: | >>參與討論 |
| 作者: poor 于 2003/9/8 9:33:00 發(fā)布:
主要是想不改硬件的方法解決此問題 主要是想不改動硬件,因為樣機已經(jīng)做出來了,再者,我覺得硬件也沒有問題,因為前一任工程師的程序在上面跑得很正常,重復做了上萬次開關(guān)機試驗,也未發(fā)現(xiàn)出錯,因此我主要是從軟件上找原因了。 |
|
| 17樓: | >>參與討論 |
| 作者: wzq3 于 2003/9/9 19:06:00 發(fā)布:
0.1公里寫一次 你是 0.1公里寫一次,也就是說你的表跑到 10000公里以上就不可靠了。 以上觀點是不對的,因為不會重復寫一個地址。 |
|
| 18樓: | >>參與討論 |
| 作者: fineasy 于 2003/9/10 8:35:00 發(fā)布:
一種方法:(純軟件,有誤差,理論上可靠) 寫入數(shù)據(jù)中加上一字節(jié)的和校驗,第一次寫在一區(qū)(寫后讀校驗,以下同),公里增加后以同樣的格式寫入二區(qū),再增加后又覆蓋一區(qū),依次類推,如EEPROM壽命到后換一地方。在上下電時,讀兩區(qū)數(shù)據(jù),都合法以大為新。如發(fā)現(xiàn)讀出數(shù)據(jù)有誤,在讀另一區(qū)的數(shù)據(jù),應該是正確的。(差0。1公里也應無所謂)。另外數(shù)據(jù)區(qū)地址也要按兩個位置分別寫。 |
|
| 19樓: | >>參與討論 |
| 作者: poor 于 2003/9/10 8:52:00 發(fā)布:
今天又做了些改進 昨天加上了大家討論的掉電檢測,每次寫之前檢測我的系統(tǒng)電源,在一定的電壓上才進行寫操作(主要是為了保證有足夠的寫的時間),昨天做了上千次試驗,未發(fā)現(xiàn)問題,今天還要不斷進行,我會把最新的改進方法和實驗結(jié)果告訴大家,產(chǎn)品的可靠性就體現(xiàn)在每個細節(jié)之處,歡迎大家繼續(xù)討論。! 另澄清一下EEPROM的概念,EEPROM的擦寫次數(shù)主要決定于其片內(nèi)升壓泵的次數(shù),在擦的時候,要升壓20V,在寫的時候,要升壓到18V,所以,并非是一個單元擦寫次數(shù)到后,可以換另一個單元。所以依我現(xiàn)在的方法,我產(chǎn)品的是做不到1萬公理(按照EEPROM的下限10萬次來算),目前要做的是樣機而已,我們已找到能做到100萬公理的方法,:) |
|
| 20樓: | >>參與討論 |
| 作者: poor 于 2003/9/19 11:38:00 發(fā)布:
這幾天又進行了實驗,結(jié)果如下: 這幾天又進行實驗,一天開關(guān)幾千次,對各種改進方法進行了對比,基本上可以看出,EEPROM數(shù)據(jù)出錯主要出現(xiàn)在掉電時,在電壓較低時進行寫操作,通過在寫EEPROM之前檢測系統(tǒng)電源,當系統(tǒng)電源高于一定的值才進行寫操作,可以保證可靠性,通過三天的實驗,未發(fā)現(xiàn)出錯;但這個值一定要設(shè)置得恰到好處,設(shè)置過低起不到保護數(shù)據(jù)作用,設(shè)置過高有可能正常的電壓波動都導致不寫EEPROM。 總的來說,縮短寫的時間也是很重要的,在后來將原有的14個字節(jié),壓縮為8個字節(jié),并且在要寫一個單元之前,先讀出來看是否是要寫的值,如果是就不用寫了,以節(jié)約時間,在進行了上述措施后,系統(tǒng)出錯的概率已經(jīng)極小,可以保證可靠性。 |
|
| 21樓: | >>參與討論 |
| 作者: zpc 于 2003/9/19 12:58:00 發(fā)布:
哦是這樣呀, |
|
| 22樓: | >>參與討論 |
| 作者: zcjxjw 于 2008/3/29 21:38:24 發(fā)布:
請問m8單片機片內(nèi)存儲片能做到關(guān)電寫數(shù)據(jù)嗎 如果能行的話就是2百萬公里都夠了 |
|
| 23樓: | >>參與討論 |
| 作者: hhh 于 2008/8/19 10:07:09 發(fā)布:
為什么不用鐵電存儲器呢,隨便寫多少次都沒關(guān)系 |
|
| 24樓: | >>參與討論 |
| 作者: fdf 于 2009/8/10 11:58:21 發(fā)布:
PIC(俺用的是16f636) 單片機上電復位后第一次寫EEPROM經(jīng)常出錯(比較經(jīng)常,但不是每次),大俠們幫俺指點指點迷津,謝謝! |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |