AN52705 PSoC 3 and PSoC 5LP - Getting Started with DMA (Japanese).pdf

AN52705
PSoC® 3 および PSoC 5LP - DMA 入門
著者: Anu M D、Lakshmi Natarajan
関連プロジェクト: あり
関連製品ファミリ: すべての PSoC ® 3 および PSoC 5LP 製品
ソフトウェア バージョン: PSoC® Creator ™ 3.0 SP1 以降
関連アプリケーション ノート: AN61102、AN84810
概要
AN52705 は PSoC® 3 と PSoC 5LP のダイレクト メモリ アクセス (DMA) の概要を説明します。PSoC DMA は CPU 介入なし
で、オンチップ ペリフェラルとメモリ間でデータを転送することができます。アプリケーション ノートでは、サンプルプロジェクトを使
用して、ペリフェラルとメモリ間、メモリとペリフェラル間、ペリフェラル間、メモリ間での簡単なデータ転送のために DMA をコンフィ
ギュレーションする方法を示します。
目次
はじめに .............................................................................1
著者について ................................................................... 18
DMA の基本的な概念 .........................................................2
付録 A: DMA コンフィギュレーション手順 ........................... 19
DMA コンフィギュレーション .................................................4
その他の重要な DMA API 関数 ................................... 21
チャネル コンフィギュレーション .......................................4
付録 B: DMA ウィザードによるコンフィギュレーション .......... 21
TD コンフィギュレーション ...............................................4
付録 C: DMA チャネルの優先順位の設定 ......................... 23
DMA コンポーネントの概要 .................................................6
付録 D: サンプル プロジェクト – テスト セットアップ ............. 24
DMA コンポーネントのハードウェア接続..........................6
例 1: ペリフェラル間の転送 – Eg1_ADC_DMA_DAC ... 24
DMA のファームウェア コンフィギュレーション .......................7
例 2: ペリフェラルからメモリへの転送 –
Eg2_ADC_DMA_Mem ............................................... 24
例 3: メモリからペリフェラルへの転送 –
Eg3_Mem_DMA_DAC ............................................... 25
例 4: メモリ間の転送 – Eg4_Mem_DMA_Mem ............ 25
例 1: ペリフェラル間の転送 .................................................8
例 1 の DMA コンフィギュレーション ................................9
例 1 のプロジェクト ファイル ............................................9
例 1 の DMA のコンフィギュレーション コード ................. 10
例 2: ペリフェラルからメモリへの転送 ................................ 11
例 2 の DMA のコンフィギュレーション ........................... 12
例 5: TD チェーン化 – Eg5_TD_Chaining .................... 26
付録 E: よくある質問 ......................................................... 27
例 2 のプロジェクト ファイル .......................................... 12
例 3: メモリからペリフェラルへの転送 ................................ 13
例 3 の DMA コンフィギュレーション .............................. 14
例 3 のプロジェクト ファイル .......................................... 14
例 4: メモリ間の転送 ......................................................... 15
例 4 の DMA コンフィギュレーション .............................. 16
例 4 のプロジェクト ファイル .......................................... 16
例 5: TD チェーン化 .......................................................... 17
例 5 の DMA コンフィギュレーション .............................. 18
例 5 のプロジェクト ファイル .......................................... 18
まとめ ............................................................................... 18
www.cypress.com
はじめに
PSoC 3 と PSoC 5LP の DMA コントローラー (DMAC) は
CPU 介入なしで転送元から転送先にデータを転送することが
できます。これにより、DMA がデータ転送を行っている間、
CPU が他のタスクを処理することが可能になります。よって、
「マルチプロセッシング」の環境を実現できます。
PSoC の DMA コントローラー (DMAC) は非常に柔軟です。
ADC、DAC、フィルター、USB、UART、および SPI などのオン
チップ ペリフェラルとメモリ間でデータをシームレスに転送する
ことができます。24 の独立した DMA チャネルがあります。
文書番号: 001-75652 Rev. *A
1
PSoC® 3 および PSoC 5LP - DMA 入門
本アプリケーション ノートでは、単純なデータ転送のために
DMA をコンフィギュレーションする方法について説明します。
以下のように異なるタイプの DMA 転送を示すプロジェクトを含
みます。




本アプリケーション ノートは、ユーザーが PSoC 3 または
PSoC 5LP の PSoC Creator を使ったアプリケーションの開発
に 精 通 し て い る こ と を 前 提 とし て い ま す 。 PSoC 3 ま た は
PSoC 5LP の初心者である場合、「AN54181 - PSoC 3 入門」
および「AN77759 - PSoC 5 入門」を参照してください。DMA
の高度なトピックは「AN84810」に記載されています。PSoC
Creator の初心者である場合、「PSoC Creator のホームペー
ジ」を参照してください。
ペリフェラルからメモリへ
メモリからペリフェラルへ
ペリフェラル間
メモリ間
DMA の基本的な概念
PSoC 3 および PSoC 5LP の DMAC は図 1 に示すように、オンチップ ペリフェラル間の接続をするペリフェラル HUB (PHUB) と呼ば
れる中央ハブの一部です。DMAC は 2 つの PHUB バス マスターの 1 つです。
図 1. ペリフェラル ハブ (PHUB)
USB
Spoke 4
System
resources
32 bit
32 bit
Spoke
Arbitration
www.cypress.com
16 bit
IO Interface
ADCs
External
memory
interface
(EMIF)
DACs
32 bit
Digital filter
block (DFB)
Spoke 7
16 bit
Spoke 3
Spoke 1
DMAC
16 bit
16 bit
PHUB
Spoke 5
CPU
Spoke 0
SRAM
Univarsal
Digital Blocks
(UDB)
Spoke 6
EEPROM
Spoke 2
CAN
Fixed
Function I2C
Fixed
Function
Timers
16 bit
Univarsal
Digital Blocks
(UDB)
Other Analog
Peripherals
文書番号: 001-75652 Rev. *A
2
PSoC® 3 および PSoC 5LP - DMA 入門
PHUB はスポークと呼ばれる 8 つのデータ バスを持っていま
す。各スポークは、CPU と DMAC を 1 つまたは複数のペリフ
ェラルに接続します。スポークの幅は、16 ビットまたは 32 ビッ
トのどちらかです。スポークに接続するペリフェラルの幅は、8
ビット、16 ビット、または 32 ビットです。
通常、ペリフェラルのデータ幅は、ペリフェラルが接続している
スポークのデータ幅と等しい、またはそれ以下です。ペリフェラ
ルのデータ幅が接続するスポークのデータ幅よりも大きい場
合、PHUB はスポークの幅でペリフェラルとのトランザクション
を行うことができます。
PHUB には CPU と DMAC という 2 つのバス マスターがあり
ます。CPU と DMAC は、同時に異なる PHUB スポークにアク
セスすることができます。CPU と DMAC が同時に同じスポー
クにアクセスしようとすると、バス アービトレーションが発生し
ます。詳細については、「PSoC 3、PSoC 5LP テクニカル リフ
ァレンス マニュアル」を参照してください。
24 の DMA チャネルのそれぞれは、独立してデータを転送す
ることができます。各チャネルは、図 2 に示すように、トランザ
クション ディスクリプタ (TD) のチェーンを持っています。TD に
は、ソース アドレス、宛先アドレス、転送回数、およびチェーン
内の次の TD などの情報が含まれています。TD は最大 128
個あります。チャネルと TD の組み合わせにより、完全な
DMA 転送が定義されます。
図 2 DMA チャネル
DMA Channel
Source
DMA Request
Signal
Read
Write
DRQ
NRQ
Destination
DMA done signal typically tied to interrupt
TD
Pointer
TD0
Source
Destination
TD1
Transfer
Count
Next TD
それぞれの DMA チャネルは、トランザクションを開始する個
別の DMA 要求入力を有しています。DMA 要求は、CPU また
はペリフェラルのいずれかにより起動されます。DMA 要求が
www.cypress.com
Source
Destination
Transfer
Count
Next TD
受信されると、DMAC は、転送元と転送先に接続するスポー
クにアクセスし、チャネルと関連 TD で構成された通りにデータ
を移動します。
文書番号: 001-75652 Rev. *A
3
PSoC® 3 および PSoC 5LP - DMA 入門

DMA コンフィギュレーション
DMA データ転送を完了するために複数のバースト転送
が必要な場合、このビットはバーストの特性を決定します。
DMA 転送は、チャネルと TD コンフィギュレーション レジスタを
使用しコンフィギュレーションされます。図 3 は、チャネルおよ
び TD コンフィギュレーション パラメーターを示しています。
0: 最初のバーストに後続するすべてのバーストは個別の
DMA 要求なしで自動的に転送される。最初のバースト転
送だけは、DMA 要求が必要。
図 3. DMA コンフィギュレーション
Channel
Configuration
TD
Configuration
Source Address
(Upper 16 bits)
Source Address
(Lower 16 bits)
Destination Address
(Upper 16 bits)
Destination Address
(Lower 16 bits)
Burst Count
(1-127)
Transfer Count
( 0 to 4095)
Request per Burst
(TRUE or FALSE)
TD Property
First TD of Channel
Next TD
バーストごとの要求 (0 または 1)
1: すべてのバースト転送は、個別の DMA 要求が必要。

最初の TD
チャネルと関連付けられている最初の TD を定義します。
最初の TD へのポインタは、チャネル コンフィギュレーショ
ン メモリに格納されます。後続の TD ポインタが連結リス
トと同じように TD コンフィギュレーション メモリに格納され
ます。

