SPx_RCR

SPx_RCR ( SPORTx Receive Control )レジスタは、シリアルポートの受信機能を設定するためのレジスタです。

SPORTが3系統あるため、SP0_RCR、SP1_RCR、SP2_RCRの三本が用意されています。

レジスタの構造

このレジスタは16ビットのレジスタです。リセット後は0に初期化されます。

SPx_RCR

図1 レジスタの構造

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

RSPEN : Recieve SPORT Enable

SPORTの受信機能を有効にします。

  • 1のとき、受信機能は有効です。
  • 0のとき、受信機能は無効です。
ICLK : Internal Clock

RCLKを内部生成するか決めます。

  • 1のとき、RCLKを内部生成します。
  • 0のとき、RCLKは外部で生成したものを入力します。
DTYPE : Data Type

受信データの型を指定します。

  • 11のとき、データをA則で圧縮して受信します。
  • 10のとき、データをμ則で圧縮して受信します。
  • 01のとき、データを符号拡張して受信します。
  • 00のとき、データを0拡張して受信します。
SENDEN : SPORT little Endian

SPORT受信データのエンディアンを指定します。

  • 1のとき、LSBから受信します。
  • 0のとき、MSBから受信します。
SLEN : SPORT word Length

受信ワード長をビット単位で指定します。0,1を指定してはいけません。Nを指定すると、実際のワード長はN+1になります。最大のNは15なので、最大ワード長は16になります。

IRFS : Internal Receive Frame Sync

フレーム同期を内部生成するよう指定します。

  • 1のとき、内部生成します。
  • 0のとき、外部から入力します。
RFSR : Receive Frag Sync Required

フレーム同期を行うかどうか指定します。マルチチャンネル(TDM)時には0にします。

  • 1のとき、フレーム同期を行います。
  • 0のとき、フレーム同期は行いません。
LRFS : Low Receive Frame Sync

フレーム信号の論理を指定します。

  • 1のとき、フレーム信号は負論理です。
  • 0のとき、フレーム信号は正論理です。
LATFS : Late Frame Sync

フレーム信号の遅延を指定します。マルチチャンネル(TDM)時には0にします。

  • 1のとき、フレーム信号はワードの最後のビットにあります。
  • 0のとき、フレーム信号はワードの最初のビットにあります。
CKRE : Clock Rising Edge for data sampling.

クロックとデータの関係を指定します。

  • 1のとき、クロックのフォーリング・エッジでデータをドライブし、ライジング・エッジでデータをサンプルします。
  • 0のとき、クロックのライジング・エッジでデータをドライブし、フォーリング・エッジでデータをサンプルします。
ICLKD : Internal Clock Drive Disable

RCLKをドライブするかどうか指定します。

  • 1のとき、TCLKをドライブしません。
  • 0のとき、TCLKをドライブします。

マルチチャンネル設定時の注意

マルチチャンネル(TDM)でSPORTを使う場合、一部のビットは値を以下のように設定しなければ正しく動きません。

RCLKピンはTCLKピンと接続してください。

API

C/C++言語用に以下のインターフェースが用意されています。宣言はsysreg.hで行われています。SPx_RCRにアクセスする前には必ず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_RCR, 値)         // SP0_RCRに値を設定
変数 = io_space_read(SP0_RCR)       // SP0_RCRの値を取得

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

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

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

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

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

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

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

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

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

                // Definition for SPx_TCR
                // Caution. SLEN 03-16 mean, size of slot is 3-16
                // Histry of change : SLENxx->SLEN_xx, added SLEN_OFST, 
                //                  SLEN_MASK, DYTPE_OFST, DTYPE_MASK
#define ICLKD           BIT_15
#define CKRE            BIT_14
#define LATFS           BIT_13
#define LTFS            BIT_12
#define DITFS           BIT_11
#define TFSR            BIT_10
#define ITFS            BIT_9
#define SLEN_OFST       5
#define SLEN_MASK       ( 0x0f << SLEN_OFST )
#define SLEN_3          ( 2 << SLEN_OFST )
#define SLEN_4          ( 3 << SLEN_OFST )
#define SLEN_5          ( 4 << SLEN_OFST )
#define SLEN_6          ( 5 << SLEN_OFST )
#define SLEN_7          ( 6 << SLEN_OFST )
#define SLEN_8          ( 7 << SLEN_OFST )
#define SLEN_9          ( 8 << SLEN_OFST )
#define SLEN_10         ( 9 << SLEN_OFST )
#define SLEN_11         ( 10 << SLEN_OFST )
#define SLEN_12         ( 11 << SLEN_OFST )
#define SLEN_13         ( 12 << SLEN_OFST )
#define SLEN_14         ( 13 << SLEN_OFST )
#define SLEN_15         ( 14 << SLEN_OFST )
#define SLEN_16         ( 15 << SLEN_OFST )
#define SENDN           BIT_4
#define DTYPE_OFST      2
#define DTYPE_MASK      ( 3 << DTYPE_OFST )
#define DTYPE_ZERO      ( 0 << DTYPE_OFST )
#define DTYPE_SIGN      ( 1 << DTYPE_OFST )
#define DTYPE_MU        ( 2 << DTYPE_OFST )
#define DTYPE_A         ( 3 << DTYPE_OFST )
#define ICLK            BIT_1
#define TSPEN           BIT_0

                // Definition for SPx_RCR
#define LRFS            BIT_12
#define RFSR            BIT_10
#define IRFS            BIT_9
#define RSPEN           BIT_0

参照情報

項目 マニュアルのページ等
レジスタ説明 HR B-33
SPx_TCR設定 HR 9-15

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