耐久性の高いEEPROM


8

私は現在、常にアクティブになる1つのカウンターがある1つの組み込みプロジェクトに取り組んでいます。電源がダウンした場合、最後のカウンターのステータスを保存して、次回の起動時にそれを再度ロードする必要があります。そのため、カウンター値を継続的に書き込むEEPROMの使用を計画していました。しかし、EEPROMの読み取り/書き込みの耐久性が約100,000であることをどこかで読んだことがあり、24時間ごとにそのカウンタをおそらく120,000更新します。だから私はこの仕事を達成するための代替案を見つけています。同じことをするための提案をください。


4
大きなepromを使用して、レベリングを行いますか?
PlasmaHH 2018年


6
RAM +電源喪失検出を使用できますか?それが通常行われていることです。
ブライアンベッチャー

1
EEPROMはおそらく最も適切なソリューションではありません。それ以外の場合は、必要に応じて書き込み頻度を下げてみてください。また、同じアドレスではなくランダム/実行中のアドレスへの書き込みを実行することもできます(確かに、後でそれを取得できるデータ構造を考え出す必要があります。)
Eugene Sh。

2
EEPROMやフラッシュ以外のタイプのNVRAMがあります。FRAMまたはMRAMチップを検索してみてください-これらは数桁高い耐久性を持っています。
ターボJ

回答:


12

別の解決策は、不揮発性FRAMを備えたマイクロコントローラーを使用することです。FRAMは、EEPROMと同じ書き込みサイクルの制限を受けません。

TIの一部のMSP430製品はFRAMで利用できます。ここに、あなたが説明するものと同様のアプリケーションへのリンクがあります。

停電時にFRAMが状態を保存するMSP430

FRAMに関するWikipediaの記事は次のとおりです。FRAM


停電時にマルチバイトの書き込みが破壊されるため、これはまったく解決策ではありません。それとも、OPに1バイトに制限することを提案していますか?
ultimA

1
@ultimA NVSライブラリは16ビットの書き込みを保証しますが、OPは彼のカウンターの大きさを述べていません。これはほんの一例です。他の手法では、より大きなデータ構造のストレージが許可される場合があります。不揮発性ストレージ(NVS):断続的な電力損失や非同期デバイスリセットに対して不揮発性データの処理を簡単かつ堅牢にするライブラリ。FRAM不揮発性メモリを備えたMSP430デバイスは、すべてのシナリオで16ビットの書き込みを保証します。多くの場合、格納されるデータはより大きな構造です。NVSには、破損せずに最後の有効なエントリを回復することが保証されている方法でデータを保存する機能が含まれています。
ジョンD

5
FRAMは、この問題の優れたソリューションです。私はその使用を示唆する答えをここで見てうれしいです。一つもなかったら、私は同じような答えを書くつもりでした。FRAMを使用する私のソリューションは、常にデータの2つのコピーを順番に格納します。そのうちの1つだけが破損する可能性があります。また、FRAMはEEPROMよりも高速に書き込みます。データの各コピーには、それが正しいことを検証する方法が必要です。これは、単純なXOR CRCを使用して行うことも、データセットが小さい場合は、データとその補数を各データセットに格納することもできます。起動時に、保存されているデータのどのコピーが有効かを確認するだけです。
Michael Karas

ちなみに、何人かの人々は冗談でコアメモリの使用を提案していました。FRAMは、コアメモリの動作と同様に機能する最新バージョンのテクノロジです。
Michael Karas

1
適切なスペースが利用できる場合、安全に更新できる方法でカウンターを維持することは、いくつかの簡単な方法で行うことができます。1つの簡単な方法は、カウンターの2つのコピーと、どのコピーが有効かを示すインジケーターを用意することです。両方のコピーが有効な場合にのみインジケーターが変更され、いずれかのコピーコードを変更する前に、他のコピーが有効であることを示すようにインジケーターを設定します(書き込み後、両方が有効であることを示すインジケーターを設定します)。パワーダウン中に書き込まれていたものから読み取られます。
スーパーキャット2018年

11

現在のプロジェクトでこの問題が発生しています。

私がそれに対処する方法は、RAMにカウンターのライブ値を保持することです。マイクロコントローラが生の入力電源電圧が低いことを検出できるように、ハードウェアを少し追加しました。もしそうなら、それはそれがしていることを停止し、ライブカウンター値をEEPROMに保存し、そして生の電源電圧の監視を待ちます。ヒステリシスがある状態で元に戻ると、マイクロは基本的に再起動します。そうしないと、電力が低下し続けると、最終的にマイクロが停止します。次の再起動時に、カウンター値がEEPROMから読み込まれ、次の電源切断までRAMで再びライブで使用されます。

EEPROMに小さな値を書き込むのに時間がかかりません。ほとんどの場合、既存の電源システムには、電圧の低下を検出できる十分なエネルギーストレージがあり、マイクロへの電力が動作またはEEPROM書き込みしきい値を下回る前に十分な保証実行時間があります。

私の場合、唯一の追加のハードウェアは、DC電源が途中でローカルリザーバーから電荷を吸い込むのを防ぐためのショットキーダイオードと、マイクロが生の入力電圧を読み取れるように分圧器として2つの抵抗器でした。残りはファームウェアです。

