製品に関する情報が記載されております。 - Cypress Semiconductor

本ドキュメントはCypress (サイプレス) 製品に関する情報が記載されております。
AN706-00020-2v0-J
FM3 Family
32-BIT MICROCONTROLLER
MB9A100/MB9B100/MB9B300/MB9B400/MB9B500 series
A/D コンバータ FIFO を利用したスキャンモードの
設定/利用方法
TM
ARM and Cortex-M3 are the trademarks of ARM Limited in the EU and other countries.
AN706-00020-2v0-J
注意事項

本資料の記載内容は、予告なしに変更することがありますので、ご用命の際は営業部
門にご確認ください。

本資料に記載された動作概要や応用回路例は、半導体デバイスの標準的な動作や使い
方を示したもので、実際に使用する機器での動作を保証するものではありません。し
たがいまして、これらを使用するにあたってはお客様の責任において機器の設計を行
ってください。これらの使用に起因する損害などについては、当社はその責任を負い
ません。

本資料に記載された動作概要・回路図を含む技術情報は、当社もしくは第三者の特許
権、著作権等の知的財産権やその他の権利の使用権または実施権の許諾を意味するも
のではありません。また、これらの使用について、第三者の知的財産権やその他の権
利の実施ができることの保証を行うものではありません。したがって、これらの使用
に起因する第三者の知的財産権やその他の権利の侵害について、当社はその責任を負
いません。

本資料に記載された製品は、通常の産業用、一般事務用、パーソナル用、家庭用など
の一般的用途に使用されることを意図して設計・製造されています。極めて高度な安
全性が要求され、仮に当該安全性が確保されない場合、社会的に重大な影響を与えか
つ直接生命・身体に対する重大な危険性を伴う用途(原子力施設における核反応制御、
航空機自動飛行制御、航空交通管制、大量輸送システムにおける運行制御、生命維持
のための医療機器、兵器システムにおけるミサイル発射制御をいう)、ならびに極め
て高い信頼性が要求される用途(海底中継器、宇宙衛星をいう)に使用されるよう設
計・製造されたものではありません。したがって、これらの用途にご使用をお考えの
お客様は、必ず事前に営業部門までご相談ください。ご相談なく使用されたことによ
り発生した損害などについては、責任を負いかねますのでご了承ください。

半導体デバイスはある確率で故障が発生します。当社半導体デバイスが故障しても、
結果的に人身事故、火災事故、社会的な損害を生じさせないよう、お客様は、装置の
冗長設計、延焼対策設計、過電流防止対策設計、誤動作防止設計などの安全設計をお
願いします。

本資料に記載された製品を輸出または提供する場合は、外国為替及び外国貿易法およ
び米国輸出管理関連法規等の規制をご確認の上、必要な手続きをおとりください。

本書に記載されている社名および製品名などの固有名詞は、各社の商標または登録商
標です。
Copyright© 2010-2011 FUJITSU SEMICONDUCTOR LIMITED all rights reserved
1
AN706-00020-2v0-J
改版履歴
版数
日付
内容
1.0 版
2010/11/4
新規作成
2.0 版
2011/1/20
MB9A100/MB9B100/MB9B300/MB9B400 Series に対応
2
AN706-00020-2v0-J
目次
注意事項 ...............................................................................................................................1
改版履歴 ...............................................................................................................................2
目次 ...................................................................................................................................... 3
1
はじめに ........................................................................................................................ 4
2
A/D コンバータ.............................................................................................................. 5
3
2.1
A/D コンバータの FIFO 機能 .................................................................................. 5
2.2
割込み(NVIC).......................................................................................................... 5
2.3
割込み(IRQ25/26/27 一括読出しレジスタ) ............................................................. 7
2.4
レジスタ ................................................................................................................. 8
2.5
APB1 バスクロック................................................................................................ 8
2.6
I/O ポート設定レジスタ ......................................................................................... 8
設定例(サンプルプログラム) ......................................................................................... 9
3.1
サンプルプログラムについて................................................................................. 9
3.2
A/D コンバータの変換時間の設定 ........................................................................ 10
3.2.1
サンプリング時間の設定............................................................................... 10
3.2.2
動作許可状態遷移期間 .................................................................................. 11
3.2.3
コンペア時間の設定 ...................................................................................... 12
3.3
4
設定手順例 ........................................................................................................... 13
使用上の注意事項........................................................................................................ 15
3
AN706-00020-2v0-J
1
はじめに
MB9B500シリーズに搭載されている12ビットA/Dコンバータには以下のような機能があり
ます。
・12ビットの分解能
・サンプル&ホールド回路付RC 型逐次比較変換方式を採用
・変換時間1.0μs(ベースクロック(HCLK)周波数72MHz時)
・入力チャネルごとにサンプリング時間を2種類から設定可能
・スキャン変換動作:
アナログ入力を複数チャネルから任意に複数選択可能
起動要因はソフト/タイマ
リピートモードあり
・優先変換動作:
スキャン変換中においても優先変換の起動要因が発生すると、スキャン変換を中断し優先
的に変換を行うことが可能(優先度1,2の2レベル用意、優先順位は優先度1>優先度2)。
起動要因はソフト/タイマ(優先度2),外部トリガ(優先度1)。
・FIFO機能:
スキャン変換用FIFO16段、優先変換用FIFO4段搭載。
設定したFIFO段数にデータが書き込まれると、割込みを発生。
 A/D変換データの配置変更可能(MSB側へシフト/LSB側へシフトを選択可能)
 A/D変換結果比較機能あり。
 割込み要因は以下の4要因
