AN501-00002-2v0-J Memory FRAM 64 K (8 K × 8) Bit I2C MB85RC64 I2C FRAM と FM3 マイクロコントローラの接続例 AN501-00002-2v0-J 注意事項 ・本資料の記載内容は, 予告なしに変更することがありますので, 製品のご購入やご使用な どのご用命の際は、当社営業窓口にご確認ください。 ・本資料に記載された動作概要や応用回路例などの情報は, 半導体デバイスの標準的な動作 や使い方を示したもので, 実際に使用する機器での動作を保証するものではありません。 したがって, お客様の機器の設計においてこれらを使用する場合は、お客様の責任におい て行ってください。これらの使用に起因する損害などについては, 当社はその責任を負い ません。 ・本資料は、本資料に記載された製品および動作概要・回路図を含む技術情報について, 当 社もしくは第三者の特許権, 著作権等の知的財産権やその他の権利の使用権または実施 権を許諾するものではありません。また, これらの使用について, 第三者の知的財産権や その他の権利の実施ができることの保証を行うものではありません。したがって, これら の使用に起因する第三者の知的財産権やその他の権利の侵害などについて, 当社はその 責任を負いません。 ・本資料に記載された製品は, 通常の産業用, 一般事務用, パーソナル用, 家庭用などの一 般的用途に使用されることを意図して設計・製造されています。極めて高度な安全性が 要求され, 仮に当該安全性が確保されない場合,直接生命・身体に対する重大な危険性を 伴う用途(原子力施設における核反応制御, 航空機自動飛行制御, 航空交通管制, 大量輸 送システムにおける運行制御, 生命維持のための医療機器, 兵器システムにおけるミサ イル発射制御など), または極めて高い信頼性が要求される用途(海底中継器, 宇宙衛星 など)に使用されるよう設計・製造されたものではありません。したがって,これらの用 途へのご使用をお考えのお客様は, 必ず事前に当社営業窓口までご相談ください。ご相談 なく使用されたことにより発生した損害などについては, 当社は責任を負いません。 ・半導体デバイスには、ある確率で故障や誤動作が発生します。本資料に記載の製品を含 め当社半導体デバイスをご使用いただく場合は、当社半導体デバイスに故障や誤動作が 発生した場合も, 結果的に人身事故, 火災事故, 社会的な損害などを生じさせないよう, お客様の責任において, 装置の冗長設計, 延焼対策設計, 過電流防止対策設計, 誤動作防 止設計などの安全設計をお願いします。 ・本資料に記載された製品および技術情報を輸出または非居住者に提供する場合は, 外国為 替及び外国貿易法および米国輸出管理関連法規などの規制をご確認の上, 必要な手続き をおとりください。 ・本資料に記載されている社名および製品名などの固有名詞は, 各社の商標または登録商標 です。 Copyright© 2012 FUJITSU SEMICONDUCTOR LIMITED all rights reserved 1 AN501-00002-2v0-J 改版履歴 版数 日付 内容 1.0 版 2012.07.31 新規作成 2.0 版 2012.12.21 目次、誤記の修正 2 AN501-00002-2v0-J 目次 注意事項 ................................................................................................................................. 1 改版履歴 ................................................................................................................................. 2 目次 ......................................................................................................................................... 3 対象製品 ................................................................................................................................. 4 1. はじめに .......................................................................................................................... 5 2. I2C インタフェースの特徴 .............................................................................................. 6 3. MB85RC64 の特徴 .......................................................................................................... 7 4. サンプルプログラム ........................................................................................................ 8 4.1 ハードウェア ........................................................................................................... 8 4.1.1 5. 接続例 ...................................................................................................... 8 4.2 ソフトウェア ........................................................................................................... 9 4.3 サンプルプログラムの構成 ................................................................................... 10 4.3.1 基本動作 ................................................................................................ 10 4.3.2 FRAM ドライバ ...................................................................................... 11 4.3.3 FRAM ドライバ関数解説 ...................................................................... 12 その他の情報 ................................................................................................................. 17 3 AN501-00002-2v0-J 対象製品 本アプリケーションノートに記載されている内容の対象製品は、下記の通りです。 品種型格 MB85RC64 2 64 K (8 K × 8) Bit I C FRAM 4 AN501-00002-2v0-J 1. はじめに このアプリケーションノートでは、MB9B500 シリーズの I2C インタフェースを使用して FRAM と通信する方法、および通信を行うサンプルプログラムについて記載します。FRAM は MB85RC64 を使用します。 5 AN501-00002-2v0-J 2. I2Cインタフェースの特徴 I2C インタフェースは、シリアルデータライン(SDA)とシリアルデータクロック(SCL)の 2 つの信号線のみで構成されたデータバスです。データバスに接続される各デバイスは、そ れぞれ固有のアドレス指定が可能で、またデバイス間ではマスターとスレーブという関係 が常に成立しています。 8 ビット双方向シリアルデータ転送を、標準モードでは最高 100kbit/s、ファーストモード では最高 400kbit/s、ハイスピードモードでは最高 3.4Mbit/s で行うことが可能です。 当社の FRAM は最高 1Mbit/s まで対応しています。 なお、I2C インタフェースの詳細については、仕様書や専門書等を参照してください。 6 AN501-00002-2v0-J 3. MB85RC64 の特徴 MB85RC64 は、2 線式シリアルインタフェース(世界標準の I2C BUS 準拠)を搭載した 8,192 ワード×8 ビット構成の FRAM(Ferroelectric Random Access Memory:強誘電体ラン ダムアクセスメモリ)です。 I2C インタフェースを搭載した MCU などから通信が可能になっております。 FRAM は、Flash メモリや EEPROM に比べて高速に書き込みが完了しますので、書込み完 了待ちシーケンスは必要ありません。 以下に、端子配置図と各端子名称を示します。 図 3-1:MB85RC64 端子配置図 A0,A1,A2 デバイスアドレス VSS グランド SDA シリアルデータ入出力 SCL シリアルクロック WP ライトプロテクト VDD 電源電圧 表 3-1:端子名称と機能 7 AN501-00002-2v0-J 4. サンプルプログラム 4.1 4.1.1 ハードウェア 接続例 以下に MB9BF506R と MB85RC64 を接続し、 I2C 通信を行う回路図例を示します。なお、 サンプルプログラムはこの接続例をもとに作成しております。 図 4-1:MB9BF506R と MB85RC64 との接続例 8 AN501-00002-2v0-J 4.2 ソフトウェア MB9BF506R と MB85RC64 を接続し、通信を行うサンプルプログラムには以下の機能が 実装されています。 MB9BF506R の I2C の機能を利用し、MB85RC64 の先頭アドレスから指定サイズのデータ を Page Write 機能で書き込みした後、先頭アドレスから書き込みデータと同じサイズのデ ータを Sequential Read 機能で読み出します。書き込みデータと読み出しデータとを比較し て同じ値であることを確認します。 本サンプルプログラムは図 4‐1 の接続を前提に作成しております。端子接続は以下の通り になっています。 MB9BF506R ピン番号 MB9BF506R 端子名 MB85RC64 端子名 83 MCSX4 WP 98 SOT4_2 SDA 99 SCK4_2 SCL 表 4-1:サンプルプログラムの MB9BF506R と MB85RC64 の端子接続 9 AN501-00002-2v0-J 4.3 4.3.1 サンプルプログラムの構成 基本動作 本サンプルプログラムでは、MB85RC64 の先頭アドレスから指定サイズのデータを書き 込み、続いて MB85RC64 の先頭アドレスから書き込みデータと同じサイズのデータを読み 出し、双方のデータを比較して、エラーの有無を確認しています。 10 AN501-00002-2v0-J 4.3.2 FRAM ドライバ MB9BF506R の I2C 機能を利用して MB85RC64 と通信するサンプルプログラム内のドラ イバ関数について解説します。本ソースの関数群は、すべてグローバル関数になっており、 使用する際は fram_i2c.h をインクルードして使用します。 図 4-2:サンプルプログラムのフローチャート 11 AN501-00002-2v0-J 4.3.3 FRAM ドライバ関数解説 関数名 fram_i2c_init 引数 void 戻り値 int 紹介 FRAM との通信に必要な I2C 機能を初期化します。 初期化に失敗すると ERROR(-1)を返し、成功すると SUCCESS(0)を返します 関数名 fram_i2c_uninit 引数 void 戻り値 int 紹介 I2C 機能の初期化を解除します。 初期化解除に失敗すると ERROR(-1)を返し、成功すると SUCCESS(0)を返しま す。 12 AN501-00002-2v0-J 関数名 fram_i2c_write 引数 unsigned short addr, unsigned char* data, int32_t size 戻り値 int 紹介 I2C を利用して FRAM に対して Write コマンドを実行します。 引数 addr は FRAM への書き込みアドレス。引数 data は書き込み元ポインタ。引 数 size は書き込みバイトサイズ。 戻り値はストップコンディション発効後 SUCCESS(0)、引数 addr の値が FRAM 領域外の場合と size が 0 または addr との加算値が FRAM 領域外の場合または引 数 data が NULL の場合は ERROR(-1)を返します。 なお、戻り値が ERROR になる場合書き込みは実行せずに呼び出し元に戻りま す。 使用例 1. unsigned short addr; 2. unsigned char data[3]; 3. int32_t size; 4. int ret; 5. addr = 0x0010; 6. data[0] = 0x00; data[1] = 0x01; data[2] = 0x02; 7. size = 3; 8. re t= fram_i2c_write(addr,data,size); fram_i2c_write は、指定したアドレスから指定したサイズのデータを書き込むことができま す。 上記使用例では宣言した変数 addr には書き込みアドレスを代入、data には書き込みデータ を代入、size には書き込みバイト数を代入し、8.のように引数に指定して関数を呼び出しま す。 上記の場合、アドレス 0x0010 に 0x00、アドレス 0x0011 に 0x01、アドレス 0x0012 に 0x02 が書き込まれます。 また、size に 0x000 を代入、または addr と size の合計が 0x2000 を超えた場合は書き込み を実行せずにエラーを返します。 13 AN501-00002-2v0-J 図 4-4:関数 fram_i2c_write のフローチャート 14 AN501-00002-2v0-J 関数名 fram_i2c_read 引数 unsigned short addr, unsigned char* data, int32_t size 戻り値 int 紹介 I2C を利用して FRAM に対して Read コマンドを実行します。 引数 addr は FRAM への読み出しアドレス。引数 data は読み出し先のポインタ。 引数 size は読み出しバイトサイズ。 戻り値はストップコンディション発効後 SUCCESS(0)、引数 addr の値が FRAM 領域外の場合と size が 0 または addr との加算値が FRAM 領域外の場合または引 数 data が NULL の場合は ERROR(-1)を返します。 なお、戻り値が ERROR になる場合、読み出しを実行せずに呼び出し元に戻りま す。 使用例 1. unsigned short addr; 2. unsigned char data[3]; 3. int32_t size; 4. int ret; 5. addr = 0x0010; 6. data[0] = 0x00; data[1] = 0x00; data[2] = 0x00; 7. size = 3; 8. ret = fram_i2c_read(addr,data,size); fram_i2c_read はストップコンディションを発行するまで連続で Read することができます。 上記使用例では宣言した変数 addr には読み出し先頭アドレスを代入、size には読み出しバ イト数を代入し、8.のように引数に指定して関数を呼び出します。 上記の場合、data[0]にアドレス 0x0010、data[1]にアドレス 0x0011、data[2]にアドレス 0x0012 の読み出し値が格納されます。 また、size に 0x000 を代入、または addr と size の合計が 0x2000 を超えた場合は読み出し を実行せずにエラーを返します。 15 AN501-00002-2v0-J 図 4-5:関数 fram_i2c_read のフローチャート 16 AN501-00002-2v0-J 5. その他の情報 MB85RC64 及び MB9BF506 に関する詳細情報および富士通 FRAM 製品、マイクロコン トローラ製品に関するその他の情報については, 下記の Web サイトをご覧ください。 http://jp.fujitsu.com/fsl/ 17