0.4MB - Fujitsu

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