TOP > 電子部品 > メモリ > EEPROM

EEPROM

(2017.8.29 作成)

(2017.10.21 修正)

 このページでは不揮発性メモリの一種であるEEPROMについて紹介したいと思います。

 詳細な使い方や動作原理については他のサイトを参照していただくとして、ここでは個人が電子工作で楽しむという観点でEEPROMについて書いてみたいと思います。

 さて、マイコンを使った工作をしているときにデータを保存したい場合は多々あると思います。少量であればマイコンの内蔵フラッシュに保存するのが良いのですが、STM32F103C8T6基板のようなメモリの少ないマイコンを使用する場合には外部に保存先を確保したい時があります。

 この際の候補としてはフラッシュ(SDカードやUSB)とEEPROMが選択肢として挙げられますが、EEPROMの方が比較的容量は小さいものの安価、かつ簡単なので使いやすいと思います。

 そんなEEPROMですが、いくつかのメーカーから販売されています。それぞれ何となく使い方が似ているのですが、微妙に違う部分があったりします。また同じメーカーでも型番違いでアクセス方法が異なっていたりするので必ずデータシートを確認する必要があります。

 以下では何となく似ている点についてまとめてみました。なおここではI2C接続のEEPROMを前提としています。

ピン配

 右図はありがちなEEPROMのピン配です。

 A0~A2ピンをGNDかVCCに接続することで2^3=8通りのI2Cアドレスを指定できます。

 またWPピンは書き込み保護ピンです。VCCに接続することで書き込み禁止になります。

書き込み時間

 書き込みに最大で5ms程度かかります。人にとっては十分に早いのですが、マイコンにとっては長い待ち時間です。

 書き込んでいる間はI2Cアクセスに対してACKを返さなくなるので、書き込みコマンドを発行後はアドレスを送信してACKが戻ってくるまでポーリングを行うことでいつ終了したか判定できます。

 この確認を行わず、次々と書き込みを行うと一部のデータが書かれていないなどといったトラブルが発生します。

ページ

 1バイト単位で読み書きを行うことはできるのですが、上述の通り1回の書き込みに5ms待ちが発生します。なるべく高速に書き込むには連続してデータを転送し、まとめて書き込み動作を行った方が大幅に時間節約ができます。

 しかしこの際ページを意識する必要があり、ページを跨がないように配慮する必要があります。

書き込み寿命

 各社少なくとも10万回以上の書き込み寿命は保証しているようです。実際は数百万回大丈夫のようですが、有限の寿命です。

 10万回といえば事実上無限の寿命のように感じるのですが、例えばプログラムのミスなどで同一アドレスにforループで書き込み続けるとあっという間に寿命になるので要注意です。

 書き込み寿命が問題となる場合はSRAMの利用を検討するのも手だと思います。

アクセスコマンド

 実際のアクセスについてはコントロールコマンドの有無や、アドレス指定が1バイト/2バイトなど、さまざまなので必ずデータシートを確認するようにしましょう。

 

 I2C接続の安価な256kbit = 32kByteのEEPROM (AT24C256)について解説とコードをこちらに載せていますので、具体例として参考にしてみてください。