SPx_MCMC1

SPx_MCMC1 ( SPORTx Multi-Channel Configuration 1 )レジスタは、シリアルポートのマルチチャンネル動作を設定するための16ビットレジスタです。このレジスタは送受兼用です。

SPORTが3系統あるため、SP0_MCMC1、SP1_MCMC1、SP2_MCMC1の三本が用意されています。

レジスタの構造

このレジスタは16ビットレジスタです。リセット後は0に初期化されます。図1にレジスタの構造を示します。

SPx_MCMC1

図1 レジスタの構造

以下に各フィールドの説明を行います。値はSPORTがディセーブルのときにだけ変更できます。

MCM : Multi-Channel Mode

マルチチャンネルモードを有効にします。

  • 1のとき、マルチチャンネルモードです。フレーム信号は全チャンネル送受信毎に送出されます。
  • 0のとき、ノーマルモードです。フレーム信号は1ワード送受信毎に送出されます。
MFD : Multi-Channel Frame Delay

マルチチャンネルモードにおいてフレーム信号からフレームの最初のビットまでの遅延量を示す負号無し整数フィールドです。単位はビットです。

WSIZE : Window Size

ウインドウ幅を指定する4ビットの負号無し整数フィールドです。ここに値Nを設定すると、ウインドウ幅WはW=8*(N+1)となります。フィールドの初期値は0ですので、ウインドウ幅の初期値は8となります。

WOFF : Window Offset

ウインドウのオフセットを指定する7ビットの負号無し整数フィールドです。ここに値Nを設定すると、データ転送ウインドウはN番目のチャンネルから始まります。

上で出てくるウインドウとは、大規模なマルチチャンネル転送において実際にデータ転送を行うチャンネル領域を指定するものです。例えば128chのシリアル転送で全チャンネル用のバッファを用意すると、大きなメモリーを必要とします。しかし、実際に転送するチャンネルが例えば8-15chであれば、実際に転送に必要なのは8chだけとなり、メモリーを浪費していることになります。そこで、上の8-15chをウインドウとして指定してやれば(WOFF=8, WSIZE=0)、転送用のDMAバッファは8ワードで済みます。このようにウインドウを使えばDMAバッファを節約できます。

API

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#define WOFF_OFST       9
#define WOFF_MASK       ( 0x7f << WOFF_OFST )
#define WSIZE_OFST      5
#define WSIZE_MASK      ( 0x0f << WSIZE_OFST )
#define MFD_OFST        1
#define MFD_MASK        ( 0x0f << MFD_OFST )
#define MCM             1

参照情報

項目 マニュアルのページ等
レジスタ説明 HR B-40
ウインドウ HR 9-35

2191空挺団 | プログラム | EZ-KIT | こぼれ話 | アーキテクチャー | 命令 | レジスタ | DSP掲示板 | FAQ |