メディア
連載
» 2015年02月16日 09時00分 公開

Q&Aで学ぶマイコン講座(11):マイコンとEEPROMを接続する方法を教えて (2/3)

[菅井賢(STマイクロエレクトロニクス),EDN Japan]

マイコンとEEPROMのインタフェース

 マイコンとEEPROMのデータ・アクセス方式は、シリアルバス方法とパラレルバス方式の2種類あります。パラレルバスの場合、データ信号に8ビット、アドレス信号に数ビット(メモリ容量に依存)などの多数の信号線が必要なので、一般的にはシリアルバス方式が使われています。シリアルバスでよく使われているバス規格としては、SPI、I2C、マイクロワイヤ、1-Wireなどがあります。SPI、I2Cは最近のほとんどのマイコンに周辺機能として搭載されていますので、通常マイコンとのインタフェースには、この2つのどちらかが使われています。

 通信でやりとりする信号は、アドレスとデータとオペコードです。オペコードは、書き込みイネーブル/ディセーブル、レジスタの読み出し/書き込み、データの読み出し/書き込みなどで、各EEPROMでコードが決まっています。ユーザーはこれらの信号をマイコンのソフトウェアで制御します。

I2Cの場合

 I2Cはフィリップスが開発した通信プロトコル(通信手順)のシリアルバスです。各ノードにはアドレスが割り当てられており、7ビットのアドレスで指定されます。16個の予約アドレスがあるので、これらを除いた最大112のノードを1つのバス上につなげることができます。

 通信プロトコルは基本的にフィリップスのI2Cに準拠していますが、各マイコンで使い方が若干異なります。

 ここでは、STマイクロエレクトロニクスのSTM8LのI2C機能(図3/図4)を例にとって説明します。

 まず、通信の流れを説明します(図3)。

図3 STM8LシリーズのI2Cの通信フォーマット (クリックで拡大)

 マスター側がクロック信号(SCL)を生成します。データ転送は、常にスタートコンディションで始まり、ストップコンディションで終わります。

 スタートコンディションとストップコンディションは、マスター側のソフトウェアによって生成されます。マイコンがEEPROMにアクセスする場合は、マイコンがマスター側になります。スレーブモードでは、自己アドレスと同報(General call)アドレスを認識できます。データとアドレスは、MSBファーストの8ビット(1バイト)として転送されます。スタートコンディションの後に続く最初のバイトにアドレスが含まれています。アドレスは、常にマスターから送信されます。8クロックサイクルのバイト転送の後には9番目のクロックパルスが続きます。その間に、受信側は送信側に確認応答ビット(ACK)を送信する必要があります。

 次に、マイコンの中のI2Cモジュールの構造を説明します(図4)。

図4 STM8LシリーズのI2Cのブロック図 (クリックで拡大)

 SDAはデータ信号で、SCLはクロックです。内部にデータシフトレジスタを持っていて、データを1ビットずつシフトして出力または入力します。ユーザーは、送受信用データにデータレジスタを介してアクセスします。アドレスやPEC値をチェックするために比較器が入っています。PECとはパケット・エラー・チェック(Packet Error Check)のことで、データが正常に通信されたかどうかをチェックするための付加情報です。

 通信速度はSCLの周波数で決まります。標準モードは100kビット/秒ですが、STM8Lには高速モードがあり、400kビット/秒の通信が可能です。

 転送シーケンスは、ユーザーがソフトウェア制御する必要があります。STM8Lでは図5に示したようなシーケンスの説明図がマニュアルにありますので、これに従ってソフトウェアを作れば通信ができます。

図5 STM8LシリーズのI2Cの通信手順例。マニュアルから抜粋 (クリックで拡大)

 ユーザーはI2Cの手順に従って、各EEPROMで規定されたアドレス、データ、オペコード(書き込みイネーブル/ディセーブル、レジスタの読み出し/書き込み、データの読み出し/書き込みなど)を通信します。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSフィード

公式SNS

EDN 海外ネットワーク

All material on this site Copyright © ITmedia, Inc. All Rights Reserved.
This site contains articles under license from AspenCore LLC.