1.
スキャン変換用FIFO段数割込み
2.
優先変換用FIFO段数割込み
3.
FIFOオーバラン割込み(スキャン変換用・優先変換用共通)
4.
A/D変換結果比較割込み
 割込み要求によるDMA転送が可能
このアプリケーションノートでは、A/DコンバータのFIFOを利用したスキャンモードの使用
方法について説明します。
A/Dコンバータのユニット0を使用して、スキャン変換結果をFIFOに格納して、FIFOオーバ
ラン割込みにより3チャネル分の変換結果を一度に取得するサンプルプログラムを示しま
す。
4
AN706-00020-2v0-J
2
A/Dコンバータ
(※A/D コンバータの特徴や動作、ブロックダイヤグラムについては”MB9Axxx/MB9Bxxx
Series ペリフェラルマニュアルの CHAPTER18-3:12bitA/D コンバータ”をご参照ください)
2.1
A/DコンバータのFIFO機能
スキャン変換データの書込み用に FIFO を 16 段搭載しています。
スキャンを開始してから、1 チャネル分の A/D 変換が終了すると、FIFO の 1 段目に変換結
果と変換チャネルが書き込まれます。2 チャネル目の変換結果と変換チャネルは 2 段目の
FIFO に順次書き込まれます。
16 段すべてに書込みが行われると、FIFO が満杯(フル)の状態になります。また、FIFO フ
ルの状態で変換が行われ FIFO にデータを書き込もうとした場合、データは捨てられます(上
書きできません)。
FIFO のデータをクリアしたい場合は、スキャン変換コントロールレジスタの SFCLR ビッ
トに"1"を書き込んでください。FIFO は空の状態となり SEMP ビットは"1"に設定されます。
FIFO の読出しは、スキャン FIFO データレジスタ(SCFD)を読み出すことで、順次 FIFO を
読み出せます。
2.2
割込み(NVIC)
(※NVIC に関しては”Cortex-M3 テクニカルリファレンス マニュアルの 8 章ネスト型ベク
タ割り込みコントローラ”をご参照ください)
表 2-1にNVICに入力される例外と割込みの要因ベクタ表を示します。
表 2-1
A/D コンバータの割込みベクタ
例外と割込み要因
ベクタ No.
IRQ No.
ベクタ Offset
A/D コンバータ unit0
41
25
0xA4
A/D コンバータ unit1
42
26
0xA5
A/D コンバータ unit2
43
27
0xA6
(※すべての割込み内容と割込み番号については”MB9Axxx/MB9Bxxx Series ペリフェラル
マニュアルの CHAPTER6:割込み.3.例外と割込み要因ベクタ”をご参照ください)
CPU コアの例外を含むすべての割込みは NVIC で管理されます。
“Cortex-M3 テクニカルリファレンスマニュアル”では例外タイプ:IRQ をすべて外部割込み
入力と定義しています。
本書では、例外タイプ:IRQ を周辺割込みと表現します。周辺割込みには、外部端子による
割込み「外部割込み・NMI 制御部」と LSI 内部の周辺リソースからの割込みがあります。
5
AN706-00020-2v0-J
NVIC 割り込みは、対応する割り込みイネーブルセットレジスタ、または割り込みイネーブ
ルクリアレジスタのビットフィールドに書き込むことで、許可および禁止できます。この
レジスタは、1 を書き込んで許可と 1 を書き込んでクリアのポリシーを使用しており、どち
らのレジスタからも、対応する(32)割り込みの現在の許可状態が読み出されます。
割り込みイネーブルセットレジスタは、次の目的に使用します。