TD の保存 (0 または 1)
次回の DMA 転送に再利用するために元の TD コンフィ
ギュレーションを保存するかどうかを定義します。通常、
TD コンフィギュレーションが保持されます。
0: TD コンフィギュレーションを保持しない。
1: TD コンフィギュレーションを保持する。
TD が保存された場合、チャネルは (チャネル番号に対応
する) 個別の TD メモリを使用して進行中のトランザクショ
ンを追跡します。別の方法として、元の TD コンフィギュレ
ーション レジスタが、進行中のトランザクションを追跡する
ためにアクティブなレジスタとして使用されます。
Preserve TD
(TRUE or FALSE)
チャネル コンフィギュレーション
DMA チャネル コンフィギュレーション パラメーターを以下に説
明します。


上位のソース アドレス (16 ビット)
TD コンフィギュレーション パラメーターを以下に説明します。
32 ビットのソース アドレスの上位 16 ビットは、チャネル
コンフィギュレーション レジスタでコンフィギュレーションさ
れます。

バースト カウント (1~127)

下位の宛先アドレス (16 ビット)
32 ビットの宛先アドレスの下位 16 ビットです。

転送カウント (0~4095 バイト)
転送元から転送先に転送する総バイト数です。
スポークを開放する前に、DMA チャネルがソースから転
送先に送信しなければならないバイト数を定義します。
DMAC は、スポークを取得し、ソースから転送先へ指定さ
れたバイト数を転送した後、スポークを開放します。次の
バースト転送のためには、スポークを再び取得します。
内部スポークの DMA 転送のバースト カウントを 16 以下
に制限します。
下位のソース アドレス (16 ビット)
32 ビットのソース アドレスの上位 16 ビットは、TD コンフィ
ギュレーション レジスタでコンフィギュレーションされてい
ます。
上位の宛先アドレス (16 ビット)
32 ビットの宛先アドレスの上位 16 ビットは、このチャネル
コンフィギュレーション レジスタでコンフィギュレーションさ
れています。

TD コンフィギュレーション
転送カウントは、バースト カウント パラメーターと共に使
用されます。例えば、16 ビットペリフェラルからメモリ バッ
ファに 2 バイトのデータ ワードを 50 個移動する場合、バ
ースト カウントは 2 に設定され、転送カウントは 100 に設
定されます。

次の TD
連結リストと同様な次の TD です。
www.cypress.com
文書番号: 001-75652 Rev. *A
4
PSoC® 3 および PSoC 5LP - DMA 入門

