SPISTx( SPI Status )はSerial Peripheral Interfaceの状態を表示します。
SPIが2系統あるため、SPIST0, SPIST1の2本が用意されています。
このレジスタは図1のような構造をもっています。初期値は0x0001です(HR B-58では0x0000となっていますが、B-9やSPIFの定義によれば0x0001であるべきです)。
図1 レジスタの構造
各ビットの意味は以下のとおりです。
SPIによる転送が終了したことを表示します。RO
マスターモードにおいて他のデバイスがマスターになっていることを検出したときに1になります。W1C
送信アンダーフローが発生したことを知らせます。W1C
送信データバッファの状態を表示します。RO
受信オーバーフローが発生したことを知らせます。W1C
受信データバッファの状態を表示します。RO
DMAとコアによるTDBRへの書き込みが衝突したことを知らせます。W1C
C/C++言語用に以下のインターフェースが用意されています。宣言はsysreg.hで行われています。SPISTxにアクセスする前には必ずIOPGにSPIx_Controller_Pageを設定してください。
SPIST0の場合は以下のとおりです。
// #include <sysreg.h> // #include <def2191.h> sysreg_write(sysreg_IOPG, SPI0_Controller_Page) // SPI0ページに設定 io_space_write(SPIST0, 値) // SPIST0に値を設定 変数 = io_space_read(SPIST0) // SPIST0の値を取得
SPIST1の場合は以下のとおりです。
// #include <sysreg.h> // #include <def2191.h> sysreg_write(sysreg_IOPG, SPI1_Controller_Page) // SPI1ページに設定 io_space_write(SPIST1, 値) // SPIST1に値を設定 変数 = io_space_read(SPIST1) // SPIST1の値を取得
アナログデバイセズが配布しているmcmの中のビット定義ファイルdef2191bit.hから関連するビット定義部分をここに引用します。
// Definition for SPISTx B-58 #define SPI_SPIF BIT_0 #define SPI_MODF BIT_1 #define SPI_TXE BIT_2 #define SPI_TXS BIT_3 #define SPI_RBSY BIT_4 #define SPI_RXS BIT_5 #define SPI_TXCOL BIT_6
項目 | マニュアルのページ等 |
---|---|
説明 | HR B-54 |