SPICTLx

SPICTLx( SPI Control )はSerial Peripheral Interfaceの設定を行います。ADSP-2191はSPIを2系統持っていますが、ピンはSPORT2と共用です。したがって、SPORT2とSPIデバイスを同時にイネーブルにすることは禁止されています。

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

レジスタの構造

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

図1 レジスタの構造

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

TIMOD : Transfer Initiation Mode

SPIデバイスをマスターモードにしているときに、転送を開始するタイミングを設定します。

  • 00 : 受信バッファの読み込みで転送を開始します。
  • 01 : 送信バッファへの書き込みで転送を開始します。
  • 10 : DMA転送。
  • 11 : 予約
SZ : Send Zero

TDBRが空の状態でデータを送信したときの挙動を指定します。

  • 0 : 前の転送で送信したデータを再送信します。
  • 1 : 0を送信します。
GM : Get More Data

RDBRが一杯の状態でデータを受信したときの挙動を指定します。

  • 0 : 新たに受信したデータを破棄します。
  • 1 : 古いデータを破棄して新たな受信データを保存します。
PSSE : Slave Select Enable

Slave Selectピンを有効にします。

  • 0 : 無効
  • 1 : 有効
EMISO : Enable MISO

Master In Slave Outピンの設定を行います。

  • 0 : 無効
  • 1 : 有効
SIZE : Size of word

送受信データワード長を指定します。

  • 0 : 8bit
  • 1 : 16bit
LSBF : LSB First

データワードの送受信方向を決めます。

  • 0 : MSBから送ります。
  • 1 : LSBから送ります。
CPHA : CLOCK Phase

クロックトグルの方法を指定します。

  • 0 : 転送データの中央でトグルを開始します。
  • 1 : 転送開始とともにトグルします。
CPOL : CLOCK Polarity

クロックの極性を指定します。

  • 0 : アクティブ H
  • 1 : アクティブ L
MSTR : Master Mode

操作モードを指定します。

  • 0 : スレーブ
  • 1 : マスター
WOM : Write Opendrain Mode

送信ピンをオープンドレインにします。

  • 0 : 通常駆動
  • 1 : オープンドレイン
SPE : SPI Enable

SPIを有効にします。

  • 0 : 無効
  • 1 : 有効

API

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

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

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

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

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

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

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

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

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

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

                // Definition for SPICTLx       B-54
#define TIMOD_OFST      0
#define TIMOD_MASK      ( 3 << MCCRM_OFST )
#define TIMOD_READ      ( 0 << MCCRM_OFST )
#define TIMOD_WRITE     ( 1 << MCCRM_OFST )
#define TIMOD_DMA       ( 2 << MCCRM_OFST )
#define SZ              BIT_2
#define GM              BIT_3
#define PSSE            BIT_4
#define EMISO           BIT_5
#define SIZE            BIT_8
#define LSBF            BIT_9
#define CPHA            BIT_10
#define CPOL            BIT_11
#define MSTR            BIT_12
#define WOM             BIT_13
#define SPE             BIT_14

参照情報

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