割り込みを許可する。

どの割り込みが現在許可されているのかを判別する。
レジスタの各ビットは、32 個の割り込みのうちの 1 つと対応します。
割り込みイネーブルセットレジスタにビットをセットすることで、対応する割り込みが許
可されます。保留中の割り込みのイネーブルビットがセットされると、プロセッサは優先
度に基づいて割り込みをアクティブにします。
イネーブルビットがクリアされている場合、割り込み信号をアサートすると、その割り込
みは保留されます。しかし、優先度にかかわらず、この割り込みをアクティブにすること
はできません。
このため、禁止された割り込みは、ラッチされる汎用 I/O ビットとして使用することができ
ます。また、割り込みを呼び出すことなくこのビットを読み込んでクリアできます。
A/D コンバータ unit0 の割込みを使用する場合、割り込みイネーブルセットレジスタの
IRQ No.25 に相当するビットを 1 にします。表 2-2に割り込みイネーブルセットレジスタの
設定を示します。
表 2-2
割り込みイネーブルセットレジスタの設定
アドレス:0xE000E100=0bXXXXXX1XXXXXXXXXXXXXXXXXXXXXXXXX
bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
値X X X X X X 1 X X X X X X X X X X X X X X X X X X X X X X X X X
※x は任意の値
アドレス:0xE000E104=0b0000000000000000XXXXXXXXXXXXXXXX
bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
値 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 X X X X X X X X X X X X X X X X
※x は任意の値
6
AN706-00020-2v0-J
ベクタ No.16 以降の周辺割込みの優先度は、割込み優先度レジスタで設定可能です。割り
込み優先度レジスタは各割込みに対して 4 ビットずつ割り振られています。
A/D コンバータ unit0 の割り込み優先度レジスタは IRQ No.25 なので、
レジスタ:0xE000E419 が A/D コンバータ unit0 の割り込み優先度レジスタになります。
リセット時は 0x00 になるので最も高い優先度です。
また、ベクタ offset が 0xA4 なので割込みアドレスは 0x000000A4 に格納します。
2.3
割込み(IRQ25/26/27 一括読出しレジスタ)
(※IRQ25/26/27 一括読出しレジスタに関しては”MB9Axxx/MB9Bxxx Series ペリフェラルマ
ニュアルの CHAPTER6:割込み”をご参照ください)
IRQ25/26/27 一括読出しレジスタによって A/D コンバータ割込みが含まれる割込みベクタ
No.41/42/43 の割込み要求を一括で読み出せます。これにより A/D コンバータのどの機能で
割込み要求が発生したか確認できます。
表 2-3
bit 番号
3
2
1
0
A/D コンバータの割込み要因一覧
bit
説明
0
変換結果比較の割込み要求なし
1
変換結果比較の割込み要求あり
0
FIFO オーバランの割込み要求なし
1
FIFO オーバランの割込み要求あり
0
スキャン変換の割込み要求なし
1
スキャン変換の割込み要求あり
0
優先変換の割込み要求なし
1
優先変換の割込み要求あり
7
AN706-00020-2v0-J
2.4
レジスタ
設定レジスタは動作機能で異なります。表 2-4にサンプルプログラムで設定するレジスタ郡
を示します。
表 2-4
サンプルプログラムで設定するレジスタ一覧
レジスタ略称
レジスタ名
アドレス※
SCIS
スキャン変換入力選択レジスタ
+0x014
ADSS
サンプリング時間選択レジスタ
+0x02C
ADST
サンプリング時間設定レジスタ
+0x031
ADCR
A/D コントロールレジスタ
+0x001
SCCR
スキャン変換コントロールレジスタ
+0x009
SFNS
スキャン変換 FIFO 段数設定レジスタ
+0x008
※ A/D コ ン バ ー タ の ベ ー ス ア ド レ ス か ら の オ フ セ ッ ト ア ド レ ス で す 。 (A/D コ ン バ ー タ ユ ニ ッ ト 0/1/2 ベ ー ス ア ド レ ス :
0x40027000/0x40027100/0x40027200)
2.5
APB1 バスクロック
(※APB1 バスクロックの詳細については”MB9Axxx/MB9Bxxx Series ペリフェラルマニュア
ルの CHAPTER2-1:クロック”をご参照ください)
A/D コンバータのバスクロックは PCLK1 となっていて(“FM3 MB9B500 シリーズ
データ
シートのブロックダイヤグラム”をご参照ください)、最大内部動作クロック周波数は 40MHz
となっています。CPU/AHB バスクロックが 40MHz を越える設定をする場合は APB1 プリ
スケーラレジスタ(APBC1_PSR)の設定で分周をしてください。
2.6
I/Oポート設定レジスタ
(※I/O ポートの詳細については”MB9Axxx/MB9Bxxx Series ペリフェラルマニュアルの
CHAPTER9:I/O ポート”をご参照ください)
アナログ入力端子は I/O ポートの機能のひとつであり、デジタル入出力やその他の周辺機能
の入出力と共用になっています。A/D コンバータを使用する場合はアナログ入力設定レジス
タ(ADE)の設定で端子をアナログ入力端子に設定してください。
8
AN706-00020-2v0-J
3
設定例(サンプルプログラム)
3.1
サンプルプログラムについて
A/D コンバータ機能を動作させるサンプルプログラムについて説明します。
以下に本サンプルプログラムの設定条件を示します。
クロック、電源設定:
マスタクロックを PLL クロック 80MHz(X0,X1 に外部メインクロック 4MHz を入力

して逓倍)に設定