TD のプロパティ
表 1 は、TD プロパティ コンフィギュレーション レジスタのビット フィールドで定義された TD プロパティを示します。
表 1. TD のプロパティ
プロパティ
説明
(ソース アドレスのインクリメント)
このビットが設定された場合、ソース アドレスは、DMA トランザクションが進行するにつれてインクリ
メントされる
Increment Destination Address
(宛先アドレスのインクリメント)
このビットが設定された場合、宛先アドレスは、DMA トランザクションが進行するにつれてインクリメ
ントされる
Swap Enable
設定された場合、DMA は転送元から転送先にデータを転送する間、データ バイトをスワップする
Increment Source Address
(スワップ イネーブル)
Swap Size (スワップ サイズ)
スワップ イネーブルが設定された場合、実行されるスワップのサイズを定義する
0: DMA 転送中に 2 バイトごとにエンディアン変換される
1: DMA 転送中に 4 バイトごとにエンディアン変換される
Auto Execute Next TD
0: チェーン内の次の TD は、次の DMA 要求が発行された後にのみ実行される
(次の TD の自動実行)
1: チェーン内の次の TD は、現在の TD 転送が完了すると自動的に実行される
DMA Completion Event
(DMA 完了イベント)
設定された場合、データ転送が完了した後に DMA「完了信号」を生成する。これは通常、転送が完
了した後に割り込みを生成するために使用される
Enable TD termination
設定された場合、ハードウェアの信号を使用して進行中のトランザクションを中止することができる
(TD 中止のイネーブル)
PSoC 3 Keil コンパイラは、16 ビットおよび 32 ビットの変数を格納するためにビッグ エンディアン形式を使用しています。しかし
PSoC 3 ペリフェラルのレジスタはリトル エンディアン形式を使用しています。このため、DMA は、PSoC 3 内のペリフェラル レジスタと
メモリ間でマルチバイトのデータを転送する時にバイトをスワップするように設定される必要があります。PSoC 5LP の場合、ペリフェラ
ルとメモリの両方が同じエンディアン形式を使用しているため、バイトスワップの設定は不要です。
PSoC Creator を使用して DMA をコンフィギュレーションする方法を見てみましょう。
www.cypress.com
文書番号: 001-75652 Rev. *A
5
PSoC® 3 および PSoC 5LP - DMA 入門
DMA コンポーネントのハードウェア接続
DMA コンポーネントの概要
図 4 は、PSoC Creator 内の DMA チャネルのコンポーネント
を示しています。このコンポーネントは、Component Catalog
内の「Systems」タブの下にあります。
図 5 に示すように、コンポーネントのコンフィギュレーション ウ
ィンドウで、次のパラメーターを設定することができます。
図 5. DMA コンポーネント コンフィギュレーション
図 4. DMA チャネル コンポーネント
Optional
Terminals
DMA チャネル コンポーネントと関連する API は、データ転送
を目的として DMA をコンフィギュレーションするために使用さ
れます。
Hardware Request (ハードウェア リクエスト) (drq) : この設
定は、DMA チャネルをトリガーするために使用される信号の
種類 (立ち上がりエッジ/レベル) を定義します。「Disabled」
を除き、このパラメーターを選択すると、drq 端子がコンポーネ
ントに加えられます。drq は、DMA チャネルをトリガーするため
に、任意のハードウェア信号に接続することができます。
drq 端子がない場合、DMA トランザクションをトリガーできるの
は CPU のみとなります。
このパラメーターは、「derived」に設定された場合、DMA トリ
ガーの種類 (エッジ/レベル) は、DMA のトリガー ソースから
判定されます。詳細情報については、「DMA コンポーネント デ
ータシート」を参照してください。
Hardware Termination (ハードウェア ターミネー ション )
(trq): このオプションを「true」に設定した場合、コンポーネント
ではもう 1 つの入力端子 (trq) が表示されます。TD の中止を
有効にした場合、この端子上の立ち上がりエッジは、進行中の
DMA トランザクションを停止します。trq は、進行中の DMA バ
ースト トランザクションがある場合にのみ、TD チェーンを中止
することに注意してください。詳細については、コンポーネント
のデータシートを参照してください。
Transfer complete (転送完了) (nrq): DMA 転送が完了した
ことを示すために、転送が終了する DMA チャネルの NRQ 端
子で 2 バス クロックのパルス幅を生成するように TD をコンフ
ィギュレーションすることができます。その後の動作のために、
nrq 端子を割り込み、または別のコンポーネントに接続するこ
とができます。
nrq 端子で信号を生成するかどうかを、そして trq を使用して
TD の中止を有効にするかどうかを定義するために、TD プロ
パティを設定します。
www.cypress.com
文書番号: 001-75652 Rev. *A
6
PSoC® 3 および PSoC 5LP - DMA 入門
DMA のファームウェア コンフィギュレーション
DMA コンポーネントは、プロジェクトのビルド プロセス中に各 DMA インスタンスのソース ファイルと対応するヘッダ ファイルを生成しま
す 。 デ ザ イ ン に DMA_1 と い う 名 前 を 持 つ DMA コ ン ポ ー ネ ン ト イ ン ス タ ン ス が 存 在 し て い る 場 合 、 「 DMA_1_dma.c 」 と
「DMA_1_dma.h」というファイルがビルド プロセス中に作成されます。これらのファイルは、DMA チャネルを初期化するために使用す
る「DmaInitialize」API を含みます。他のチャネルおよび TD コンフィギュレーション機能は、「Generated Source」フォルダ内の
「CyDmac.c」と「CyDmac.h」ファイルに含まれています。
DMA のファームウェア コンフィギュレーションの手順は次の通りです。
1.
DMA チャネルを開始
Channel_Handle = DMA_DmaInitialize(DMA_BYTES_PER_BURST, DMA_REQUEST_PER_BURST,
HI16(Source Address), HI16(Destination Address))
2.
TD のインスタンスを作成
TD_Handle = CyDmaTdAllocate();
3.
TD コンフィギュレーションを設定
CyDmaTdSetConfiguration(TD_Handle,Transfer_Count,Next_TD,TD_Property);
4.
TD アドレスを設定
CyDmaTdSetAddress(TD_Handle, LO16(Source Address), LO16(Destination Address))
5.
チャネルの初期 TD を設定
CyDmaChSetInitialTd(Channel_Handle, TD_Handle)
6.
DMA チャネルを有効化
CyDmaChEnable(Channel_Handle, preserve_TD)
上記のファームウェアの手順は、19 ページの「付録 A: DMA コンフィギュレーション手順」で詳しく説明されます。DMA ウィザードを使用
して DMA チャネルをコンフィギュレーションするコードを自動的に生成することができます。詳細については、21 ページの「付録 B:
DMA ウィザードによるコンフィギュレーション」を参照してください。
DMA ウィザードは PSoC の限られたペリフェラルでの DMA トランザクションのみをサポートしていることに注意してください。DMA ウィ
ザードがペリフェラルをサポートしない場合、付録 A で詳しく説明する機能を使用して、手動で DMA チャネルをコンフィギュレーションす
る必要があります。
以下は、メモリとペリフェラル間の DMA 転送を行う方法を詳細に説明する 4 つの例です。5 番目の例では、複数 TD のチェーンを作成
する方法を説明します。
www.cypress.com
文書番号: 001-75652 Rev. *A
7
PSoC® 3 および PSoC 5LP - DMA 入門
例 1: ペリフェラル間の転送
この例では、DMA を使用してペリフェラル間の転送、つまり図 6 のような ADC データ出力レジスタから DAC データ入力レジスタへの
転送を行う方法を示しています。
図 6. ペリフェラル間の転送のブロック図
Source – ADC
Destination – DAC
DMA Channel
ADC
1 Byte
Read
Write
1Byte
DAC
EoC
DMA
Request
(DRQ)
TD
Pointer
DMA
Done
(NRQ)
TD[0]
Source
Destination
Transfer
Count
Next TD
TD Property: None
図 7 に示すように、ADC は、シングルエンドの 8 ビット電圧
DAC である VDAC のデータ形式に一致するように、シングル
エンド で機能する 8 ビット構成のものとしてコンフィギュレーシ
ョンされます。ADC の結果が出ると、ADC がデータ転送の要
求を発行することができるように、DMA チャネルのハードウェ
ア要求 (DRQ) が有効化され、ADC の EoC 信号に接続され
ます。
この要求を受信した後、DMA チャネルは ADC の出力レジス
タから 1 データ バイトを読み出して DAC データ レジスタに書
き込みます。
図 7. ペリフェラル間の転送のトップ デザイン
www.cypress.com
文書番号: 001-75652 Rev. *A
8
PSoC® 3 および PSoC 5LP - DMA 入門
例 1 の DMA コンフィギュレーション
このプロジェクトの DMA チャネルおよび TD のコンフィギュレ
ーションは表 2 および表 4 に示します。
TD は、連鎖された TD のアレイとして考えることができます。
この例の場合、1 つの単一要素のアレイ TD[0]のみが必要で
す。
表 4. TD[0] コンフィギュレーション設定
表 2. チャネル コンフィギュレーション設定
パラメーター
プロジェクト設定
ソース アドレスの上位
HI16(CYDEV_PERIPH_BASE)
宛先アドレスの上位
HI16(CYDEV_PERIPH_BASE)
バースト カウント
1 (1 バイト)
バーストごとに要求
1 (True)
最初の TD
TD[0]
TD の保存
1 (True)
チャネル コンフィギュレーションは、ソース アドレスと宛先アド
レスの両方の 32 ビット アドレスには、上位 16 ビットがありま
す。
PSoC Creator の自動生成されたファイル cydevice.h に定義
された CYDEV_PERIPH_BASE は、ADC と DAC を含むす
べての PSoC ペリフェラルのベース アドレスを定義します。
HI16 は 32 ビット値の上位 16 ビットを返す PSoC Creator の
マクロです。このマクロは、ソース アドレスと宛先アドレスの上
位 16 ビットを取得するために使用されます。
別の方法として、表 3 に示すように、コンポーネントのレジスタ
に対応するソース アドレスと宛先アドレスの上位アドレスを割
り当てることができます。アドレスの定義はそれぞれ、
「ADC_DelSig.h」、と「VDAC8.h」のコンポーネント ファイルに
あります。
表 3. 代替の上位アドレス
パラメーター
プロジェクト設定
ソース アドレス
の上位
HI16(ADC_Delsig_DEC_OUTSAMP_PTR)
宛先アドレス
の上位
HI16(VDAC8_DATA_PTR)
www.cypress.com
パラメーター
プロジェクト設定
ソースアドレス
の下位
LO16(ADC_Delsig_DEC_OUTSAMP_PTR)
宛先アドレス
の下位
LO16(VDAC8_DATA_PTR)
転送カウント
1 (1 バイト)
TD プロパティ
なし(0)
次の TD
TD[0] (同じ TD にループバック)
LO16 マクロは、32 ビット値の下位 16 ビットを返します。
DMA チャネルは各 DMA 要求に対して 1 バイトを移動する必
要があるため、バースト カウントが 1 バイトに設定され、バー
ストごとの要求が「True」に設定されます。
次に実行される TD が (ループされた) 同じ TD に設定される
ため、同じトランザクションが各 DMA 要求に応じて繰り返され
ます。TD の保存パラメーターが「True」に設定されます。
例 1 のプロジェクト ファイル
本アプリケーション ノートに添付する AN52705.zip ファイル内
の Eg1_ADC_DMA_DAC プロジェクトはこの例をデモします。
このプロジェクトのテスト方法の詳細については、「付録 D: サ
ンプル プロジェクト – テスト セットアップ」を参照してください。
この例の DMA コンフィギュレーション コードを以下に記載しま
す。DMA ウィザードを使用してこのコンフィギュレーション コー
ドを生成する方法の詳細については、「付録 B: DMA ウィザー
ドによるコンフィギュレーション」を参照してください。
文書番号: 001-75652 Rev. *A
9
PSoC® 3 および PSoC 5LP - DMA 入門
例 1 の DMA のコンフィギュレーション コード
/* Define for DMA Configuration */
#define DMA_BYTES_PER_BURST
1
#define DMA_REQUEST_PER_BURST 1
#define DMA_SRC_BASE (CYDEV_PERIPH_BASE)
#define DMA_DST_BASE (CYDEV_PERIPH_BASE)
/* Variable declarations for the
* DMA_Chan is used to store the
uint8 DMA_Chan;
/* DMA_TD array is used to store
* Since there is only one TD in
uint8 DMA_TD[1];
DMA channel.
DMA channel */
all of the TDs associated with the channel
this example, DMA_TD array contains only one element */
/* DMA Configuration steps */
/* Step 1 */
/* DMA Initializations done for both the DMA Channels
* Burst count = 1, (8 bit data transferred to VDAC one at a time)
* Request per burst = 1 (transfer burst only on new request)
* High byte of source address = Upper 16 bits of ADC data register
* High byte of destination address = Upper bytes of the VDAC8 data register
* DMA_Chan holds the channel handle returned by the ‘DmaInitialize’ function. This is
* used for all further references of the channel */
DMA_Chan = DMA_DmaInitialize(DMA_BYTES_PER_BURST, DMA_REQUEST_PER_BURST,
HI16(DMA_SRC_BASE), HI16(DMA_DST_BASE));
/* Step 2 */
/* Allocate TD for DMA Channel
* DMA_TD[0] is a variable that holds the TD handle returned by the TD allocate function.
* This is used for all further references of the TD */
DMA_TD[0] = CyDmaTdAllocate();
/* Step 3 */
/* Configure TD[0]
* Transfer count = 1 (total number of bytes to transfer from the ADC to DAC)
* Next Td = DMA_TD[0]. The same td has to repeat itself for every ADC EoC.
* Configuration = No special TD configurations required */
CyDmaTdSetConfiguration(DMA_TD[0], 1, DMA_TD[0], 0);
/* Step 4 */
/* Configure the td address
* Source address = Lower 16 bits of ADC data register
* Destination address = Lower 16 bits of VDAC8 data register */
CyDmaTdSetAddress(DMA_TD[0], LO16((uint32)ADC_DelSig_DEC_SAMP_PTR),
LO16((uint32)VDAC8_Data_PTR));
/* Step 5 */
/* Map the TD to the DMA Channel */
CyDmaChSetInitialTd(DMA_Chan, DMA_TD[0]);
/* Step 6 */
/* Enable the channel
* The Channel is enabled with Preserve TD parameter set to 1. This preserves the
* original TD configuration and reload it after the transfer is complete so that the TD
* can be repeated */
CyDmaChEnable(DMA_Chan, 1);
www.cypress.com
文書番号: 001-75652 Rev. *A
10
PSoC® 3 および PSoC 5LP - DMA 入門
例 2: ペリフェラルからメモリへの転送
この例では、図 8 に示すように、ADC データ出力レジスタから 16 ビットのメモリ アレイへのペリフェラル-メモリ間の転送を実行する方
法を示します。
図 8. ペリフェラルからメモリへの転送のブロック図
Destination : RAM Buffer
(adc_sampleArray)
16 bit
Source : ADC
ADC
2 Bytes
Sample 1
1
rst
Bu
t2
s
r
u
B
DMA Channel
Sample 2
Write
Read
...
EoC
Bu
rs
DMA
DMA
Request Done
(DRQ)
(NRQ)
Increment
Destination
Address
...
t‘
N’
….
Interrupt
(ISR)
Sample ‘N’
DMA Transaction
complete
TD Pointer
TD[0]
Source
Destination
Transfer
Count
Next TD
DMA_DISABLE_TD
TD Properties : Increment Destination address,
: Generate transaction complete signal
図 9 は、プロジェクトのトップ デザインを示します。Pin_Switch
を押す度に、ISR_Switch がトリガーされ、DMA チャネルを有
効にするためにフラグが isr に設定されます。DMA チャネルが
有効になると、ADC からの EoC 信号が DMA チャネル要求を
アクティブにします。
各 DMA 要求に応じて、DMA は、転送元 (ADC 出力レジスタ)
から 2 バイトを読み出し、転送先の RAM バッファに書き込み、
宛先アドレスを 2 ずつインクリメントします。転送カウントは、各
バースト転送後 2 つずつデクリメントされます。これは、転送カ
ウントが 0 になるまで繰り返します。転送カウントが 0 になると、
ISR_DMA_Done 割り込みをアクティブにする、DMA コンポー
ネントの NRQ 端子でのトランザクション完了信号が生成され
ます。
割込みサービス ルーチンでは、トランザクションが完了したこ
とを示すためにフラグが設定されます。トランザクションが完了
すると DMA チャネルは無効になり、スイッチが再び押された
時に有効になります。
図 9. ペリフェラルからメモリへの転送のトップ デザイン
www.cypress.com
文書番号: 001-75652 Rev. *A
11
PSoC® 3 および PSoC 5LP - DMA 入門
表 6. TD[0]コンフィギュレーション設定
例 2 の DMA のコンフィギュレーション
このプロジェクトの DMA チャネルおよび TD のコンフィギュレ
ーションは、表 5 および表 6 に示します。
パラメーター
プロジェクト設定
表 5. チャネル コンフィギュレーション設定
ソースアドレス
の下位
LO16(ADC_Delsig_DEC_OUTSAMP_PTR)
宛先アドレスの
下位
LO16(&adc_sampleArray)
パラメーター
プロジェクト設定
ソース アドレスの上位
HI16(CYDEV_PERIPH_BASE)
宛先アドレスの上位
HI16(CYDEV_SRAM_BASE)
バースト カウント
2 (2 バイト)
Increment Destination Address
バーストごとに要求
1 (True)
(転送先アドレスのインクリメント)、
最初の TD
TD[0]
TD の保存
1 (True)
転送カウント
(サンプル数 × サンプル当たりのバイト数)
Generate DMA done event
(DMA 完了イベントの生成)、
TD プロパティ
チャネル コンフィギュレーションは、ソース アドレスと宛先アド
レスの両方の 32 ビット アドレスには、上位 16 ビットがありま
す。ソース アドレスは、例 1 と同様です。
PSoC Creator の自動生成ファイル cydevice.h に定義された
CYDEV_PERIPH_BASE は、SRAM のベース アドレスを定
義します。これは、宛先アドレスの上位 16 ビットを指定するた
めに使用されます。
別の方法として、RAM アレイ ポインタを HI16 マクロと併用し
て PSoC 5LP のソース アドレスの上位 16 ビットを指定するこ
とができます。この方法は PSoC 3 では使用できません。これ
は、PSoC 3 では、RAM 変数の上位 16 アドレス ビットがゼロ
ですが、Keil コンパイラは、Keil 固有の情報を変数アドレスの
上位 16 ビットに格納するためです。このため、PSoC3 の Keil
コンパイラが併用される場合、HI16 (&adc_sampleArray) は
不正なアドレスを返します。
この例では、各 DMA 要求に応じて 2 バイトの ADC 結果を
ADC から RAM に転送する必要があるため、バースト カウン
トは 2 に設定され、バーストごとの要求は「true」に設定されま
す。
「TD の保存」は、元の TD 設定、すなわちソース アドレス、宛
先アドレスおよび転送カウントが保存され、トランザクションを
繰り返すことができるように、1 (TRUE) に設定されます。
表 6 に示すように、ソース アドレスと宛先アドレスの下位 16 ビ
ットは、トランザクション ディスクリプタ (TD[0]) のコンフィギュレ
ーションで指定されます。
www.cypress.com
200 x 2
「スワップ イネーブル」は PSoC 3 の場合にの
み必要
(TD_INC_DST_PTR |
DMA__TD_TERMOUT_EN |
TD_SWAP_EN)
次の TD
DMA_DISABLE_TD
転送カウントは、「バッファリングするサンプル数×サンプル当
たりのバイト数」に等しい「400」に設定されます。
TD プロパティは、各バースト転送後に宛先アドレスをインクリ
メントし、指定されたサンプル数がバッファリングされると、トラ
ンザクション完了信号を生成するように設定されます。PSoC 3
プロジェクトでは、TD は、TD プロパティ セクションで説明した
ように、ADC からメモリにデータを転送中にバイトをスワップす
るように構成されます。TD プロパティのそれぞれに対応する
ビットは、PSoC Creator により自動生成された CyDmac.h フ
ァイルで定義されます。TD プロパティを設定するために、必要
なプロパティ ビット フィールドは論理和されます。
指定されたサンプル数をバッファリングした後に DMA 転送を
停止するために、TD[0]は、「 DMA_DISABLE_TD 」と連鎖さ
れ、よって DMA チャネルは無効になります。
例 2 のプロジェクト ファイル
本アプリケーション ノートに添付する「AN52705.zip」ファイル
内の Eg2_ADC_DMA_Mem プロジェクトはこの例をデモしま
す。この例の DMA コンフィギュレーション コードは例 1 と同じ
です。関数に渡される引数は、上記のチャネルおよび TD コン
フィギュレーション表に記載されています。このプロジェクトの
テスト方法の詳細については、「付録 D: サンプル プロジェクト
– テスト セットアップ」を参照してください。
文書番号: 001-75652 Rev. *A
12
PSoC® 3 および PSoC 5LP - DMA 入門
例 3: メモリからペリフェラルへの転送
この例では、DMA を使用してメモリからペリフェラルへのデータ転送を行う方法を示します。この例では、図 10 に示すように、DAC を
使用して、波を発生させる方法をデモしています。
図 10. メモリからペリフェラルへの転送のブロック図
Source : Memory Look up table
8 Bit
Destination : DAC
Location 1
Location 2
Increment
Source
Address
DMA Channel
Burst1
Burst2
Read
...
Write
1 Byte
DAC
...
….
rst
Bu
N
Location ‘N’
DMA
Done
(NRQ)
DMA
Request
(DRQ)
DMA Trigger Clock
TD Pointer
TD[0]
Source
Destination
Transfer
Count
Next TD
Loop back to
same TD
TD Property : Increment Source address
128 点の正弦ルックアップ テーブルがフラッシュ メモリに格納
されます。正弦波を生成するために、これらの値は DMA を使
用して順次に DAC に送信されます。図 11 は、プロジェクトの
トップ デザインを示します。
定期的に DMA 要求 (drq) を生成するためにクロックコンポー
ネントを使用します。この要求を受信した後、DMA チャネルは
ルックアップ テーブルから 1 データ バイトを取得し、DAC デー
タ レジスタに書き込みます。宛先アドレスは 1 つずつインクリメ
ントされ、転送カウントは各バースト転送後に 1 つずつデクリメ
ントされます。これはテーブル内のすべての値が DAC に送信
されることが完了するまで継続します。
TD コンフィギュレーションが保存され、連続的な正弦波を生成
するように転送の終了時に再びロードされます。正弦波の周
波数は、ルックアップ テーブル内のポイント数で分周される
DMA トリガー クロック周波数に等しいです。
図 11. メモリからペリフェラルへの転送のトップ デザイン
www.cypress.com
文書番号: 001-75652 Rev. *A
13
PSoC® 3 および PSoC 5LP - DMA 入門
例 3 の DMA コンフィギュレーション
このプロジェクトの DMA チャネルおよび TD のコンフィギュレ
ーションは表 7 と表 8 に示します。
表 7. チャネル コンフィギュレーション
パラメーター
ソース アドレスの上
位
宛先アドレスの上位
表 8. TD[0]コンフィギュレーション
パラメーター
プロジェクト設定
プロジェクト設定
ソースアドレスの下位
LO16 (&sineTable)
PSoC 3 の場合は
HI16(CYDEV_FLS_BASE)
宛先アドレスの下位
LO16(VDAC8_DATA_PTR)
PSoC 5LP の場合は HI16 (&sineTable)
転送カウント
128 (正弦ルックアップ テーブル内の
バイト数)
TD プロパティ
ソース アドレスのインクリメント
(TD_INC_SRC_ADR)
次の TD
TD[0] - 同じ TD に再びループバック
HI16(CYDEV_PERIPH_BASE)
バースト カウント
1 (1 バイト)
バーストごとに要求
1 (True)
最初の TD
TD[0]
TD の保存
1 (True)
転送カウントは、正弦ルックアップ テーブル内のバイト総数に
設定されます。
DMA 転送元は、フラッシュ メモリに保存された正弦テーブル
アレイです。PSoC5LP では HI16(&sineTable) がソース アド
レ スの 上 位 16 ビ ットを 設定す るの に対 し、 PSoC 3 で は
HI16(CYDEV_FLS_BASE) が、前の例で述べた理由のため、
ソース アドレスの上位 16 ビットを識別するために使用されま
す。
DMA チャネルは、各 DMA 要求に際してルックアップ テーブ
ルのアレイから DAC に 1 バイトを転送する必要があります。
そのため、バースト カウントは 1 バイトに設定され、バーストご
との要求は「true」に設定されます。
元の TD コンフィギュレーションは、再利用のために保存され
ます。
www.cypress.com
表 8 に示すように、ソース アドレスと宛先アドレスの下位 16 ビ
ットは LO16 マクロを使用して設定されます。
TD は、各バースト転送後にソース アドレス、すなわちルックア
ップ テーブル ポインタをインクリメントするようにコンフィギュレ
ーションされます。
転送完了時に、正弦波の 1 つの完了サイクルが DAC 出力で
生成されます。TD は保存され、連続波を生成するように自己
にループバックされます。
例 3 のプロジェクト ファイル
本アプリケーション ノートに添付する AN52705.zip ファイル内
の Eg3_Mem_DMA_DAC プロジェクトはこの例をデモします。
この例の DMA コンフィギュレーション コードは例 1 と同じです。
関数に渡される引数は、上記のチャネルおよび TD コンフィギ
ュレーション表に記載されています。このプロジェクトのテスト
方法の詳細については、「付録 D: サンプル プロジェクト – テ
スト セットアップ」を参照してください。
文書番号: 001-75652 Rev. *A
14
PSoC® 3 および PSoC 5LP - DMA 入門
例 4: メモリ間の転送
この例では、DMA を使用してメモリ間のデータ転送を行う方法を示します。また、CPU を使用して DMA チャネルをトリガーする方法も
示します。この例では、図 12 に示すように、8 バイトのフラッシュ アレイが、CPU 要求に応じて 8 バイトの RAM アレイにコピーされま
す。
図 12. メモリ間の転送時のブロック図
Source – 8 bit flash array
Destination – 8 bit RAM array
8 Bit
8 Bit
DMA Channel
1 byte
SrcArray[0]
Increment
Source
Address
1 byte
SrcArray[1]
Read
DestArray[0]
DestArray[1]
Write
...
...
...
….
…
…
...
…
…
….
SrcArray[N-1]
Increment
Destination
Address
DestArray[N-1]
DMA
Request
CPU Request
DMA transaction
complete
DMA
Done
(NRQ)
Interrupt
(ISR)
TD Pointer
TD[0]
Source
Destination
Transfer
Count
Next TD
DMA_DISABLE_TD
TD Properies : Increment Source address,
: Increment Destination address,
: Generate transaction complete signal
図 13 は、プロジェクトのトップ デザインを示します。
CyDmaChSetRequest 関数はデバイスへ電源投入した約 1
秒後 DMA 転送をアクティブにするために使用されます。
CPU から要求を受信すると、DMA はチャネルと TD コンフィギ
ュレーション レジスタでコンフィギュレーションされたようにフラ
ッシュ アレイから RAM アレイに 8 バイトを転送します。TD の
ソース アドレスと宛先アドレスは、転送の進行と共にインクリメ
ントされます。
転送が完了すると、パルスが DMA の nrq 信号端子で生成さ
れます。これは、転送が完了したことを示すフラグを設定する
ISR_DMADone 割り込みをアクティブにします。RAM の新規
内容は、その後 LCD に表示されます。
図 13. メモリ間の転送のトップ デザイン
www.cypress.com
文書番号: 001-75652 Rev. *A
15
PSoC® 3 および PSoC 5LP - DMA 入門
表 10. TD[0] コンフィギュレーション
例 4 の DMA コンフィギュレーション
このプロジェクトの DMA チャネルおよび TD のコンフィギュレ
ーションは表 9 と表 10 に示します。
表 9. チャネル コンフィギュレーション
パラメーター
ソース アドレスの上位
プロジェクト設定
パラメーター
プロジェクト設定
ソース アドレス
LO16(&sourceArray)
宛先アドレス
LO16(&destinationArray)
転送カウント
8 (バイト)
PSoC 3 の場合は、
HI16(CYDEV_FLS_BASE)
Increment Source Address
(ソース アドレスのインクリメント)
PSoC 5LP の場合は、
HI16(&sourceArray)
Increment Destination Address
(宛先アドレスのインクリメント)
宛先アドレスの上位
HI16(CYDEV_SRAM_BASE)
バースト カウント
1 (1 バイト)
バーストごとに要求
0 (False)
最初の TD
TD[0]
TD の保存
0 (False)
TD プロパティ
Generate DMA done signal
(DMA 完了信号の生成)
(TD_INC_SRC_ADR |
TD_INC_DST_ADR |
DMA__TD_TERMOUT_EN)
次の TD
DMA 転送元は、フラッシュ メモリで定義された「sourceArray」
です。宛先は RAM 内の「destinationArray」です。前の例で説
明したようにフラッシュの宛先アドレスの上位 16 ビットは、
PSoC 5LP では HI16(&sourceArray) で、PSoC 3 では
HI16(CYDEV_FLS_BASE) で設定されます。同様に、SRAM
内の転送先アドレスの上位 16 ビットは、マクロ
HI16(CYDEV_SRAM_BASE) を使用して設定されます。
DMA_DISABLE_TD (0xFE)
ソース アドレスの下位 16 ビットと TD コンフィギュレーション用
の宛先アドレスは、LO16 マクロによって識別されます。
総数 8 バイトがソース アドレスから宛先アドレスへ転送される
ように、転送回数が「8」に設定されます。
DMA がフラッシュから 1 バイトごとに読み出し、RAM アレイに
書き込むように、バースト カウントが 1 バイトに設定されます。
データ転送を加速するためにバースト カウントを 8 バイトに設
定することもできます。ただし、通常、他の DMA チャネルもス
ポークを共用することが可能になるように、バースト カウントを
低い値に設定する必要があります。
TD は、各バースト転送後に、ソース アドレス、すなわちフラッ
シュ アレイ ポインタ、および宛先アドレス、すなわち RAM の
アレイ ポインタをインクリメントするようにコンフィギュレーショ
ンされます。8 バイト全てがフラッシュから RAM アレイに転送
された後、nrq ラインで TERMOUT パルスを送信するように
TD がコンフィギュレーションされます。このパルスは、転送が
完了したことを示すための ISR をトリガーするために使用され
ます。次の TD は、転送が終了した後に DMA チャネルを無効
にするために DMA_DISABLE_TD (0xFE) に設定されます。
各バースト転送に個別の要求が必要ないように、「バーストご
との要求」パラメーターは「false」に設定されます。
トランザクションが一度のみ起こるため、TD コンフィギュレーシ
ョンが保存される必要はありません。
例 4 のプロジェクト ファイル
本アプリケーション ノートに添付する AN52705.zip ファイル内
の Eg4_Mem_DMA_Mem プロジェクトはこの例をデモします。
この例の DMA コンフィギュレーション コードは例 1 と同じです。
関数に渡される引数は、上記のチャネルおよび TD コンフィギ
ュレーション表に記載されています。このプロジェクトのテスト
方法の詳細については、「付録 D: サンプル プロジェクト – テ
スト セットアップ」を参照してください。
www.cypress.com
文書番号: 001-75652 Rev. *A
16
PSoC® 3 および PSoC 5LP - DMA 入門
例 5: TD のチェーン化
このサンプル プロジェクトは、単一のチャネルで複数の TD を
使用し、TD 同士を連鎖する方法を示します。この例では、単
一の DMA チャネルと 2 つの TD を使用して、ADC データを 2
つの独立した RAM バッファへ交互に送信します。
これらの 2 つのトランザクションは、 TD[0]と TD[1]という 2 つ
の独立したトランザクション ディスクリプタを使ってコンフィギュ
レーションされ、図 14 に示すように、DMA の TD 連鎖機能に
よりチェーン化されます。
DMA チャネルは、2 つのトランザクションを行うためにコンフィ
ギュレーションされます。


