

FeRAMをもっと知る
EEPROMインターフェース別コマンド完全ガイド:I²C・SPI・Microwireの比較と実装
I²C、SPI、MicrowireそれぞれのEEPROMインターフェースにおける通信方式やコマンドの違いを比較し、設計時の注意点やベストプラクティスを解説しています。最適なEEPROM選定に役立ちます。
はじめに
EEPROM(Electrically Erasable Programmable Read-Only Memory)は、電気的にデータの消去および書き換えが可能な不揮発性メモリであり、組み込みシステムや各種電子機器で広く使用されています。電源が遮断されてもデータを保持できるという特性により、設定値や履歴データの保存に適しています。EEPROMの通信には主にI²C、SPI、Microwireといったインターフェースが用いられ、それぞれに対応したコマンドセットが定義されています。本記事では、これらインターフェースごとの代表的なコマンドとその実装方法、違いについて詳しく解説し、設計エンジニアが最適なEEPROM選定と設計を行うための指針を提供します。
EEPROMの基本概要と用途
EEPROMはROMの一種で、ユーザーが自由にデータを書き換えられる点が特徴です。フラッシュメモリと似ていますが、書き込み単位がバイト単位であるため、少量のデータを頻繁に書き換える用途に適しています。一般的な用途としては、マイコンの初期設定情報、センサの較正データ、通信機器のログデータ保持などがあります。また、EEPROMは比較的小容量(数キロビット〜数メガビット)であり、低消費電力、長寿命といった特性も備えています。
主なインターフェースの種類(I²C、SPI、Microwire)
以下は代表的なインターフェースの比較です。
インターフェース | 信号線 | 通信速度 | 主な用途 |
I²C | 2本(SCL/SDA) | ~400kbps | 小容量メモリ、センサ通信 |
SPI | 4本(SCK等) | ~10Mbps以上 | 高速通信、データロガー |
Microwire | 3~4本(SK等) | ~1Mbps | レガシー制御機器 |
I²Cインターフェース
I²Cは省配線で複数デバイス接続が可能な、シンプルな同期通信方式です。EEPROMとの接続では、アドレス指定とデータの読み書きが分かれており、特に小規模システムに適しています。
通信プロトコルの概要
- スタートビット
- スレーブアドレス送信 + R/Wビット
- ACK/NACK応答確認
- メモリアドレス指定
- データ送受信
- ストップビット
このようなシーケンスで1回の通信が完了します。
主なコマンドとその機能
コマンド種別 | 概要 |
ランダムリード | 任意アドレスを指定して1バイト読み出し |
シーケンシャルリード | 連続したアドレスからの複数バイト読み出し |
ページライト | ページ単位で複数バイトを書き込み |
実装例と注意点
- 書き込み後は必ず内部書き込み時間(tWR)を考慮
- ページ境界をまたぐ書き込みには制限がある
- 起動直後はデバイスが反応しない場合があるため初期化処理が必要
SPIインターフェース
SPIは高速な全二重通信が可能で、ステータス確認や書き込み制御など高度な操作が可能です。大容量や高速アクセス用途に向いています。
通信プロトコルの概要
- CS信号をLOWで通信開始
- コマンド(8bit)
- アドレス(デバイスにより16〜24bit)
- データの送受信
主なコマンドとその機能
コマンド名 | オペコード | 説明 |
WREN | 0x06 | 書き込み有効化 |
WRDI | 0x04 | 書き込み無効化 |
READ | 0x03 | データ読み出し |
WRITE | 0x02 | データ書き込み |
RDSR | 0x05 | ステータスレジスタ読み出し(WIP確認等) |
WRSR | 0x01 | ステータスレジスタへの書き込み |
実装例と注意点
- 書き込み前に必ずWRENを実行
- 書き込み後はRDSRで完了確認(WIPビット)
- ページサイズ制限やCS信号制御に注意
Microwireインターフェース
Microwireはシンプルな半二重通信で、古い制御機器などで多く使われています。EEPROMとの直接的な制御が可能です。
通信プロトコルの概要
- スタートビット
- オペコード(2bit)+ アドレス
- データ(読み書き対象)
- CS信号により通信開始/終了
主なコマンドとその機能
コマンド名 | 機能概要 |
READ | アドレス指定で1バイト読み出し |
WRITE | アドレス指定で1バイト書き込み(WEN後に有効) |
WEN | 書き込み操作の有効化 |
WDS | 書き込み操作の無効化 |
WRAL | 全アドレスに同一データを書き込み |
ERAL | 全アドレスのデータを消去 |
実装例と注意点
- GPIOでソフト制御(ビットバンギング)する構成が一般的
- SKのトグル制御、CSの管理が重要
- 書き込み中の割込みや電源断に注意が必要
インターフェース別コマンド比較表
機能項目 | I²C | SPI | Microwire |
読み出し | ランダム/シーケンシャル | READ | READ |
書き込み | ページ/バイトライト | WRITE(WREN後) | WRITE(WEN後) |
ステータス確認 | なし | RDSR | なし |
書き込み保護 | なし | WREN / WRDI | WEN / WDS |
全書き込み/消去 | 対応なし | 非対応 | WRAL / ERAL |
実装時のベストプラクティス
デバイス選定のポイント
EEPROMの採用にあたっては、容量、耐久性、電源電圧、パッケージ形状、動作温度範囲といった複数のパラメータを総合的に評価することが重要です。特に容量はシステムで保持すべきデータ量や保存対象の種類(設定値、ログ、ユーザー情報等)に応じて適切に選定する必要があります。また、書き換え頻度が高い用途では、EEPROMの書き換え寿命(一般的に10万~100万回程度)が制約になるため、より高耐久なFRAM(FeRAM)などの代替技術を検討することも推奨されます。さらに、電源電圧範囲やインターフェース電圧レベルがマイコンと合致しているかの確認も不可欠です。パッケージについても、SOP、TSSOP、DFNなど用途や実装環境に応じて選びます。動作温度範囲は産業機器や車載用途では-40℃〜125℃をカバーする製品が求められる場合もあるため、信頼性評価も含めた選定が求められます。
通信エラーの対処法
EEPROMとの通信では、I²CやSPIなどのインターフェースに固有の通信エラーが発生する可能性があるため、ソフトウェア側でのエラー処理設計が極めて重要です。I²CではACK/NACK応答の監視、SPIではWIP(Write In Progress)ビットのポーリングにより通信状態を判断し、必要に応じて再試行ロジックを実装することで安定性を向上できます。特に、書き込み完了待機処理を適切に設けないと、データ破損や誤動作を引き起こす原因となります。さらに、通信中に異常が発生した場合のために、I²Cではバスの再初期化(バスリセット)、SPIではCS信号の再制御が有効です。データの整合性を確保するために、チェックサムやCRCなどの検証コードを用いたエラーチェック機構も推奨されます。これにより、通信エラーやEEPROMの経年劣化に伴う誤書き込みを早期に検出し、堅牢なシステム動作を実現できます。
電源管理とデータ保持の考慮点
EEPROMを安全に使用するには、電源管理とデータ保持に関する配慮も不可欠です。特に書き込み処理中に電源が遮断されると、データ破損やEEPROMの内容不整合が発生する可能性があります。このリスクを軽減するには、書き込み中の電圧低下を検知する電源監視ICの導入や、大容量コンデンサを用いた電源保持設計が効果的です。また、書き込み寿命の管理も設計時の重要課題です。頻繁な書き換えを伴う用途では、同一アドレスへの集中書き込みを避けるため、リングバッファ構造やアドレスローテーション技術を導入することで寿命を延命できます。加えて、データの書き換え頻度そのものを抑制する制御ロジック(一定時間内の書き込み回数制限など)をソフトウェア側で実装することで、EEPROMの信頼性と製品全体の長期安定動作を確保することが可能です。
まとめ
EEPROMインターフェースにはそれぞれ明確な特性と利点があります。I²Cは配線の少なさと拡張性、SPIは高速性と柔軟性、Microwireはレガシー機器への適応性に強みを持ちます。設計目的に応じて最適なインターフェースとEEPROM製品を選定し、適切な制御を行うことで、信頼性と耐久性に優れた組み込みシステムを構築することができます。