マイクロの電源電圧を直接ではなく、マイクロに電力を供給する最終電源への入力の電圧を監視する必要があることに注意することが重要です。後者が低くなるまでには、遅すぎるかもしれません。うまくいけば、すべてが正常に動作している最悪のケースよりも低く、マイクロの電源がマイクロへの調整された電圧を保証するために必要な電圧範囲より上にある電圧範囲があるはずです。私の場合、microの電源は48 Vから供給される降圧レギュレータでした。そのため、通常の範囲を下回る広い範囲がありますが、microは依然として確実に動作できます。


4

古い古い古いソリューション、CMOSカウンター+リチウム電池またはRAM +リチウム電池。

蓄電要素の電源は、通常の電源が利用できる場合はそれから、そうでない場合はバッテリーから供給されます。

スリープ状態にある最新のマイクロの多くは、非常に低い電流供給で状態を維持します。したがって、この手法をパワーダウン検出で使用してスリープ状態にしてから、バッテリーを使用して、メイン電源がオフになっているスリープ期間中に状態を維持できます。


2
さらに古いソリューションは、磁気コアメモリです。
glen_geek

同じ答えを出したかっただけです:)これがdatasheets.maximintegrated.com/en/ds/DS1307.pdf
匿名の

1
@glen_geek私もそれを使ったことを覚えていません。:)
RoyC

4

Microchipには一連のI 2 C "EERAM"パーツがあり、SRAMにデータを保存し、停電時にデータをEEPROMに(コンデンサーに保存されたエネルギーを使用して)書き込み、電源が回復したときにロードすることができます。これは、アプリケーションに最適なようです。

これらの部品の代表的な例は47L04です。


3

別のソリューション。

パワーダウンを検出し、スーパーキャップまたは非スーパーキャップを使用して、数ミリ秒間パワーアップを維持します。この時間を使用して、カウンター値をEPROMに書き込みます。パワーダウン時にのみEPROMに書き込みます。EPROMサイクル数=パワーダウンサイクル数なし。


3

FM24C04BなどのFRAMチップを使用します。書き込み耐久性が非常に高く、不揮発性です。

https://www.mouser.com/ds/2/100/001-84446_FM24C04B_4_KBIT_512_X_8_SERIAL_I2C_F-RAM-477782.pdf

バッテリーでバックアップされたSRAM(NVRAM)モジュールを使用することもできます。例:M48Z02-150PC1

https://www.mouser.com/ds/2/389/m48z02-955115.pdf


他の地域についてはよくわかりませんが、ここ英国では、FRAMの部品については、デジキーがマウサーよりはるかに安価です。そして、いつものように、信頼できるサプライヤーを見つけることができる限り(または、小規模な実行のみが必要で、信頼できない可能性のあるサプライヤーと取引する可能性がある場合)、大幅に改善できる中国のサプライヤーがたくさんあります。両方の価格。
ジュール

1

「ds1307 RTC」で行くことにしました。54バイトのパワーバックSRAMがあるためです。これにより、無限の読み取り/書き込みサイクルが可能になります。


0

組み込みプロジェクトにNICがある場合は、カウンターをリモートコンピューター/サーバーに送信します。24時間で120,000回の反復は0.72秒で約1回の反復であり、ネットワークトラフィックには問題ないはずです。

サーバーは常にカウンターの最後の値を保存します。サーバーの値を更新するには有効なパケットを発行する必要があるため、停電時にカウンター値が破損することはありません。ただし、常時接続が必要です。または、特別なタイムアウトプロトコルを設計する必要があります。さらに、ボーナスとして、必要に応じてデバイスをリモートから制御できるようになります。


1
フレームカウンターを実装してリプレイアタックを防止し、プロトコルのコンプライアンスを保証することが要件である場合、どのように値をデバイスに送信しますか?

0

A)100 µF(またはそれ以上)のコンデンサを使用して、オフ時間中にカウンタをパワーアップします。または、カウンター値を保持するために必要なロジック。

B)磁気コアメモリを使用します。設定が少し難しいかもしれません。

C)モーター制御のポテンショメーター(サーボのような)を作成します。ある時点で、カウンターがオーバーフローしますよね?それを360度にマッピングします。次に、フィードバックループを作成して、ポテンショメーターの値をデジタルで設定し、デジタルで読み取ることができるようにします。

D)カウンター値を1分ごとにサーバーに送信し、オフタイム中はサーバーに値を記憶させます。次に、電源が回復したら、カウンター値を取得します。


1
それでもコアメモリを購入できますか?
BeB00

@ BeB00わからない、それは私の時間の前です。しかし、トロイダルコイルのようにいくつかのワイヤーが巻き付けられた2 mmのネジ付きロッドには、六角ナットを使用します。-次に、コアメモリで一般的に使用される回路に戻ります。コアのヒステリシスが逆になってエネルギーを放出するとき、ADCだけで十分に読み取れると思います。
Harry Svensson

つまり...実験としては楽しいかもしれませんが、作業に必要なシステムでは絶対に使用しません
BeB00

@ BeB00 ebay.com/bhp/vintage-core-memoryまあ、誰かが高品質のものを望んでいる場合に備えて存在しているようです。
Harry Svensson、

:P 60年間保証されているか
わかり
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.