トランザクション 1: ADC から RAM バッファ 1 へ
トランザクション 2: ADC から RAM バッファ 2 へ
図 14. TD チェーン化時のブロック図
Destination1 : RAM
Buffer1
16 bit
Sample 1
Sample 2
1
rst t2
Bu Burs
Source : ADC
...
...
DMA Channel
….
ADC
2 Bytes
Write
Read
Burst N1
Bur
st (
N1+
1)
EoC
r
Bu
(N
TD0àTD1
TD1àTD0
16 bit
Increment
Destination
Address
Sample 2
N2
1+
...
)
Interrupt
(ISR)
Destination2 : RAM
Buffer2
Sample 1
st
DMA
DMA
Request Done
(DRQ)
(NRQ)
Sample N1
...
DMA Transaction
complete signal
….
TD Pointer
Sample N2
TD[1]
TD[0]
Source
Destination
Transfer
Count
Source
Next TD
TD0 Property : Increment Destination address
Destination
Transfer
Count
Next TD
TD1 Properties : Increment Destination address,
: Generate transaction complete signal
この TD コンフィギュレーションの形態は、単一の TD の最大転送カウント (単一の DMA チャネルの場合は 4096 バイト) の最上限を
超えるために使用することができます。チェーン内のすべての TD のソース アドレスと宛先アドレスの上位 16 ビットは同一でなければ
ならないことに注意してください。
プロジェクトのトップ デザインは、例 2 と同様です。
www.cypress.com
文書番号: 001-75652 Rev. *A
17
PSoC® 3 および PSoC 5LP - DMA 入門
表 13. TD[1] コンフィギュレーション
例 5 の DMA コンフィギュレーション
このプロジェクトの DMA チャネルおよび TD のコンフィギ
ュレーションは、表 11、表 12、および表 13 に示します。
表 11. チャネル コンフィギュレーション
パラメーター
設定
パラメーター
プロジェクト設定
ソースアドレスの
下位
LO16(ADC_Delsig_DEC_OUTSAMP_P
TR)
宛先アドレスの下
位
LO16(adc_sampleArray2)
ソース アドレスの上位
HI16(CYDEV_PERIPH_BASE)
宛先アドレスの上位
HI16(CYDEV_SRAM_BASE)
(サンプル数 × サンプル当たりのバイト数)
バースト カウント
2 (2 バイト)
宛先アドレスのインクリメント:
TD_INC_DST_ADR
バーストごとに要求
1 (True)
最初の TD
TD[0]
TD の保存
1 (True)
TD プロパティ
表 12. TD[0] コンフィギュレーション
パラメーター
プロジェクト設定
ソースアドレスの
下位
LO16(ADC_Delsig_DEC_OUTSAMP_P
TR)
宛先アドレスの下
位
LO16(adc_sampleArray1)
(サンプル数 × サンプル当たりのバイト数)
DMA 完了イベントの生成:
DMA__TD_TERMOUT_EN
PSoC 3 に必要なスワップ イネーブル:
TD_SWAP_EN
次の TD
DMA 完了イベントの生成:
DMA__TD_TERMOUT_EN
次の TD
TD[0]
例 5 のプロジェクト ファイル
このアプリケーション ノートに添付する AN52705.zip ファ
イル内の Eg5_TD_Chaining は、TD チェーン化の例を
示しています。この例の DMA コンフィギュレーション コー
ドは例 1 と同じです。関数に渡される引数は、上記のチャ
ネルおよび TD コンフィギュレーション表に記載されてい
ます。このプロジェクトのテスト方法の詳細については、
24 ページの「付録 D: サンプル プロジェクト – テスト セッ
トアップ」を参照してください。
まとめ
N1×2
宛先アドレスのインクリメント:
TD_INC_DST_ADR
TD プロパティ
N2×2
PSoC 3 に必要なスワップ イネーブル:
TD_SWAP_EN
チャネルおよび TD のコンフィギュレーションは例 2 と同
様です。トランザクションを連鎖するために TD[0]の「次の
TD」パラメーターを TD[1]に設定します。その逆も同じで
す。
転送カウント
転送カウント
このアプリケーション ノートでは、PSoC 3 と PSoC 5LP
の DMA コントローラーについて説明しました。アプリケー
ション ノートでは、単純な PSoC Creator のサンプル プロ
ジェクトを使用して、各種のデータ転送用 DMA をコンフィ
ギュレーションする方法を示しました。詳細情報について
は、「PSoC 3 と PSoC 5LP テクニカル リファレンス マニ
ュアル」と「PSoC Creator DMA コンポーネント データシ
ート」を参照してください。
TD[1]
著者について
氏名: Anu M D
肩書き: シニアアプリケーション エンジニア
経歴: コーチンのモデル工科大学の電子通信工学学士。
連絡先: [email protected]
www.cypress.com
文書番号: 001-75652 Rev. *A
18
PSoC® 3 および PSoC 5LP - DMA 入門
付録 A: DMA コンフィギュレーション手順
ステップ 1: DMA チャネルの初期化
ステップ 2: TD の割り当て
Channel_Handle = DMA_DmaInitialize(
DMA_BYTES_PER_BURST,
DMA_REQUEST_PER_BURST,
HI16(Source Address),
HI16(Destination Address))
TD_Handle = CyDmaTdAllocate();
API 関数の DmaInitialize()は、次のようにいくつかの
DMA チャネル パラメーターをコンフィギュレーションしま
す。

