SPx_STATR

SPx_STATR ( SPORTx STATus )レジスタは、シリアルポートの状況を表します。このレジスタは読み出し専用です。

SPORTが3系統あるため、SP0_STATR、SP1_STATR、SP2_STATRの三本が用意されています。

レジスタの構造

このレジスタは図1のようなビットフィールド構造をもつ16ビットレジスタです。リセット後の値は不定です。

SPx_STATR

図1 SPx_STATRの構造

以下に各ビットフィールドの説明を行います。詳しくはHRを参照してください。

ROVF : Receive Overflow

受信部のオーバーフロー状態を表します。このフラグは一度"1"になるとシリアルポートをディセーブルにするまで"0"に戻りません。

  • 1のとき、受信部にオーバーフローが発生したことを示します。
  • 0のとき、受信部にオーバーフローが発生していないことを示します。
RXS : Receive Status

受信バッファの状態を反映します。プロセッサコアがこのフラグを読むたびにアップデートされます。HR B-36にはリセット態が不定とかいてありますが、0の間違いではないでしょうか。あるいはSPORTをイネーブルにしたときに0になるのでしょうか。

  • 1のとき、SPx_RXにはデータがあります。
  • 0のとき、SPx_RXは空です。
TXS : Receive Status

送信バッファの状態を反映します。プロセッサコアがこのフラグを読むたびにアップデートされます。HR B-36にはリセット態が不定とかいてありますが、0の間違いではないでしょうか。あるいはSPORTをイネーブルにしたときに0になるのでしょうか。

  • 1のとき、SPx_TXにはデータがあります。
  • 0のとき、SPx_TXは空です。
TUVF : Transmit Underflow

送信部のアンダーフロー状態を表します。このフラグは一度"1"になるとシリアルポートをディセーブルにするまで"0"に戻りません。

  • 1のとき、送信部にアンダーフローが発生したことを示します。
  • 0のとき、送信部にアンダーフローが発生していないことを示します。
CHNL : Channnel

負号なしの7ビット整数フィールドです。この番号はマルチチャンネルモード(TDM)で現在フレーム先頭から何番目のチャンネルが送受信されているかを示します。0が基点です。なお、通常モードとチャンネル選択オフセットモードでは動作が異なることに気をつけてください。

通常モードではフレームの先頭が0であるのに対して、チャンネル選択オフセットモードではオフセットに達したところでチャンネルが0になります。

例えば、オフセットが16でウインドウサイズが8であるとします。通常モードではCHNLに表示される値は0から23であり、これはフレーム先頭からのチャンネル番号を示します。これにたいしてチャンネル選択オフセットモードでは、フレーム先頭から16チャンネル経過したときにCHNLが0になり、ウインドウの末尾で7になります。

API

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

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

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

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

変数 = io_space_read(SP0_STATR)       // SP0_STATRの値を取得

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

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

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

変数 = io_space_read(SP1_STATR)       // SP1_STATRの値を取得

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

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

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

変数 = io_space_read(SP2_STATR)       // SP2_STATRの値を取得

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

                // Definition for SPx_STATR
#define SPT_CHNL_OFST   4
#define SPT_CHNL_MASK   ( 0x07f << SPT_CHNL_OFST )
#define SPT_TUVF                BIT_3
#define SPT_TXS                 BIT_2
#define SPT_RXS                 BIT_1
#define SPT_ROVF                BIT_0

参照情報

項目 マニュアルのページ等
レジスタ説明 HR B-36

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