APB1 プリスケーラ 2 分周(APB1 バスクロック 40MHz)

VCC=5.0V/AVCC=5.0V
以上の条件で、A/D コンバータ機能を以下のように設定します。
-
ユニット 0 を使用
-
AN00,AN01,AN02 端子をアナログ入力端子にする
-
スキャン割込み処理を発生させ、変換結果を汎用出力ポート P30~P39 に出力す
る
9
AN706-00020-2v0-J
3.2
A/Dコンバータの変換時間の設定
A/D コンバータの変換時間は「サンプリング時間」+「コンペア時間」です。ベースクロッ
ク周波数(HCLK)と A/D コンバータのレジスタ設定によって決定します。
3.2.1
サンプリング時間の設定
Ts :
サンプリング時間
Rin :
A/D の入力抵抗 = 0.93kΩ (4.5 ≦ AVCC ≦ 5.5 の場合)
A/D の入力抵抗 = 2.04kΩ (2.7 ≦ AVCC < 4.5 の場合)
Cin :
A/D の入力容量 = 14.5pF
Rext :
外部回路の出力インピーダンス
(※上記値はサンプリング時間を設定するために設計上の参考値を使用しています)
としたとき、サンプリング時間の最低値は下式によって計算できます。
Ts = (Rin + Rext) × Cin × 9
サンプルプログラムでは Rin=0.93kΩ、Rext=3.0 kΩとして計算します。
Ts = (0.93 kΩ+ 3.0 kΩ)×14.5pF × 9
= 3.93×14.5×9×1.e-9
= 392.43ns
と、なり、これを超える設定にします。サンプリング時間は下式によって計算できます。
サンプリング時間=HCLK 周期×{(ST 設定値+1)×STX 設定倍数 + 1}
(ST 設定値:ADST0.ST04~ST00 か ADST1.ST14~ST10 の値
STX 設定倍数:ADST0.STX02~STX00 か ADST1.STX12~STX10 で設定された倍数)
STX 設定倍数を 4 にします(ADST0.STX02~STX00 か ADST1.STX12~
STX10=0b001)
392.43ns < 12.5ns×{(ST 設定値+1)×4 + 1}
ST 設定値 > 6.59…
ST 設定値は 7 以上で設定する必要があります。サンプルプログラムでは 7 にします。
(ADST0.ST04~ST00 か ADST1.ST14~ST10=0b00111)ST 設定値を 7 にしたときのサンプ
リング時間は
サンプリング時間=12.5ns×{(7+1)×4 + 1}
=412.5ns
となります。
10
AN706-00020-2v0-J
3.2.2
動作許可状態遷移期間
12 ビット A/D コンバータは A/D 変換をおこなう前に動作許可状態である必要があります。
A/D 動作許可設定レジスタ(ADCEN)によって A/D コンバータを動作許可状態/停止状態が制
御できます。動作停止から動作許可したときに動作許可状態になるまで待ち時間(動作許可
状態遷移期間)が発生します。待ち時間は以下のように計算されます。
動作許可状態遷移期間 = ベースクロック(HCLK)周期×サイクル数
サイクル数はADCT.CT2~CT0 の設定値によって決まります。表 3-1にADCT.CT2~CT0 の
設定値ごとのサイクル数を示します。
表 3-1
ADCT.CT2~CT0 の設定値ごとのサイクル数
ADCT.CT2~CT0
サイクル数
0b000
72 サイクル
0b001
108 サイクル
0b010
144 サイクル
0b011
180 サイクル
0b100
216 サイクル
0b101
252 サイクル
0b110
288 サイクル
0b111
324 サイクル
MB9B500 Series の動作許可状態遷移期間は最小 2.5μs なので(設計上の参考値です)これを
超える CT 設定値を設定します。
2.5μs < 12.5ns×サイクル数
サイクル数 > 200
サイクル数が 200 以上となるのは CT 設定値が 0b100 以上の設定のとき。サンプルプログ
ラムでは 0b100 とします。動作許可状態遷移期間は
動作許可状態遷移期間 = 12.5ns×216
= 2.7μs
11
AN706-00020-2v0-J
3.2.3
コンペア時間の設定
Tc:
コンペア時間
Tcck:
コンペアクロック周期
としたとき、Tcck、Tc は以下のように計算されます。
Tcck = HCLK 周期×(CT 設定値 + 2)
Tc = Tcck×14
Tc = {HCLK 周期×(CT 設定値 + 2)×14}
3.2.2よりサンプルプログラムではCT設定値を 4 としたのでコンペア時間は以下のように計
算されます。
Tc = {12.5ns×(4 + 2)}×14
Tc = 1.05μs
以上の設定により 12 ビット A/D コンバータの変換時間は以下のように計算されます。
変換時間=「サンプリング時間」+「コンペア時間」
= 412.5ns + 1050ns
= 1462.5ns
12
AN706-00020-2v0-J
3.3
設定手順例
次の手順は、サンプルプログラムのA/Dコンバータの設定方法を示しています。
A/D コンバータ設定
START
比較機能未使用
(CMPCR:CMPEN=0b0)
APB1 バスクロック分周設定
マスタクロック PLL クロック設定
スキャン変換割込み許可
(ADCR:SCIE=0b1)
AN00,AN01,AN02 をアナログ入力端
子として使用(ADE=0x00000007)
A/DC ユニット 0 動作許可
(ADCEN:ENBL=0b1)
A/D 変換結果出力端子設定
PDOR/DDR3 設定
0b0
動作停止状態
AN00,AN01,AN02 をスキャン入力端
子に選択(SCIS:AN0~AN02= 0b111)
0b1
動作許可状態
サンプリング設定時間選択
(ADSS:TS0=0b0)
サンプリング時間は ADST0 にて設定
NVIC A/DC ユニット 0 割込み許可
サンプリング時間設定
(ADST0:STX02~00=0b010
ST04~ST00=0x00111)
スキャン変換開始
(SCCR:SSTR=0b1)
コンペア時間設定
(ADCT:CT2~CT0=0x2)
変数
SwValue
割込み要求発生 FIFO 段数設定
3 段目に格納で発生(SFNS=0x02)
FIFO データ配置 LSB 側に配置
(ADSR:FDAS=0b1)
FIFO クリア,シングル変換モード
(SCCR:SFCLR=0b1,RPT=0b0)
図 3-1
ADCEN:READY
=0b1?
メインループ
0
P30~P3B に AN00 の値
を出力
1
P30~P3B に AN01 の値
を出力
2
P30~P3B に AN02 の値
を出力
サンプルプログラムでの設定例
13
AN706-00020-2v0-J
A/D コンバータ割込み処理
START
bit1=0b0
スキャン変換の
割込みでない
IRQ25MON の
bit1=0b1 か?
bit1=0b1
スキャン変換終了
割込み発生
変換結果取込(以下の順番で読込み)
(AD_Data[0] = SCFD(上位 16bit)
AD_Data[1] = SCFD(上位 16bit)
AD Data[2] = SCFD(上位 16bit))
この時点で SCCR:SEMP=1
になる(FIFO が空)
スキャン変換割込みフラグクリア
(ADCR:SCIF=0b0)
スキャン変換開始
(SCCR:SSTR=0b1)
END
図 3-2
サンプルプログラムでの A/D コンバータ割込み処理例
14
AN706-00020-2v0-J
4

使用上の注意事項
割込み要求ビットはリードモディファイライト系命令におけるリード値は、ビット値
にかかわらず"1"になります。

割込み処理から抜ける場合には、必ずその割込み要求ビットをクリアしてください。

このアプリケーションノートに付属するサンプルプロジェクトは IAR Embedded
Workbench for ARM によって作成されています。
15