• 検索結果がありません。

参考プログラムのレジスタ設定

ドキュメント内 SH7786 DMAC転送例:アプリケーションノート (ページ 30-36)

3. DMAC1 メモリ間転送例

3.1 応用例の説明

3.1.4 参考プログラムのレジスタ設定

以下に本参考プログラムのレジスタ設定値を以下に示します。

チャネル

0

の転送については,コマンドチェーンを使用して

2

回転送を行っています。

3.1.4.1 DMAC1

レジスタ設定値(チャネル共通)

レジスタ名称(呼称) アドレス R/W サイズ 設定値 動作仕様 H’8000 0000 ・DMAの起動/停止

- 初期化処理時:DMA1E=1 DMA起動 DMAオペレーションレジスタ

(DMA1OR) H'FEA0 0010 R/W 32

H’0000 0000 ・DMAの起動/停止

- DMA転送完了時:DMA1E=0 DMA停止

3.1.4.2 DMAC1

チャネル

0

レジスタ初期設定値

レジスタ名称(呼称) アドレス R/W サイズ 設定値 動作仕様 DMA1ソースアドレスレジスタ0

(DMA1SAR0) H'FEA0 0020 R/W 32 *1 ・転送元の開始アドレスを指定

DMA1ディスティネーション

アドレスレジスタ0(DMA1DAR0) H'FEA0 0028 R/W 32 *1 ・転送先の開始アドレスを指定 DMA1バイトカウントレジスタ0

(DMA1BCNTR0) H'FEA0 0030 R/W 32 *1 ・転送バイトカウントを指定

DMA1ストライドカウント

レジスタ0(DMA1SBCNTR0) H'FEA0 0034 R/W 32 *1

・ストライド/gather/scatter転送時,一 塊として転送されるデータ転送バイト 数の初期値設定

-初期ストライドカウンタ bit[32:16]= SBCINI - ストライドカウンタ bit[15:0]= SBCNT

*指定するアドレスは4バイト単位

DMA1ストライドレジスタ0

(DMA1STRR0) H'FEA0 0038 R/W 32 *1

・転送元アドレスのストライド幅を指定 bit[32:16]=SS

・転送先アドレスのストライド幅を指定 bit[15:0]=DS

*指定する各アドレスは4バイト単位

DMA1コマンドチェーンレジスタ0

(DMA1CCAR0) H'FEA0 0040 R/W 32 H’E500 E100

・最初のコマンドチェーンのコマンド列 のアドレスを指定(コマンドチェーン1)

*最後のコマンド列では,CCAは必ず

H’0000 0000を設定

DMA1チャネルコントロール レジスタ0 (DMA1CHCR0)

H'FEA0 0048 R/W 32 H’A000 0000

・DMA転送の許可/禁止,コマンド チェーンの有効/無効,転送元/転送先ア ドレスストライドレジスタイネーブル を指定

CHE(bit31) = H’1:DMA転送許可 CCRE(bit29) = H’1:コマンドチェー ン有効

DMA1チャネルステータス レジスタ0 (DMA1CHSR0)

H'FEA0 004C R/(W) 32 *1

転送元転送エラー割り込み 転送先転送エラー割り込み 転送元転送エラーフラグ 転送先転送エラーフラグ DMA転送完了割り込み DMA転送終了フラグ の状態を表示

*1 DMA1CCAR0,DMA1CHCR0

以外のレジスタは,コマンドチェーンのコマンド列フォーマットで設定さ

れます。コマンドチェーンのコマンド列フォーマットについては,「

3.1.5.1

コマンドチェーンについて」を

ご参照ください。

以下にコマンドチェーンアドレス

1(H’E500 E100 – H’E500 E11C)

に設定した各レジスタの設定値を以下に 示します。

3.1.4.3 DMAC1

レジスタ設定値

1(

チャネル

0

コマンドチェーンアドレス

1)

レジスタ名称(呼称) アドレス R/W サイズ 設定値 動作仕様

H’1400 E000

・転送元の開始アドレスを指定 OLメモリの場合

(DMA1DAR0DDR3を指定) DMA1ソースアドレスレジスタ0

(DMA1SAR0) H'FEA0 0020 R/W 32

H’0800 0000

・転送元の開始アドレスを指定 DDR3-SDRAMの場合

(DMA1DAR0OLメモリを指定) H’1400 E000

・転送元の開始アドレスを指定 OLメモリの場合

(DMA1SAR0は,DDR3を指定) DMA1ディスティネーション

アドレスレジスタ0 (DMA1DAR0)

H'FEA0 0028 R/W 32

H’0800 0000

・転送元の開始アドレスを指定 DDR3-SDRAMの場合

(DMA1SAR0は,OLメモリを指定) DMA1バイトカウントレジスタ0

(DMA1BCNTR0) H'FEA0 0030 R/W 32 H’0000 0040

・転送バイトカウントを指定 64バイト

*転送サイズは4バイト単位 H’0000 0000 ・連続領域の転送

SBCINI=0,SBCNT=0 H’0004 0004

・ストライド/scatter/gather転送の 転送サイズ4バイト

