レジスタ名 | R/W | 説 明 | アクセス関数 |
---|---|---|---|
DATATRNS | R/W | データ転送レジスタ | CDC_GetDataPtr |
HIRQREQ | R/W | 割り込み要因レジスタ | CDC_GetHirqReq |
HIRQMSK | R/W | 割り込みマスクレジスタ | CDC_GetHirqMsk |
MPEGRGB | R | MPEGレジスタ(RGBデータ) | CDC_GetMpegPtr |
レジスタ名 | R/W | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
DATATRNS | R/W | ||||||||
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||
レジスタ名 | R/W | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
HIRQREQ | R/W | − | − | MPST | MPCM | MPED | SCDQ | EFLS | ECPY |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||
EHST | ESEL | DCHG | PEND | BFUL | CSCT | DRDY | CMOK |
ビット | 名 称 | 説 明 | 初期値 |
---|---|---|---|
bit0 | CMOK | 1:コマンド発行可能(レスポンスセット完了) | 1 |
bit1 | DRDY | 1:データ転送準備完了 | 0 |
bit2 | CSCT | 1:1セクタ読み込み完了 | 0 |
bit3 | BFUL | 1:CDバッファフル(CDバッファが満杯になった) | 0 |
bit4 | PEND | 1:CD再生の終了(現在のFADが再生範囲外になった) | 0 |
bit5 | DCHG | 1:ディスク交換の発生(トレイが開いた) | 0※ |
bit6 | ESEL | 1:ソフトリセット、セレクタ設定処理の終了 | 1 |
bit7 | EHST | 1:ホスト入出力処理の終了 | 1 |
bit8 | ECPY | 1:バッファ区画間の複写/移動処理の終了 | 1 |
bit9 | EFLS | 1:CDブロックファイルシステム処理の終了 | 1 |
bit10 | SCDQ | 1:サブコードQの更新完了(CDドライブの通信タイミング) | 0 |
bit11 | MPED | 1:MPEG関連処理の終了 | 1 |
bit12 | MPCM | 1:MPEG動作不定区間の終了 | 0 |
bit13 | MPST | 1:MPEG割り込みステータスの通知(MPEG関連の割り込み発生) | 0 |
bit14 | − | 予約ビット | 0 |
bit15 | − | 予約ビット | 0 |
ホストへのIRQ出力は全要因のOR出力です。
割り込み処理時は、該当要因ビットをクリアしてください。
ESEL, EHST, ECPY, EFLS, MPEDの各ビットをコマンド終了フラグと総称します。
各フラグに属するコマンドの実行終了を通知します。
ビットの初期値は、CMOKとコマンド終了フラグが1で、その他が0です。
(初期値のビットパターン:0BC1H)
実際には、1以外のビットは不定なので、CDC関数が0クリアしています。
レジスタ名 | R/W | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
HIRQMSK | R/W | − | − | MPST | MPCM | MPED | SCDQ | EFLS | ECPY |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||
EHST | ESEL | DCHG | PEND | BFUL | CSCT | DRDY | CMOK |
割り込みをマスクした場合、割り込み信号が入力されると次のようになります。
・IRQ出力に反映されない。
・割り込み要因レジスタには反映される。(ポーリング処理可能)
ビットの初期値はすべて0です。(ソフトリセットでは初期化されません)
レジスタ名 | R/W | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
MPEGRGB | R | ||||||||
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||
任意の16.7ms中に発行できるコマンドの回数は、最大60回までとします。
サブコードの取得の場合は、任意の13.3ms中に最大34回までコマンドを発行できます。
(サブコードR〜Wを16個+サブコードQを1個取得:計17×2=34回)
同じコマンド終了フラグに属するコマンドは、処理終了を待って発行します。
フラグ | コマンド |
---|---|
ESEL | ・CDデバイスの接続先の設定(CDC_CdSetCon) |
EHST | ・セクタデータの取り出し(CDC_GetSctData) |
ECPY | ・セクタデータの複写(CDC_CopySctData) |
EFLS | ・ディレクトリの移動(CDC_ChgDir) |
EFLSフラグは、次のコマンドを実行した場合も1になります。
・トレイのオープン(CDC_CdOpen)
・ファイルアクセスの中止(CDC_AbortFile)
1ならば、コマンド終了フラグを0クリアしてコマンドを発行する。
フラグ | コマンド | |
---|---|---|
0クリアだけする(チェックはしない) | ||
ESEL | ・ソフトリセット(CDC_CdInitのパラメータで指定) | |
EFLS | ・ファイルアクセスの中止(CDC_AbortFile) | |
チェックだけする(0クリアはしない) | ||
ESEL | ・実データサイズの取得 (CDC_GetActSiz) |
CDCが保持しているコマンド終了フラグの値は、別々にリンクされたCDCのプログラムコードを実行すると不整合が生じてしまいます。そのため、コマンド終了フラグが初期化されていないと、コマンド発行できなくなる可能性があります。 CDCライブラリの使用にあたっては、次の点に注意してください。 |
・REJECT(不正) | :コマンド形式が間違っているなど、コマンド自体が無効である。 |
・WAIT(実行保留) | :現在の状態では実行できないので、コマンドを受け付けられない。 |
・データ転送要求 | :データ転送が必要であることを示す。 |
・定期レスポンス | :定期レスポンスか、コマンドに対するレスポンスかを示す。 |
・CDドライブ状態 | :ホストから見たCDドライブの論理的な状態を示します。 |
WAIT時のドライブ状態とCDレポートは有効ですが、他のレポートは無効です。
・標準速再生時:13.3ms 定期レスポンスの更新周期 ・2倍速再生時: 6.7ms ・再生時以外 :16.7ms
データ転送の準備待ち(CDC_DataReady)を実行する。(DRDYが1になるのを待つ)
データ転送レジスタを通してデータを入出力する。
レジスタのポインタを取得するには、CDC_GetDataPtr関数を実行する。
必要なデータを転送したら、データ転送の終了(CDC_DataEnd)を実行する。
データ転送エラー | 説 明 |
---|---|
データ転送タイムアウト | CDブロックが規定時間内にデータ転送準備完了とならない。 |
書き込み用セクタの確保不可 | セクタデータの書き込みで、空きセクタを確保できなかった。 |
データ転送を伴うコマンドを実行した場合、DRDYフラグが1になる前にデータ転送の終了を実行してはいけません。たとえ実際にはデータを転送しなくても、必ずDRDYフラグが1になるのを待ってから終了させてください。 (データ転送の準備待ちを実行してから終了させる) |