SPIFLGx

SPICTLx( SPI FLAG )はSerial Peripheral Interfaceがマスターモードのときに使用するスレーブセレクトピンを制御するレジスタです。スレーブセレクトを使うことで複数のSPIスレーブデバイスを利用することができます。

SPIが2系統あるため、SPIFLG0, SPIFLG1の2本が用意されています。

レジスタの構造

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

図1 レジスタの構造

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

FLSx : Flag Select

スレーブデバイス選択に使うピンを選びます。

  • 0 : スレーブセレクトには使いません。
  • 1 : スレーブセレクトに使います。
FLGx : Flag

スレーブを選択します。SPICTLxのCPHAが0のとき、FLGxへの書き込みは無視されます( HR 10-15 )。

  • 0 : スレーブデバイスを選択します。
  • 1 : スレーブデバイスを選択しません。

FLSxはマスクとして働きます。このビットが0の時には、対応するピンはSPIのスレーブセレクトではなくPFピンとして働きます。FLGxは負論理であることに注意してください。

SPIFLG0とSPIFLG1は対応するピンが違います。ピンの割り当てに関してはHR B-56, B-57を参照してください。

API

C/C++言語用に以下のインターフェースが用意されています。宣言はsysreg.hで行われています。SPIFLGxにアクセスする前には必ずIOPGにSPIx_Controller_Pageを設定してください。

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

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

sysreg_write(sysreg_IOPG, SPI0_Controller_Page)   // SPI0ページに設定

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

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

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

sysreg_write(sysreg_IOPG, SPI1_Controller_Page)   // SPI1ページに設定

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

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

                // Definition for SPIFLG0 B-56
#define FLS1            BIT_1
#define FLS2            BIT_2
#define FLS3            BIT_3
#define FLS4            BIT_4
#define FLS5            BIT_5
#define FLS6            BIT_6
#define FLS7            BIT_7

#define FLG1            BIT_9
#define FLG2            BIT_10
#define FLG3            BIT_11
#define FLG4            BIT_12
#define FLG5            BIT_13
#define FLG6            BIT_14
#define FLG7            BIT_15

参照情報

項目 マニュアルのページ等
説明 HR B-56, B-57
SPIFLGレジスタ HR 10-11
2191空挺団 | プログラム | EZ-KIT | こぼれ話 | アーキテクチャー | 命令 | レジスタ | DSP掲示板 | FAQ |