SBCINI=4,SBCNT=4 H’0008 0008

・ストライド/scatter/gather転送の 転送サイズ8バイト

SBCINI=8,SBCNT=8 H’0010 0010

・ストライド/scatter/gather転送の 転送サイズ16バイト

SBCINI=16,SBCNT=16 DMA1ストライドカウント

レジスタ0 (DMA1SBCNTR0)

H'FEA0 0034 R/W 32

H’0020 0020

・ストライド/scatter/gather転送の 転送サイズ32バイト

SBCINI=32,SBCNT=32

3.1.4.4 DMAC1

レジスタ設定値

2(

チャネル

0

コマンドチェーンアドレス

1)

レジスタ名称(呼称) アドレス R/W サイズ 設定値 動作仕様 H’0000 0000 ・連続領域の転送

SS=0,DS=0 H’0008 0008

・ストライド転送の 転送サイズ4バイト SS=8,DS=8 H’0004 0008

・Scatter転送の 転送サイズ4バイト SS=4,DS=8 H’0008 0004

・Gather転送の 転送サイズ4バイト SS=8,DS=4 H’0010 0010

・ストライド転送の 転送サイズ8バイト SS=16,DS=16 H’0008 0010

・Scatter転送の 転送サイズ8バイト SS=8,DS=16 H’0010 0008

・Gather転送の 転送サイズ8バイト SS=16,DS=8 H’0020 0020

・ストライド転送の 転送サイズ16バイト SS=32,DS=32 H’0010 0020

・Scatter転送の 転送サイズ16バイト SS=16,DS=32 H’0020 0010

・Gather転送の 転送サイズ16バイト SS=32,DS=16 H’0040 0040

・ストライド転送の 転送サイズ32バイト SS=64,DS=64 H’0020 0040

・Scatter転送の 転送サイズ32バイト SS=32,DS=64 DMA1ストライドレジスタ0

(DMA1STRR0) H'FEA0 0038 R/W 32

H’0040 0020

・Gather転送の 転送サイズ32バイト SS=64,DS=32 DMA1コマンドチェーン

レジスタ0 (DMA1CCAR0)

H'FEA0 0040 R/W 32 H’E500 E120 ・次のコマンドチェーンのコマンド列

のアドレスを指定(コマンドチェーン2) H’A000 0000 ・連続領域の転送

CHE=1,CCRE=1 DMA1チャネルコントロール

レジスタ0 (DMA1CHCR0)

H'FEA0 0048 R/W 32

H’A300 0000

・ストライド/scatter/gather転送 CHE=1,CCRE=1,SARE=1,

DARE=1 DMA1チャネルステータス

レジスタ0 (DMA1CHSR0)

H'FEA0 004C R/(W) 32 H’0000 0000 ・各割り込みは未使用

以下にコマンドチェーンアドレス

2(H’E500 E120 – H’E500 E13C)

に設定した各レジスタの設定値を以下に 示します。

3.1.4.5 DMAC1

レジスタ設定値

1(

チャネル

0

コマンドチェーンアドレス

2)

レジスタ名称(呼称) アドレス R/W サイズ 設定値 動作仕様

H’1400 E000

・転送元の開始アドレスを指定 OLメモリの場合

(DMA1DAR0DDR3を指定) DMA1ソースアドレスレジスタ0

(DMA1SAR0) H'1EA0_00020 R/W 32

H’0800 0000

・転送先の開始アドレスを指定 DDR3-SDRAMの場合

(DMA1DAR0OLメモリを指定) H’1400 E000

・転送元の開始アドレスを指定 OLメモリの場合

(DMA1SAR0DDR3を指定) DMA1ディスティネーション

アドレスレジスタ0 (DMA1DAR0)

H'1EA0_0028 R/W 32

H’0800 0000

・転送先の開始アドレスを指定 DDR3-SDRAMの場合

(DMA1SAR0OLメモリを指定) DMA1バイトカウントレジスタ0

(DMA1BCNTR0) H'1EA0_0030 R/W 32 H’0000 0040

・転送バイトカウントを指定 64バイト

*転送サイズは4バイト単位 H’0000 0000 ・連続領域の転送:

SBCINI=0, SBCNT=0 H’0004 0004

・ストライド/scatter/gather転送の 転送サイズ4バイト

SBCINI=4,SBCNT=4 H’0008 0008

・ストライド/scatter/gather転送の 転送サイズ8バイト

SBCINI=8,SBCNT=8 H’0010 0010

・ストライド/scatter/gather転送の 転送サイズ16バイト

SBCINI=16,SBCNT=16 DMA1ストライドカウント

レジスタ0 (DMA1SBCNTR0)

H'1EA0_0034 R/W 32

H’0020 0020

・ストライド/scatter/gather転送の 転送サイズ32バイト

SBCINI=32,SBCNT=32

3.1.4.6 DMAC1

レジスタ設定値

2 (

チャネル

0

コマンドチェーンアドレス

2)

レジスタ名称(呼称) アドレス R/W サイズ 設定値 動作仕様 H’0000 0000 ・連続領域の転送

