MSxCTL( Memory Select x Control )レジスタはMSxピンに接続されたデバイスへのアクセス方法を指定します。
MSxピンが4本あるため、レジスタもMS0CTL, MS1CTL, MS2CTL, MS3CTLの4本があります。
このレジスタは16ビット整数レジスタです。初期値は0x0000です。
図1 レジスタの構造
Readアクセスを行うときに挿入するウェイトステート数を指定します。
Writeアクセスを行うときに挿入するウェイトステート数を指定します。
挿入するウェイトステートの数の決め方を指定します。
HCLKに対する動作クロック分周比を指定します。動作周波数は:
動作周波数 = HCLK / ( 2^E_CDS)
で与えられます。HR B-95ではCCLKソースになっていますが、誤りです。
書き込み後のホールドサイクル数を指定します。HR 7-4ではE_WHEとなっています。
CMSピンはADSP-2191にはありませんので、このビットは常に0にします。
C/C++言語用に以下のインターフェースが用意されています。宣言はsysreg.hで行われています。MSxCTLにアクセスする前には必ずIOPGにExternal_Memory_Interface_Pageを設定してください。
MS0CTLにアクセスする場合は次のように成ります。
// #include <sysreg.h> // #include <def2191.h> sysreg_write(sysreg_IOPG, External_Access_Bridge_Page) // EMIページに設定 io_space_write(MS0CTL, 値) // MS0CTLに値を設定 変数 = io_space_read(MS0CTL) // MS0CTLの値を取得
MS1CTLにアクセスする場合は次のように成ります。
// #include <sysreg.h> // #include <def2191.h> sysreg_write(sysreg_IOPG, External_Access_Bridge_Page) // EMIページに設定 io_space_write(MS1CTL, 値) // MS1CTLに値を設定 変数 = io_space_read(MS1CTL) // MS1CTLの値を取得
MS2CTLにアクセスする場合は次のように成ります。
// #include <sysreg.h> // #include <def2191.h> sysreg_write(sysreg_IOPG, External_Access_Bridge_Page) // EMIページに設定 io_space_write(MS2CTL, 値) // MS2CTLに値を設定 変数 = io_space_read(MS2CTL) // MS2CTLの値を取得
MS3CTLにアクセスする場合は次のように成ります。
// #include <sysreg.h> // #include <def2191.h> sysreg_write(sysreg_IOPG, External_Access_Bridge_Page) // EMI0ページに設定 io_space_write(MS3CTL, 値) // MS3CTLに値を設定 変数 = io_space_read(MS3CTL) // MS3CTLの値を取得
アナログデバイセズが配布しているmcmの中のビット定義ファイルdef2191bit.hから関連するビット定義部分をここに引用します。なお、レこのジスタ構造がBMSCTLと同じなので部分も同じです。
// Definition for BMSCTL (HR B-94) #define E_COE BIT_15 #define E_WHC BIT_11 #define E_CDS_OFST 8 #define E_CDS_MASK ( 0x7 << E_CDS_OFST ) #define E_CDS_1x ( 0 << E_CDS_OFST ) #define E_CDS_2x ( 1 << E_CDS_OFST ) #define E_CDS_4x ( 2 << E_CDS_OFST ) #define E_CDS_8x ( 3 << E_CDS_OFST ) #define E_CDS_16x ( 4 << E_CDS_OFST ) #define E_CDS_32x ( 5 << E_CDS_OFST ) #define E_WMS_OFST 6 #define E_WMS_MASK ( 0x3 << E_WMS_OFST ) #define E_WMS_EXT ( 0 << E_WMS_OFST ) #define E_WMS_INT ( 1 << E_WMS_OFST ) #define E_WMS_BOTH ( 2 << E_WMS_OFST ) #define E_WMS_EITHER ( 3 << E_WMS_OFST ) #define E_WWC_OFST 3 #define E_WWC_MASK ( 0x3 << E_WWC_OFST ) #define E_WWC_0 ( 0 << E_WWC_OFST ) #define E_WWC_1 ( 1 << E_WWC_OFST ) #define E_WWC_2 ( 2 << E_WWC_OFST ) #define E_WWC_3 ( 3 << E_WWC_OFST ) #define E_WWC_4 ( 4 << E_WWC_OFST ) #define E_WWC_5 ( 5 << E_WWC_OFST ) #define E_WWC_6 ( 6 << E_WWC_OFST ) #define E_WWC_7 ( 7 << E_WWC_OFST ) #define E_RWC_OFST 0 #define E_RWC_MASK ( 0x7 << E_RWC_OFST ) #define E_RWC_0 ( 0 << E_RWC_OFST ) #define E_RWC_1 ( 1 << E_RWC_OFST ) #define E_RWC_2 ( 2 << E_RWC_OFST ) #define E_RWC_3 ( 3 << E_RWC_OFST ) #define E_RWC_4 ( 4 << E_RWC_OFST ) #define E_RWC_5 ( 5 << E_RWC_OFST ) #define E_RWC_6 ( 6 << E_RWC_OFST ) #define E_RWC_7 ( 7 << E_RWC_OFST )
項目 | マニュアルのページ等 |
---|---|
レジスタ構造 | HR B-95 |
説明 | HR 7-3 |