マイコンの基礎 - EEPROM
概要
EEPROMのデータアクセス方式は、SPI、I2C、マイクロワイヤ、1-Wire等があるが、
マイコンの周辺機能としてSPIとI2Cが搭載されている製品が多いため、この2種類がよく使用されている。
ここでは、STTマイクロ社のEEPROMとSTM8Lシリーズのマイコンとの接続を例に記載する。
I2Cは、プルアップ抵抗の双方向NMOSオープンドレインの信号線が2本のみ存在する。
SPIの信号線はSCK、MISO、MOSI、SSの4本で構成される。
下図に、I2Cをバス規格として使用しているM24xxxシリーズとM95xxxシリーズを示す。
なお、端子名とSPIの信号名が異なるため、信号線にSPIの信号名を記述している。
I2CとSPIのいずれも、基本的な通信制御はマイコンのハードウェアが行うが、ファームウェアも必要である。
ファームウェアの詳細は、各マイコンのマニュアルに記載されているため、マニュアルの説明にしたがうこと。
マイコンとEEPROMのインタフェース
マイコンとEEPROMのデータアクセス方式は、シリアルバス方法とパラレルバス方式の2種類がある。
一般的には、シリアルバス方式が使用されている。
- パラレルバス方式
- データ信号に8ビット、アドレス信号に数ビット(メモリ容量に依存)等の多数の信号線が必要である。
- シリアルバス方式
- よく使用されているバス規格として、SPI、I2C、マイクロワイヤ、1-Wire等がある。
- ほとんどのマイコンにはSPI、I2Cが搭載されているため、インタフェースには、この2つのいずれかが使用されている。
送受信を行う信号の種類は、アドレス、データ、オペコードである。
オペコードの種類は、書き込み許可 / 不許可、レジスタの読み込み / 書き込み、データの読み込み / 書き込み等であり、各EEPROMでコードが決まっている。
ユーザは、これらの信号をマイコンのファームウェアで制御する。
I2Cの場合
I2Cとは、フィリップス社が開発した通信プロトコルのシリアルバスである。
各ノードにはアドレスが割り当てられており、7ビットのアドレス(128種類)で指定する。
16個の予約アドレスがあるので、これらを除いた最大112個のノードを1つのバス上に接続することができる。
一般的に、通信プロトコルはフィリップス社のI2Cに準拠しているが、各マイコンで使用方法が若干異なる。
ここでは、例として、STマイクロ社のSTM8LシリーズのI2C機能を記載する。
下図に、STM8LシリーズにおけるI2Cの通信の流れを示す。
まず、マスター側がクロック信号(SCL)を生成する。
データ転送は、常にスタートコンディションで始まり、ストップコンディションで終わる。
スタートコンディションとストップコンディションは、マスター側のファームウェアによって生成される。
マイコンがEEPROMにアクセスする場合、マイコンがマスター側になる。
スレーブモードでは、自己アドレスと同報(General Call)アドレスを認識できる。
データおよびアドレスは、MSBファーストの8ビット(1バイト)として転送される。
スタートコンディションの後に続く最初のバイトにアドレスが含まれており、アドレスは、常にマスターから送信される。
8クロックサイクルのバイト転送後、9番目のクロックパルスが続く。
その間に、受信側は送信側に確認応答ビット(ACK)を送信する必要がある。
下図に、マイコン内部のI2Cモジュールの構造を記載する。(SDA : データ信号、SCL : クロック)
内部にデータシフトレジスタを持ち、データを1ビットずつシフトして出力または入力する。
ユーザは、送受信用データにデータレジスタを介してアクセスする。
I2Cモジュールには、アドレスやPEC値を確認するための比較器が存在する。
PECとは、パケットエラーチェックのことであり、データが正常に通信されたかどうかを確認するための付加情報である。
通信速度はSCLの周波数で決まり、標準モードは100[kbps]であるが、STM8Lシリーズには高速モードがあるため、400[kbps]の通信ができる。
転送シーケンスは、ユーザがファームウェアで制御する必要がある。
STM8Lシリーズでは、下図に示すようなシーケンスの説明図がマニュアルにあるので、
ユーザはマニュアルの手順にしたがって、各EEPROMで規定されたアドレス、データ、オペコードを通信するファームウェアを設計する。