SPx_TSCKDIV

SPx_TSCKDIV ( SPORTx Transmit Serial Clock Divider )レジスタは、シリアルポートの送信クロックを決めるためのレジスタです。

SPORTが3系統あるため、SP0_TSCKDIV、SP1_TSCKDIV、SP2_TSCKDIVの三本が用意されています。

レジスタの構造

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

SPx_TCRのICLKを1にするとSPORTは送信クロックを内部生成します。このとき、送信クロックの周波数はSPx_TSCKDIVで決定します。送信クロック周波数は以下の式で決まります。

SPx_TCLK[Hz] = HCLK[Hz] / 2 / ( SPx_TSCKDIV + 1 )

HCLKは内蔵ペリフェラルの動作クロックです。詳細はPLLCTLを参照してください。上の式から送信クロックの最大周波数はHCLK/2であることがわかります。ADSP-2191Mの場合は40MHzです。

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

マルチチャンネル(TDM)でSPORTを使う場合、SPx_TCRのICLKは0に設定します。したがってSPx_TSCKDIVは設定する必要はありません。無視されます。TCLKxはRCLKxと接続しておきます。

API

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

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

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

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

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

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

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

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

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

参照情報

項目 マニュアルのページ等
レジスタ説明 HR B-35
クロック設定 HR 9-19
マルチチャンネル HR 9-30

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