SPxDR_IRQ

SPxDR_IRQ ( SPORTx DMA Transmit Interrupt )はSPORT受信DMAチャンネルが発生した割り込みをクリアします。

ADSP-2191のコアは内蔵ペリフェラルの割り込みをレベルとして受け付けます。割り込みをクリアするにはペリフェラルごとに割り込み信号を何らかの方法でクリアします。SPORT受信DMAの場合割り込みをクリアするにはSPxDR_IRQのbit1に1を書き込みます。

SPORTが3系統あるため、SP0DR_IRQ、SP1DR_IRQ、SP2DR_IRQの三本が用意されています。

レジスタの構造

このレジスタは図1のような構造をもっています。初期値は0です。

図1 SPxDR_IRQレジスタの構造

各ビットの意味は以下のとおりです。

DCOMI : DMA Complete Interrupt
DMA割り込みをクリアするビットです。"1"を書き込むとDMA割り込みをクリアします。
DERI : DMA ERROR Interrupt
DMAエラー割り込みをクリアするビットです。"1"を書き込むとDMAエラー割り込みをクリアします。

API

C/C++言語用に以下のインターフェースが用意されています。宣言はsysreg.hで行われています。SPxDR_IRQにアクセスする前には必ずIOPGにSPORTx_Control_Pageを設定してください。SPORTはポートごとにIOページが異なりますので注意が必要です。

SPORT0の場合は以下のとおりです。

// #include <sysreg.h>
// #include <def2191.h>

sysreg_write(sysreg_IOPG, SPORT0_Controller_Page)   // SPORT0ページに設定

io_space_write(SP0DR_IRQ, 値)         // SP0DR_IRQに値を設定
変数 = io_space_read(SP0DR_IRQ)       // SP0DR_IRQの値を取得

SPORT1の場合は以下のとおりです。

// #include <sysreg.h>
// #include <def2191.h>

sysreg_write(sysreg_IOPG, SPORT1_Controller_Page)   // SPORT1ページに設定

io_space_write(SP1DR_IRQ, 値)         // SP1DR_IRQに値を設定
変数 = io_space_read(SP1DR_IRQ)       // SP1DR_IRQの値を取得

SPORT2の場合は以下のとおりです。

// #include <sysreg.h>
// #include <def2191.h>

sysreg_write(sysreg_IOPG, SPORT2_Controller_Page)   // SPORT2ページに設定

io_space_write(SP2DR_IRQ, 値)         // SP2DR_IRQに値を設定
変数 = io_space_read(SP2DR_IRQ)       // SP2DR_IRQの値を取得

アナログデバイセズが配布しているmcmの中のビット定義ファイルdef2191bit.hから関連するビット定義部分をここに引用します。

                // Definition for xxxD_IRQ
#define DERI            BIT_1
#define DCOMI           BIT_0

参照情報

項目 マニュアルのページ等
説明 HR B-27
DMAの解説 HR 6-1
DMA開始手続き HR 6-6
2191空挺団 | プログラム | EZ-KIT | こぼれ話 | アーキテクチャー | 命令 | レジスタ | DSP掲示板 | FAQ |