DMA_BYTES_PER_BURST: 1 つ の バ ー ス ト で
DMA チャネルにより読み書きされるバイト数
例えば、8 ビットの ADC データを収集するために
DMA を定義する場合、DMA チャネルが各要求に応
じて転送元から転送先へ 1 バイトを転送する必要が
あるため、このパラメーターを「1」に設定します。16
ビット ADC データを収集したい場合は、このパラメー
ターを「2」に設定します。

DMA_REQUEST_PER_BURST: 各バーストに対
して個別の要求が必要かどうか判定するパラメータ
ー
「1」に設定すれば、各バースト転送を個別に要求す
る必要があります。0 に設定すれば、最初のバースト
転送に後続するバースト転送は個別の DMA 要求な
しで自動的に行われます。(最初のバースト転送だけ
は DMA 要求が必要です。)

HI16(Source Address): ソース アドレスの上位 16
ビット。HI16 は 32 ビット値またはアドレスの上位 16
ビットを指定するために PSoC Creator により作成さ
れるマクロです。

HI16(DestinationAddress): 宛先アドレスの上位
16 ビット。前述の表に記載されているマクロを使用し
て、PSoC 3 のソース アドレスと宛先アドレスの上位
16 ビットを識別します。
PSoC 3 の Keil コンパイラは Keil 固有の情報を変
数アドレスの上位 16 ビットに格納します。このため、
表 14 に示す以下の定数を使用します。これらの定
数は、特に DMA 転送の転送元または転送先が
RAM またはフラッシュ メモリの場合、PSoC 3 のソー
ス アドレスと宛先アドレスの上位 16 ビットをコンフィ
ギ ュ レ ー シ ョ ン す る た め に 、 HI16 マ ク ロ と 共 に
CyDevice.h で定義されています。
API 関数の CyDmaTdAllocate() は、TD のインスタンス
を作成し、その TD へハンドルを返します。他の API は、
TD ハンドルを TD のコンフィギュレーションに使用します。
複数の TD を作成するには、関数を何回も呼び出します。
ステップ 3: TD コンフィギュレーション
Channel_Handle = DMA_DmaInitialize(
DMA_BYTES_PER_BURST,
DMA_REQUEST_PER_BURST,
HI16(Source Address),
HI16(Destination Address);
API 関数の CyDmaTdSetConfiguration() は、次のパラ
メーターを使用し TD をコンフィギュレーションします。

TD_Handle: CyDmaTdAllocate() 関数により返さ
れるハンドル。

Transfer_Count: 転送元から転送先に転送する総
バイト数です。

Next_TD: TD チェーン内の次の TD のインデックス
です。この TD がチェーンの最後になる場合は、
DMA_DISABLE_TD (0xFE)のマクロを使用し、TD
の転送が完了した後に DMA チャネルを無効にしま
す。

TD_Property: DMA トランザクションのプロパティを
設定するために、20 ページの表 15 に示した TD コ
ンフィギュレーション レジスタのフラグを使用します。
TD プロパティをコンフィギュレーションするために、
すべてのフラグを論理和します。例えば、データ転送
中に 4 バイトをスワップするために TD を設定するに
は、以下を使用します。
(TD_SWAP_EN | TD_SWAP_SIZE4)
表 14. 上位 16 ビットのアドレス マクロ
ソース
DMA_SRC_BASE
ペリフェラル
CYDEV_PERIPH_BASE
RAM
CYDEV_SRAM_BASE
フラッシュ
CYDEV_FLS_BASE
www.cypress.com
文書番号: 001-75652 Rev. *A
19
PSoC® 3 および PSoC 5LP - DMA 入門
表 15. TD プロパティ
コンフィギュレーション フラグ
機能
TD_SWAP_EN
エンディアン スワップを行う。転送元から転送先へデータを転送しながらバイトをスワップ
TD_SWAP_SIZE4
スワップ サイズを 4 バイトに設定。デフォルトのスワップ サイズは 2 バイト
TD_AUTO_EXEC_NEXT
現在の TD が完了すると、チェーンの次の TD が自動的にアクティブになる
TD_TERMIN_EN
trq 入力ラインでポジティブ エッジが発生すると、この TD を中止。そのポジティブ エッジはバースト中
に発生しなければならない。DMAC がポジティブ エッジを待機するのはこの時だけ
DMA__TD_TERMOUT_EN
このフラグを使用すれば、TD 転送が完了するとパルスが nrq ライン上で発生する。このフラグは、
DMA コンポーネント インスタンスに固有のもので、コンポーネントのインスタンス ヘッダ ファイルで定
義される。例えば、トップ デザインでは DMA コンポーネント インスタンス名が DMA_1 の場合、イン
スタンスの TERMOUT マクロは、「DMA_1_dma.h」に含まれる「DMA_1__TD_TERMOUT_EN」
TD_INC_DST_ADR
各バースト データ トランザクションのサイズに応じて宛先アドレスをインクリメント
TD_INC_SRC_ADR
各バースト データ トランザクションのサイズに応じてソース アドレスをインクリメント
ステップ 4:
TD の転送元と転送先のコンフィギュレーション
ステップ 5: チャネルに TD を接続
CyDmaChSetInitialTd(Channel_Handle,
TD_Handle)
CyDmaTdSetAddress(TD_Handle,
LO16(source),
LO16(destination))
API 関数の CyDmaTdSetAddress() は、次のパラメータ
ーを使用して、TD のソース アドレスと宛先アドレスを設定
します。

TD_Handle: CyDmaTdAllocate() 関数により返さ
れたハンドル


LO16(source): ソース アドレスの下位 16 ビット
LO16(destination): 宛先アドレスの下位 16 ビット
PSoC は、高度にプログラム可能です。多くのコンポーネ
ントは、プログラム可能なデジタルとアナログ ブロックから
作成され、ペリフェラルの物理位置はデザインに応じて変
更されます。従って、すべてのソース アドレスと宛先アド
レスをリストする従来のレジスタ マップを作ることは不可
能です。
その代わりに、各コンポーネントのレジスタは、ビルドのプ
ロセス中に PSoC Creator により生成されたコンポーネン
ト API ヘッダ ファイルにて定義されています。コンポーネ
ントのレジスタ アドレスを識別するために、これらのヘッダ
ファイルを確認する必要があります。
www.cypress.com
API 関数の CyDmaChSetInitialTD() は DMA チャネル
の最初の TD を設定します。

Channel_Handle: DMA_DmaInitialize() 関数によ
り返される DMA インスタンスのハンドル

TD_Handle: CyDmaTdAllocate() 関数により返さ
れたハンドル
ステップ 6: DMA チャネルの有効化
CyDmaChEnable(Channel_Handle,
Preserve_TD)
API 関数の CyDmaChEnable()は DMA チャネルを有効
にします。

Channel_Handle: DMA_DmaInitialize() 関数によ
り返される DMA インスタンスのハンドル

Preserve_TD: TRUE の場合、DMA チャネルは TD
を繰り返すことができるように、TD コンフィギュレーシ
ョン (転送元、転送先および転送カウント) を保存
文書番号: 001-75652 Rev. *A
20
PSoC® 3 および PSoC 5LP - DMA 入門
その他の重要な DMA API 関数
CPU からの要求で DMA チャネルを有効にするためには、以下の関数を使用します。
CyDmaChSetRequest(Channel_Handle, CPU_REQ);
DMA チャネルを無効にするには、以下の関数を使用します。
CyDmaChDisable(Channel_Handle);
付録 B: DMA ウィザードによるコンフィギュレーション
付録 A で説明した手順の代わりに、DMA ウィザードによ
り、簡単に DMA チャネルと TD ファームウェアのコンフィ
ギュレーションを定義することができます。ただし、ウィザ
ードは、DMA 転送元または転送先として機能しているペ
リフェラルを少数のみサポートしています。ペリフェラルが
サポートされない場合、付録 A で説明されているコンフィ
ギュレーション手順に従ってください。
ステップ 2: グローバル設定を選択
図 16 に示すように、DMA 転送グローバル設定を選択し
ます。
図 16. グローバル設定
DMA ウ ィ ザ ー ド を 起 動 す る に は 、 PSoC Creator >
Tools>DMA Wizard をクリックしてください。
ステップ 1: DMA チャネル (DMA コンポーネント インスタ
ンス) を選択
図 15 に示すようにコンフィギュレーションする DMA チャ
ネルを選択します。
図 15. DMA チャネルの選択
このダイアログを使用して DMA チャネル コンフィギュレ
ーション パラメーターを選択します。
Source (転送元) と Destination (転送先): ソース アド
レスと宛先アドレスの上位 16 ビットです。
Bytes per Burst (バースト当たりのバイト数): 単一のバ
ーストで転送するバイト数を決めます。
DMA コンポーネントの
インスタンス名
Each Burst Requires a Request (各バーストごとに要
求が必要): 各バーストには個別の要求が必要かどうか
決めます。
次のようにダイアログのパラメーターを選択します。

Project (プロジェクト): PSoC Creator プロジェクト
の名前

DMA: プロジェクト内の DMA コンポーネント インスタ
ンスの名前
完了したら、「Next」をクリックします。
Number of TDs (TD 数): DMA チャネルに関連するトラ
ンザクション ディスクリプタの数 (1~128) を選択します。
Single Chain or Loop (シングル チェーンまたはルー
プ): どの「次の TD」がチェーンの最後の TD になるかを
決 め ま す 。 シ ン グ ル チ ェ ー ン の 場 合 、 次 の TD は
DMA_DISABLE_TD (0xFE) です。ループの場合、次の
TD は最初の TD です。
完了したら、「Next」をクリックします。
www.cypress.com
文書番号: 001-75652 Rev. *A
21
PSoC® 3 および PSoC 5LP - DMA 入門
ステップ 3: チャネル用のトランザクション ディスクリプタの定義
図 17 に示すように、DMA 転送グローバル設定を選択します。表 16 は、各 TD コンフィギュレーション パラメーターについて
説明します。
図 17. トランザクション ディスクリプタの追加
表 16. TD コンフィギュレーションの詳細
フィールド
説明
TD#
トランザクション ディスクリプタの論理的番号を表示
Endian
2 または 4 バイト エンディアンの バイト スワッピングを有効にする。これにより、データが転送元から転送先へ移動中
にバイトをスワップすることが可能になる。Bytes per Burst (バースト当たりのバイト数) の設定は選択したエンディア
ンの倍数に設定されていなければならない。これは通常、エンディアンの違いのため PSoC 3 のメモリとペリフェラル間
の DMA 転送に使用される
Term In
TERMIN (trq) 信号の立ち上がりエッジで TD トランザクションを中止することを可能にする
Term Out
TD が終了すると TERMOUT (nrq) 信号を生成することを可能にする
Length
TD の転送カウントを バイト単位 (0~4095) で指定する。これは、トランザクションを完了するために DMA が転送す
べき総バイト数
Source
DMA 転送用ソース アドレスの下位 16 ビット。選択した転送元が (メモリではなく) コンポーネントの場合、ソース アドレ
スのドロップダウン リストが DMA ウィザードで提供される。また、手動でソース アドレスを変更したり入力することも可
能
Inc (Source)
DMA がトランザクションを行っている間にソース アドレスをインクリメントすることを可能にする。これが有効になってい
る場合、DMA が転送元からデータを読み出すたびに、ソース アドレスは DMA が読み出したバイト数でインクリメントさ
れる。トランザクション全体 (転送カウント) が終了するまで、DMA はソース アドレスをインクリメントする
Destination
DMA 転送の転送先アドレスの下位 16 ビット。選択した転送先が (メモリではなく) コンポーネントの場合、宛先アドレス
のドロップダウンリストが DMA ウィザードで提供される。また、手動で宛先アドレスを変更したり入力することも可能
Inc(Destination)
DMA がトランザクションを行っている間に宛先アドレスをインクリメントすることを可能にする。トランザクション全体 (転
送カウント) が終了するまで、DMA は宛先アドレスをインクリメントする
Auto Next
追加の DMA 要求なしで、自動的に次の TD を実行する
Next TD
TD チェーン内の次の論理的 TD。このチェーンがこの TD で終わる場合、END (終了) に設定
完了したら、「Next」をクリックします。必要なコードが生成されます。
www.cypress.com
文書番号: 001-75652 Rev. *A
22
PSoC® 3 および PSoC 5LP - DMA 入門
ステップ 4: DMA ウィザードで作成されたコードをコピー
図 18. 生成コード
DMA チャネルと TD のコンフィギュレーションが完了したら、ウ
ィザードが DMA チャネルのためにコードを生成します。このコ
ードは、DMA チャネルと TD のコンフィギュレーションを含み、
図 18 に示すように、DMA ウィザード ダイアログ内のウィンド
ウで生成されます。コードを使用するには、ウィンドウ内のすべ
てのコードを選択し、コピーし、main.c に貼り付けます。
ウィザードの詳細については、「PSoC Creator Help」ファイル
を参照してください。
付録 C: DMA チャネルの優先順位の設定
複数の DMA チャネル要求がアクティブになった場合、DMA チャネルは、チャネル優先順位設定に応じて、DMAC により処理されます。
各 DMA チャネルには、8 つの異なる優先レベルの内から 1 つを与えることができます。図 19 に示すように、Design Wide
Resources (*.cydwr) > DMA タブをクリックして PSoC Creator で DMA チャネルの優先順位を設定することができます。
図 19. DMA チャネルの優先順位の設定
CPU と DMAC の要求が同時に PHUB 上の同じスポークにアクセスした場合、CPU はデフォルトで優先されます。PHUB は、DMA と
CPU 間、および DMA チャネル間のアービトレーションを管理します。詳細については、「PSoC® 3、PSoC® 5LP アーキテクチャ TRM」
を参照してください。
www.cypress.com
文書番号: 001-75652 Rev. *A
23
PSoC® 3 および PSoC 5LP - DMA 入門
付録 D: サンプル プロジェクト – テスト セットアップ
例 1: ペリフェラル間の転送 – Eg1_ADC_DMA_DAC
このサンプル プロジェクトでは、ADC のサンプリング周波数 (fs) は 384kHz です。デルタ シグマ ADC は 0.22 fs で-3dB 降下のロー
パス特性を持っているため、入力周波数が 84kHz 以下の場合、出力が最適に再構成されます。テスト セットアップを次に示します。
1.
ファンクションジェネレータを P0[2]ピン (ADC の入力) に接続します。
2.
100Hz の正弦波を生成するようにファンクションジェネレータを設定します。
3.
オシロスコープ プローブを P0[0]ピン (VDAC の出力) に接続します。
4.
プロジェクトをビルドし、デバイスをプログラムします。
5.
オシロスコープ上の P0[0]ピンからの出力を見てください。入力と同様に、周波数 100Hz の正弦波が生成されているはずです。
例 2: ペリフェラルからメモリへの転送 – Eg2_ADC_DMA_Mem
テスト セットアップを次に示します。
1.
入力信号を P0[2]ピン (ADC の入力) に接続します。入力が ADC の範囲内 (VSSA~2.048 V) であることを確認してください。
2.
DVK 上のスイッチ (SW1) を P6[1]に接続します。
3.
プロジェクトをビルドします。
4.
図 20 に示すように、プログラムをダウンロードし、デバッグを開始するために、F5 キーを押す、またはデバッグのアイコンをクリック
します。
図 20. デバッグ ボタン
5.
図 21 に示すように、ウォッチ変数として adc_sampleArray を追加します。
図 21. ウォッチ変数
www.cypress.com
文書番号: 001-75652 Rev. *A
24
PSoC® 3 および PSoC 5LP - DMA 入門
6.
図 22 に示すように、if(DMADone_flag) ループ内にブレークポイントを設定します。
図 22. ブレークポイントの追加
7.
F5 キーを押してプログラムを実行します。P6[1]に接続されたスイッチ (SW1) を押して、DMA を有効にし、ADC サンプルのバッフ
ァリングを開始します。DMA が指定されたサンプル数を ADC からメモリに転送した後、実行はブレークポイントで停止します。結
果は、図 23 に示すように、ウォッチ ウィンドウで adc_sampleArray を監視することにより確認することができます。
図 23. ウォッチ ウィンドウでの ADC サンプル
例 3: メモリからペリフェラルへの転送 – Eg3_Mem_DMA_DAC
テスト セットアップを次に示します。
1.
オシロスコープ プローブを P0[0]ピン (VDAC の出力) に接続します。
2.
プロジェクトをビルドして、デバイスをプログラムします。
3.
オシロスコープで周波数 7.8kHz の正弦波を観察します。
例 4: メモリ間の転送 – Eg4_Mem_DMA_Mem
テスト セットアップを次に示します。
1.
キャラクタ LCD モジュールを CY8CKIT-001 PSoC の開発キットの P18 ヘッダ (LCD モジュールのポート 2) に接続します。
2.
J12 ジャンパが、LCD に電源を供給するために ON の位置にあることを確認します。
3.
プロジェクトをビルドして、デバイスをプログラムします。
4.
LCD ディスプレイを見ます。最初の行は、宛先アレイの内容を表示します。最初はすべての値がゼロです。1 秒の遅延の後、最初
の 行 は 、 00 ~ 07 を 表 示 し 、 DMA が フ ラ ッ シ ュ か ら RAM に デ ー タ を 正 常 に 転 送 し た こ と を 示 し ま す 。 2 行 目 に は 、
「TRANSFERRED」(転送完了) メッセージが表示されます。図 24 は LCD ディスプレイの例を示します。
図 24. DMA 転送の LCD ディスプレイ
0 0 0 1 0 2 0 3 0 4 0 5 0 6 0 7
T R A N S F E RR E D
www.cypress.com
文書番号: 001-75652 Rev. *A
25
PSoC® 3 および PSoC 5LP - DMA 入門
例 5: TD のチェーン化 – Eg5_TD_Chaining
このテスト セットアップは、例2のテスト セットアップと同様です。テストのセットアップ手順は次の通りです。
1.
入力信号を P0[2]ピン (ADC の入力)に接続します。入力が ADC の範囲内 (VSSA~2.048V) であることを確認してください。
2.
DVK 上のスイッチ (SW1) を P6[1]に接続します。
3.
プロジェクトをビルドします。
4.
図 25 に示すように、プログラムをダウンロードし、デバッグを開始するために、F5 キーを押す、またはデバッグのアイコンをクリック
します。
図 25. デバッグ ボタン
5.
図 26 に示すように、ウォッチ変数として adc_samplearray1 と adc_samplearray2 を追加します。
図 26. ウォッチ変数
6.
図 27 に示すように、if(DMADone_flag) ループ内にブレークポイントを設定します。
図 27. ブレークポイントの追加
www.cypress.com
文書番号: 001-75652 Rev. *A
26
PSoC® 3 および PSoC 5LP - DMA 入門
7.
F5 キーを押してプログラムを実行します。P6[1]に接続されたスイッチ (SW1) を押して、DMA を有効にし、ADC サンプルのバッフ
ァリングを開始します。DMA が指定されたサンプル数を ADC からメモリに転送した後、実行はブレークポイントで停止します。結
果を検証するには、図 28 に示すようにウォッチ ウィンドウで adc_sampleArray1 と adc_sampleArray2 を監視します。
図 28. ウォッチ ウィンドウでの ADC サンプル
付録 E: よくある質問
1.
DMA を使用してどのように、4095 バイト以上をバッファリングできますか?
TD の最大転送カウントは 4095 バイトに制限されます。1 つの DMA チャネルを使って 4095 バイト以上を転送する必要がある場
合、例 5 に示すように、複数の TD を使用し、それらを連鎖します。
2.
どのようにして、DMA データ転送のためのペリフェラルのソース アドレスと宛先アドレスを確定できますか?
PSoC は、高度にプログラム可能です。多くのコンポーネントは、プログラム可能なデジタルとアナログ ブロックから作成され、ペリ
フェラルの物理位置はデザインに応じて変更されます。従って、すべてのソース アドレスと宛先アドレスをリストする従来のレジスタ
マップを作ることは不可能です。
その代わりに、各コンポーネントのレジスタは、ビルドのプロセス中に PSoC Creator により生成されたコンポーネント API ヘッダ
ファイルにて定義されています。コンポーネントのレジスタ アドレスを識別するために、これらのヘッダ ファイルを確認する必要が
あります。
3.
どのようにして、DMA を UART、SPI などの通信プロトコルと併用しますか?
UART や SPI などの通信プロトコルを DMA と共に使用する場合は、データ転送のために内部割り込みがトリガーされないように、
バッファ サイズを 4 以下に設定します。ハードウェアの FIFO ポインタを DMA の読み出しと書き込みデータ アドレスとして使用し、
FIFO レベルのステータスを割り込みとしてコンフィギュレーションして DMA をトリガーします。DMA チャネルのハードウェア要求を、
FIFO レベルで使用できるように、レベルトリガーに設定します。
4.
DMA 転送のタイミングの詳細を教えてください。
DMA 転送のタイミングの詳細は「PSoC 3、PSoC 5LP テクニカル リファレンス マニュアル」を参照してください。DMA のタイミング
に関する詳細説明は、このアプリケーション ノートの範囲外です。
www.cypress.com
文書番号: 001-75652 Rev. *A
27
PSoC® 3 および PSoC 5LP - DMA 入門
改訂履歴
文書名: PSoC® 3 および PSoC 5LP - DMA 入門– AN52705
文書番号: 001-75652
版
ECN 番号
変更者
発行日
**
3497899
NITA
01/20/2012
これは英語版 001-52705 を翻訳し た日本語版 001-75652 Rev. **です。
*A
4716723
HZEN
04/02/2015
これは英語版001-52705 Rev. *Iを翻訳し た日本語版001-75652 Rev. *Aです。
www.cypress.com
変更内容
文書番号: 001-75652 Rev. *A
28
PSoC® 3 および PSoC 5LP - DMA 入門
ワールドワイドな販売と設計サポート
サイプレスは、事業所、ソリューション センター、メーカー代理店および販売代理店の世界的なネットワークを保持しています。お客様
の最寄りのオフィスについては、サイプレスのロケーション ページをご覧ください。
PSoC®ソリューション
製品
車載用
cypress.com/go/automotive
psoc.cypress.com/solutions
クロック&バッファ
cypress.com/go/clocks
PSoC 1 | PSoC 3 | PSoC 5LP
インターフェース
cypress.com/go/interface
照明&電源管理
cypress.com/go/powerpsoc
cypress.com/go/plc
メモリ
サイプレス開発者コミュニティ
コミュニティ | フォーラム | ブログ
| ビデオ | トレーニング
cypress.com/go/memory
光学式ナビゲーション センサ
ー
cypress.com/go/ons
PSoC
cypress.com/go/psoc
タッチ センシング
cypress.com/go/touch
USB コントローラー
cypress.com/go/usb
ワイヤレス/RF
cypress.com/go/wireless
PSoC はサイプレス セミコンダクタ社の登録商標です。本書で言及するその他すべての商標または登録商標は、各社の所有物です。
Cypress Semiconductor
198 Champion Court
San Jose, CA 95134-1709
Phone
Fax
Website
: 408-943-2600
: 408-943-4730
: www.cypress.com
© Cypress Semiconductor Corporation, 2009-2015. 本文書に記載される情報は予告なく変更される場合があります。Cypress Semiconductor Corporation
(サイプレス セミコンダクタ社) は、サイプレス製品に組み込まれた回路以外のいかなる回路を使用することに対して一切の責任を負いません。サイプレス セミコ
ンダクタ社は、特許またはその他の権利に基づくライセンスを譲渡することも、または含意することもありません。サイプレス製品は、サイプレスとの書面による合
意に基づくものでない限り、医療、生命維持、救命、重要な管理、または安全の用途のために使用することを保証するものではなく、また使用することを意図したも
のでもありません。さらにサイプレスは、誤動作や故障によって使用者に重大な傷害をもたらすことが合理的に予想される生命維持システムの重要なコンポーネ
ントとしてサイプレス製品を使用することを許可していません。生命維持システムの用途にサイプレス製品を供することは、製造者がそのような使用におけるあら
ゆるリスクを負うことを意味し、その結果サイプレスはあらゆる責任を免除されることを意味します。
このソースコード (ソフトウェアおよび/またはファームウェア) はサイプレス セミコンダクタ社 (以下「サイプレス」) が所有し、全世界の特許権保護 (米国およびそ
の他の国)、米国の著作権法ならびに国際協定の条項により保護され、かつそれらに従います。サイプレスが本書面によりライセンシーに付与するライセンスは、
個人的、非独占的かつ譲渡不能のライセンスであり、適用される契約で指定されたサイプレスの集積回路と併用されるライセンシーの製品のみをサポートするカ
スタム ソフトウェアおよび/またはカスタム ファームウェアを作成する目的に限って、サイプレスのソース コードの派生著作物をコピー、使用、変更そして作成す
るためのライセンス、ならびにサイプレスのソース コードおよび派生著作物をコンパイルするためのライセンスです。上記で指定された場合を除き、サイプレスの
書面による明示的な許可なくして本ソース コードを複製、変更、変換、コンパイル、または表示することはすべて禁止します。
免責条項: サイプレスは、明示的または黙示的を問わず、本資料に関するいかなる種類の保証も行いません。これには、商品性または特定目的への適合性の黙
示的な保証が含まれますが、これに限定されません。サイプレスは、本文書に記載される資料に対して今後予告なく変更を加える権利を留保します。サイプレス
は、本文書に記載されるいかなる製品または回路を適用または使用したことによって生ずるいかなる責任も負いません。サイプレスは、誤動作や故障によって使
用者に重大な傷害をもたらすことが合理的に予想される生命維持システムの重要なコンポーネントとしてサイプレス製品を使用することを許可していません。生命
維持システムの用途にサイプレス製品を供することは、製造者がそのような使用におけるあらゆるリスクを負うことを意味し、その結果サイプレスはあらゆる責任
を免除されることを意味します。
ソフトウェアの使用は、適用されるサイプレス ソフトウェア ライセンス契約によって制限され、かつ制約される場合があります。
www.cypress.com
文書番号: 001-75652 Rev. *A
29