SS=0,DS=0 H’0008 0008

・ストライド転送の 転送サイズ4バイト SS=8,DS=8 H’0004 000

・Scatter転送の 転送サイズ4バイト

SS=4,DS=8 H’0008 0004

・Gather転送の 転送サイズ4バイト

SS=8,DS=4 H’0010 0010

・ストライド転送の 転送サイズ8バイト SS=16,DS=16 H’0008 0010

・Scatter転送の 転送サイズ8バイト

SS=8,DS=16 H’0010 0008

・Gather転送の 転送サイズ8バイト

SS=16,DS=8 H’0020 0020

・ストライド転送の 転送サイズ16バイト SS=32,DS=32 H’0010 0020

・Scatter転送の 転送サイズ16バイト

SS=16,DS=32 H’0020 0010

・Gather転送の 転送サイズ16バイト

SS=32,DS=16 H’0040 0040

・ストライド転送の 転送サイズ32バイト SS=64,DS=64 H’0020 0040

・Scatter転送の 転送サイズ32バイト

SS=32,DS=64 DMA1ストライドレジスタ0

(DMA1STRR0) H'1EA0_0038 R/W 32

H’0040 0020

・Gather転送の 転送サイズ32バイト

SS=64,DS=32 DMA1コマンドチェーン

レジスタ0 (DMA1CCAR0)

H'1EA0_0040 R/W 32 H’0000 0000 ・次のコマンドチェーンのコマンド列

アドレスを指定(コマンドチェーン2) H’A000 0000 ・連続領域の転送

CHE=1,CCRE=1 DMA1チャネルコントロール

レジスタ0 (DMA1CHCR0)

H'1EA0_0048 R/W 32

H’A300 0000

・ストライド/scatter/gather転送 CHE=1,CCRE=1,SARE=1,

DARE=1 DMA1チャネルステータス

レジスタ0 (DMA1CHSR0)

H'1EA0_004C R/(W) 32 H’0000 0000 ・各割り込みは未使用

3.1.4.7 DMAC1

レジスタ設定値

(

チャネル

2)

レジスタ名称(呼称) アドレス R/W サイズ 設定値 動作仕様

H’1400 E040

・転送元の開始アドレスを指定 OLメモリの場合

(DMA1DAR2DDR3を指定) DMA1ソースアドレスレジスタ2

(DMA1SAR2) H'1EA0_00220 R/W 32

H’0800 0000

・転送元の開始アドレスを指定 DDR3-SDRAMの場合

(DMA1DAR2OLメモリを指定) H’1400 E040

・転送元の開始アドレスを指定 OLメモリの場合

(DMA1SAR2DDR3を指定) DMA1ディスティネーション

アドレス2 レジスタ2(DMA1DAR2)

H'1EA0_0228 R/W 32

H’0800 0000

・転送元の開始アドレスを指定 DDR3-SDRAMの場合

(DMA1SAR2OLメモリを指定) H’0000 0064

・転送バイトカウントを指定 転送サイズが2バイト以下の時 100バイトを転送

DMA1バイトカウントレジスタ2

(DMA1BCNTR2) H'1EA0_0230 R/W 32

H’0000 0080

・転送バイトカウントを指定 - 転送サイズが4バイト以上の時 128バイトを転送

H’0000 0000 ・初期設定時:CHE=0 H’8000 0000 ・DMA転送開始時:CHE=1 DMA1チャネルコントロール

レジスタ2 (DMA1CHCR2)

H'1EA0_0248 R/W 32

H’0000 0000 ・DMA転送終了/中断時:CHE=0 H’0000 0000 ・初期設定時:TE=0

DMA1チャネルステータス レジスタ2 (DMA1CHSR2)

H'1EA0_024C R/(W) 32

H’0000 0001 ・転送終了時:TE=1

(転送終了時,自動的に1をセット) H’0000 0000 ・転送元DMA転送サイズ

- バイト単位

H’0000 0001 ・転送元DMA転送サイズ - ワード単位

H’0000 0002 ・転送元DMA転送サイズ - ロングワード単位 H’0000 0003 ・転送元DMA転送サイズ

- 8バイト単位 DMA1ソース転送サイズ

レジスタ2 (DMA1STRS2)

H'1EA0_0260 R/W 32

H’0000 0005 ・転送元DMA転送サイズ - 32バイト単位 H’0000 0000 ・転送元DMA転送サイズ

- バイト単位

H’0000 0001 ・転送元DMA転送サイズ - ワード単位

H’0000 0002 ・転送元DMA転送サイズ - ロングワード単位 H’0000 0003 ・転送元DMA転送サイズ

- 8バイト単位 DMA1ディスティネーション

転送サイズレジスタ2 (DMA1DTRS2)

H'1EA0_0270 R/W 32

H’0000 0005 ・転送元DMA転送サイズ - 32バイト単位

※本プログラムで使用していないレジスタや設定をしていないビットは初期値のままです。

ドキュメント内 SH7786 DMAC転送例:アプリケーションノート (ページ 30-36)

関連したドキュメント