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

Microsoft PowerPoint - RX62N動画マニュアルDMAC.ppt [互換モード]

N/A
N/A
Protected

Academic year: 2021

シェア "Microsoft PowerPoint - RX62N動画マニュアルDMAC.ppt [互換モード]"

Copied!
38
0
0

読み込み中.... (全文を見る)

全文

(1)

00000-A

ルネサス半導体トレーニングセンター

Rev. 1.00

ルネサス エレクトロニクス株式会社

© 2013 Renesas Electronics Corporation. All rights reserved.

2013/08/02

RX62N 周辺機能紹介 DMAC

(2)

© 2013 Renesas Electronics Corporation. All rights reserved.

コンテンツ

DMACの概要

転送モード

起動要因

その他の機能

プログラムサンプル

2

(3)

© 2013 Renesas Electronics Corporation. All rights reserved.

DMACの概要

(4)

© 2013 Renesas Electronics Corporation. All rights reserved.

機能概要

4 内容 1023Kデータ(ブロック転送時最大転送数:1023データ×1024ブロック) 最大転送数 ソフトウェアトリガ 外部端子割り込み(IRQ0〜3) 内蔵周辺機能の割り込み要求(CMT、A/D、MTU2、SCI、RIIC、USB、RSPI) 起動要因 チャネル0 > チャネル1 > チャネル2 > チャネル3 チャネル優先順位 ビット長:8ビット、16ビット、32ビット 転送データ データ数:1〜1023データ ブロックサイズ 転送方式 ノーマル 項目 1データ 1回のDMA転送要求で、1データを転送 総データ転送数を指定しない設定(フリーランニングモード)が可能 1回のDMA転送要求で、1データを転送 転送元または転送先で設定したリピートサイズ分のデータを転送すると、 転送開始時のアドレスに復帰 リピートサイズは最大1024データを設定可能 1回のDMA転送要求で、1ブロックのデータを転送 ブロックサイズは最大1023データを設定可能 ブロック リピート 転送アドレスレジスタの上位ビットの値を固定して特定範囲のアドレスを 繰り返す設定が可能 拡張リピートエリアは2バイト〜128Mバイトを転送元/転送先別に設定可能 拡張リピートエリア機能

(5)

© 2013 Renesas Electronics Corporation. All rights reserved. DMAC DMACコア DMAC 制御回路 DMA要求 調停 内部メインバス2 周辺バスインタフェース 割り込み コントローラ DMA起動要求 DMAC応答 起動制御 転送元アドレス 転送先アドレス 転送カウンタ ブロックカウンタ 転送モード 4 バスインターフェース 外部バスインタフェース 内蔵SRAM STPCNT DMSAR DMDAR DMCRA DMCRB DMOFR DMTMD DMAMD DMCNT DMSTS DMACレジスタ (CH0~CH3) SFR レジスタ制御 DMAC応答 外部バス DMAC応答制御 バスアクセス 受付抑止要求 4 4 割込み要求

ブロック図と動作概要

5

(6)

© 2013 Renesas Electronics Corporation. All rights reserved.

転送モード

(7)

© 2013 Renesas Electronics Corporation. All rights reserved.

ノーマルモード

(8)

© 2013 Renesas Electronics Corporation. All rights reserved.

リピートモード

(9)

© 2013 Renesas Electronics Corporation. All rights reserved.

リピートエリア

(10)

© 2013 Renesas Electronics Corporation. All rights reserved.

ブロック転送モード

10

転送元データ領域

転送先データ領域

(ブロック領域に設定)

ブロック領域

DMDAR

DMSAR

転送

第Nブロック

第1ブロック

(11)

© 2013 Renesas Electronics Corporation. All rights reserved.

ブロックエリア

11 第1ブロック 第1ブロック

転送元データ領域

転送先データ領域

(ブロック領域に設定)

ブロック領域

DMDAR

DMSAR

転送

第Nブロック

(12)

© 2013 Renesas Electronics Corporation. All rights reserved.

転送モードの設定

DMA 転送モードレジスタ(DMTMD)

(13)

© 2013 Renesas Electronics Corporation. All rights reserved.

起動要因

(14)

© 2013 Renesas Electronics Corporation. All rights reserved.

転送要求の設定

14 DMACn.DMTMD(n=0~3) 初期値 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W 0 0 ノーマル 転送モード設定 b4 b15 b14 b13 b12 b11 b10 b9 b8 b7 b6 b5 b3 b2 b1 b0 ー ー ー ー ー ー DCTG ー ー SZ MD DTS 0 1 リピート 1 0 ブロック 1 1 設定禁止 0 0 転送先がリピート/ブロック領域 リピートエリア選択 0 1 転送元がリピート/ブロック領域 1 0 リピート/ブロック領域を指定しない 1 1 設定禁止 0 0 8ビット データ転送サイズ 0 1 16ビット 1 0 32ビット 1 1 設定禁止 0 0 ソフトウェア 転送要求選択 0 1 周辺モジュールおよび外部割り込み 1 0 設定禁止 1 1 設定禁止

(15)

© 2013 Renesas Electronics Corporation. All rights reserved.

ソフトウェア起動

(16)

© 2013 Renesas Electronics Corporation. All rights reserved.

周辺モジュールまたは外部割り込み

16 DMACn.DMTMD(n=0~3) 初期値 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W 0 0 ノーマル 転送モード設定 b4 b15 b14 b13 b12 b11 b10 b9 b8 b7 b6 b5 b3 b2 b1 b0 ー ー ー ー ー ー DCTG ー ー SZ MD DTS 0 1 リピート 1 0 ブロック 1 1 設定禁止 0 0 転送先がリピート/ブロック領域 リピートエリア選択 0 1 転送元がリピート/ブロック領域 1 0 リピート/ブロック領域を指定しない 1 1 設定禁止 0 0 8ビット データ転送サイズ 0 1 16ビット 1 0 32ビット 1 1 設定禁止 0 0 ソフトウェア 転送要求選択 0 1 周辺モジュールおよび外部割り込み 1 0 設定禁止 1 1 設定禁止

(17)

© 2013 Renesas Electronics Corporation. All rights reserved.

起動要因の詳細設定

(18)

© 2013 Renesas Electronics Corporation. All rights reserved.

その他の機能

(19)

© 2013 Renesas Electronics Corporation. All rights reserved.

オフセット加算機能

アドレスA1 アドレスA2 =アドレスA1 + オフセット値 アドレスA3 =アドレスA2 + オフセット値 アドレスA4 =アドレスA3 + オフセット値 アドレスA5 =アドレスA4 + オフセット値 オフセット値 オフセット値 オフセット値 オフセット値 データ① データ② データ③ データ④ 転送 データ⑤ データ① データ② データ③ データ④ データ⑤ アドレスB1 アドレスB2 = アドレスB1 + 4 アドレスB3 = アドレスB2 + 4 アドレスB4 = アドレスB3 + 4 アドレスB5 = アドレスB4 + 4 転送元:オフセット加算 転送先:インクリメント データサイズ:32bit <転送元> <転送先> 19

(20)

© 2013 Renesas Electronics Corporation. All rights reserved. ① ⑥ ⑪ ② ⑦ ⑫ ③ ⑧ ⑬ ④ ⑨ ⑭ ⑤ ⑩ ⑮ ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑪ ⑫ ⑬ ⑭ ⑮

転送元

転送先

DMACでコピー

すると90度回転

している

オフセット加算の使用例

20

(21)

© 2013 Renesas Electronics Corporation. All rights reserved.

オフセット加算の設定

(22)

© 2013 Renesas Electronics Corporation. All rights reserved.

メモリ領域

繰り返す

00013FFEh

00013FFFh

00014000h

00014001h

00014002h

00014003h

00014004h

00014005h

00014006h

00014007h

00014008h

00014009h

00014000h

00014001h

00014002h

00014003h

00014004h

00014005h

00014006h

00014007h

拡張リピートエリアオーバフロー

割り込み要求の発生が可能

DMSARの

値の範囲

転送元アドレスの下位

3ビット(8バイト)を拡張リピートエリアに設定した場合

拡張リピートエリア機能

22

(23)

© 2013 Renesas Electronics Corporation. All rights reserved.

拡張リピートエリアの設定1

(24)

© 2013 Renesas Electronics Corporation. All rights reserved.

拡張リピートアリアの設定2

拡張リピートエリアの範囲 拡張リピートエリアを設定しない 00000b 当該アドレスの下位1ビット(2バイト)を拡張リピートエリアに設定する 00001b 当該アドレスの下位2ビット(4バイト)を拡張リピートエリアに設定する 00010b 当該アドレスの下位3ビット(8バイト)を拡張リピートエリアに設定する 00011b 当該アドレスの下位4ビット(16バイト)を拡張リピートエリアに設定する 00100b 当該アドレスの下位5ビット(32バイト)を拡張リピートエリアに設定する 00101b 当該アドレスの下位6ビット(64バイト)を拡張リピートエリアに設定する 00110b 当該アドレスの下位7ビット(128バイト)を拡張リピートエリアに設定する 00111b 当該アドレスの下位8ビット(256バイト)を拡張リピートエリアに設定する 01000b 当該アドレスの下位9ビット(512バイト)を拡張リピートエリアに設定する 01001b 当該アドレスの下位10ビット(1Kバイト)を拡張リピートエリアに設定する 01010b 当該アドレスの下位11ビット(2Kバイト)を拡張リピートエリアに設定する 01011b 当該アドレスの下位12ビット(4Kバイト)を拡張リピートエリアに設定する 01100b 当該アドレスの下位13ビット(8Kバイト)を拡張リピートエリアに設定する 01101b 当該アドレスの下位14ビット(16Kバイト)を拡張リピートエリアに設定する 01110b 当該アドレスの下位15ビット(32Kバイト)を拡張リピートエリアに設定する 01111b 当該アドレスの下位16ビット(64Kバイト)を拡張リピートエリアに設定する 10000b 当該アドレスの下位17ビット(128Kバイト)を拡張リピートエリアに設定する 10001b 当該アドレスの下位18ビット(256Kバイト)を拡張リピートエリアに設定する 10010b 当該アドレスの下位19ビット(512Kバイト)を拡張リピートエリアに設定する 10011b 当該アドレスの下位20ビット(1Mバイト)を拡張リピートエリアに設定する 10100b 当該アドレスの下位21ビット(2Mバイト)を拡張リピートエリアに設定する 10101b 当該アドレスの下位22ビット(4Mバイト)を拡張リピートエリアに設定する 10110b 当該アドレスの下位23ビット(8Mバイト)を拡張リピートエリアに設定する 10111b SARA/DARAの値 24

(25)

© 2013 Renesas Electronics Corporation. All rights reserved.

プログラムサンプル

(26)

© 2013 Renesas Electronics Corporation. All rights reserved.

サンプル(1)仕様

(27)

© 2013 Renesas Electronics Corporation. All rights reserved.

サンプル(1)DMACの初期化

1: #include "iodefine.h" 2: #include <machine.h> 3: #include "vect.h" 4: 5: void main(void); 6: void initDMAC(void) ; 7: void initSCI(void) ; 8:

9: unsigned char buf[100] ; 10: 11: // 12: // メイン関数 13: // 14: void main(void) 15: { 16: SYSTEM.SCKCR.LONG = 0x00020200; // ICLK=96MHz,PCLK=24MHz,BCLK=24MHz 17: 18: initDMAC() ; // DMAC初期設定関数呼び出し 19: initSCI() ; 20: // set_psw(0x00010000); // 割り込み許可(I=1,U=0) 21: while(1) ; 22: } 23: 24: // 25: // DMAコントローラ初期設定 26: // 27: void initDMAC(void) 28: {

29: MSTP(DMACA) = 0 ; // Wakeup DMAC 30:

31: ICU.DMRSR0 = 239 ; // 起動要因 = SCI6 32: DMAC0.DMAMD.WORD = 0x0080; // Sorce 固定,D inc

33: DMAC0.DMTMD.WORD = 0x0001 ; // ノーマル,8ビット転送,周辺モジュール 34: DMAC0.DMSAR = &SCI6.RDR ; // 転送元アドレス設定 35: DMAC0.DMDAR = &buf[0] ; // 転送先アドレス設定 36: DMAC0.DMCRA = 100 ; // 転送バイト数=100バイト 37: // DMAC0.DMCSL.BYTE = 1 ; // 起動要因の割り込み要求をCPUに伝達する 38: DMAC.DMAST.BYTE = 1 ; // DMA転送許可 39: DMAC0.DMCNT.BYTE = 1 ; // DMA転送許可 40: } 41: 27

(28)

© 2013 Renesas Electronics Corporation. All rights reserved.

サンプル(1)マスタ許可設定

(29)

© 2013 Renesas Electronics Corporation. All rights reserved.

サンプル(1)チャネル許可設定

(30)

© 2013 Renesas Electronics Corporation. All rights reserved.

サンプル(1)SCIの初期化

30 42: // 43: // SCI初期設定 44: // 45: void initSCI(void) 46: { 47: int i ; 48:

49: MSTP(SCI6) = 0 ; // Wakeup SCI6

50: PORT0.ICR.BYTE = 0x02 ; // RxD6(P01)入力バッファON 51:

52: SCI6.SCR.BYTE = 0 ; // 内部クロック選択

53: SCI6.SMR.BYTE = 0 ; // 調歩同期,8ビット長,パリティなし

54: SCI6.BRR = 38 ; // 19200bps

55: for(i=0; i<1250; i++) ; // 1ビット期間待ち

56: SCI6.SCR.BYTE = 0xf0 ; // 送受信許可,送受信割り込み許可 57: 58: // IPR(SCI6, ) = 7 ; // SCI6割り込み優先レベル=7 59: // IEN(SCI6,ERI6) = 1 ; // ERI6 受信エラー割り込み許可 60: IEN(SCI6,RXI6) = 1 ; // SCI6 受信割り込み許可 61: } 62: 63: // SCI6_ERI6

64: //#pragma interrupt (Excep_SCI6_ERI6(vect=238)) 65: //void Excep_SCI6_ERI6(void)

66: //{

67: // unsigned char err_sts;

68: // err_sts = SCI6.SSR.BYTE & 0x30; 69: // :

70: // SCI6.SSR.BYTE = 0xc0 ; // 受信エラーフラグ(オーバラン、フレーミング)クリア 71: // while((SCI6.SSR.BYTE & 0x30)); // 受信エラーフラグの0クリアを確認

(31)

© 2013 Renesas Electronics Corporation. All rights reserved.

サンプル(2)仕様

31

動作概要

メモリ内容をリピート機能でコピーします。コピーは500ms毎(CMT0割り込み

要求)に実行され、リピートエリアの4つのデータをリピート回数16回分を転送

します。全ての転送が終了すると転送設定を再初期化し、繰り返し転送しま

す。

プログラム構造

main関数

周辺機能レジスタを初期化後、CPUは転送元領域に擬

似データ作成を繰り返し。

DMACI0割り込み

DMAC0を再初期化

DMAC

動作モード

リピート転送モード

転送元

src_ad_data[4])

転送先

dest_result[16][4])

転送数

リピートエリア(4)×リピート回数(16)=64

起動

CMI0割り込み

CMT0

動作モード

2Hz(500ms)のインターバルタイマに設定。

(32)

© 2013 Renesas Electronics Corporation. All rights reserved.

サンプル(2)フローチャート

setpsw_i(組み込み関数) 割り込み許可 ※CPU内部レジスタ、クロック レート、およびメモリ内の静的 変数領域はスタートアップ・ ルーチン内で初期化されます。 start_CMT0 CMT0 カウントスタート init_DMAC0 DMAC0 初期化 リセット・スタート スタートアップルーチン main init_CMT0 CMT0 初期化 CMT0割り込み要求を禁止 RTE DMAC0割り込み関数 (Excep_DMACA_DMAC0) 転送元アドレスを再設定 転送数、リピート回数を再設定 CMT0割り込みを許可 DMA転送を許可 転送先アドレスを再設定 転送元の擬似データを作成 32

(33)

© 2013 Renesas Electronics Corporation. All rights reserved.

サンプル(2)転送領域

33

/*****************************************************************************/ /* Function prototype declaration */ /*****************************************************************************/ void main(void); // main function

void init_DMAC0(void); // initialize for DMAC void init_CMT0(void); // Initialize for timer (CMT) void start_CMT0(void); // CMT0 count start void start_DAC(void); // D-A convert start /*****************************************************************************/ /* Global variable definition */ /*****************************************************************************/ static uint16_t src_ad_data[4] = {

62, 600, 221, 465, };

static uint16_t dest_result[16][4];

/*****************************************************************************/

/* Outline : Main */ /* Description : Hardware setting and endless loop with non operation. */ /*****************************************************************************/

void main(void) {

int i;

init_DMAC0(); // initialize for DMAC init_CMT0(); // Initialize for timer (CMT) start_CMT0(); // CMT0 count start setpsw_i(); // Interrupt enable (CPU) while(1){

} }

(34)

© 2013 Renesas Electronics Corporation. All rights reserved.

サンプル(2)DMACの初期化

34

/*****************************************************************************/ /* Outline : initialize for DMAC */ /* Description : Data transfer to DAC. (Repeat mode) */ /*****************************************************************************/ void init_DMAC0(void){

DMAC0.DMSAR = (void *)src_ad_data; // Source address is the beginning of the array on ROM. DMAC0.DMDAR = (void *)dest_result; // Destination addres is the array on RAM.

DMAC0.DMCRA = 0x0404; // Transfer count is 4 times. (backup) DMAC0.DMCRB = 16; // 16 times repeat.

DMAC0.DMTMD.BIT.DCTG = 1; // Transfer start by peripheral or external signal DMAC0.DMTMD.BIT.SZ = 1; // Transfer data size is 16bit

DMAC0.DMTMD.BIT.DTS = 1; // Transfer repeat area : source. DMAC0.DMTMD.BIT.MD = 1; // Transfer mode : repeat transfer DMAC0.DMINT.BIT.DTIE = 1; // Transfer end interrupt is enable

DMAC0.DMAMD.BIT.DM = 2; // Destination address increase by data transfer DMAC0.DMAMD.BIT.SM = 2; // Sourse address increase by data transfer DMAC0.DMCNT.BIT.DTE = 1; // Transfer of DMAC channel 0 is enbale DMAC.DMAST.BIT.DMST = 1; // Transfer of DMACA is enable

ICU.DMRSR0 = VECT(CMT0,CMI0); // Interrupt request of CMI0 transmit to DMAC0 IPR(DMAC,DMAC0I) = 1; // DMAC0I priority is 1.

IEN(DMAC,DMAC0I) = 1; // Interrupt request of DMAC0I is enable. }

(35)

© 2013 Renesas Electronics Corporation. All rights reserved.

サンプル(2)転送終了割り込み処理

/*****************************************************************************/ /* Outline : DMAC0 transfer end interrupt */ /* Description : Register of DMAC0 reset */ /*****************************************************************************/ void Excep_DMACA_DMAC0(void){

IEN(CMT0,CMI0) = 0; // Interrput request of CMI0 is disable

DMAC0.DMSAR = (void *)src_ad_data; // Source address is the beginning of the array on ROM. DMAC0.DMDAR = (void *)dest_result; // Destination addres is the array on RAM.

DMAC0.DMCRA = 0x0404; // Transfer count is 4 times. (backup) DMAC0.DMCRB = 16; // 16 times repeat.

DMAC0.DMCNT.BIT.DTE = 1; // Transfer of DMAC channel 0 is enbale IR(CMT0,CMI0) = 0; // Interrput request of CMI0 clear

IEN(CMT0,CMI0) = 1; // Interrput request of CMI0 is enable }

(36)

© 2013 Renesas Electronics Corporation. All rights reserved.

/*****************************************************************************/ /* Outline : CMT0 initialize */ /* Description : The register of CMT0 is initialized. */ /*****************************************************************************/ void init_CMT0(void){

MSTP(CMT0) = 0; // Wakeup CMT0,CMT1 CMT0.CMCR.BIT.CKS = 3; // CKS is PCLK/512 CMT0.CMCR.BIT.CMIE = 1; // CMIE is enable

CMT0.CMCOR = 46874; // CMCOR is 500ms@48MHz IEN(CMT0,CMI0) = 1; // CMI0 enable

}

/*****************************************************************************/ /* Outline : CMT0 start */ /* Description : CMT0 count start. */ /*****************************************************************************/ void start_CMT0(void){ CMT.CMSTR0.BIT.STR0 = 1; // Start CMT0 }

サンプル(2)CMTの初期化

36

(37)

© 2013 Renesas Electronics Corporation. All rights reserved.

まとめ、データ転送機能比較

転送パフォーマンス優先

起動要因数を優先

DMAC

転送情報は内部のレジスタに記憶

– 転送要求を受け付けると直ぐにデータ転送を開始

(転送のオーバーヘッドなし)

– チャネル数分の転送情報を保持(RX62Nでは4チャネル)

DTC

転送情報はRAMに記憶

– 転送情報をDTCベクタテーブルを使って読み込む

(転送のオーバーヘッドあり)

– 多くの転送情報を保持できる

37

(38)

ルネサス エレクトロニクス株式会社

© 2013 Renesas Electronics Corporation. All rights reserved.

参照

関連したドキュメント

電源を入れる システム 電源 AC電源連動設定 【AC電源連動設定を する】. 機能(目的) 設定方法 画面で見るマニュアル

FUJISAWA SHUNSUKE MIGITA Cancer Research Institute Kanazawa University Takaramachi, Kanazawa,... 慢性活動性肝炎,細

SVF Migration Tool の動作を制御するための設定を設定ファイルに記述します。Windows 環境 の場合は「SVF Migration Tool の動作設定 (p. 20)」を、UNIX/Linux

本体背面の拡張 スロッ トカバーを外してください。任意の拡張 スロット

l 「指定したスキャン速度以下でデータを要求」 : このモード では、 最大スキャン速度として設定されている値を指 定します。 有効な範囲は 10 から 99999990

I Samuel Fiorini, Serge Massar, Sebastian Pokutta, Hans Raj Tiwary, Ronald de Wolf: Exponential Lower Bounds for Polytopes in Combinatorial Optimization. Gerards: Compact systems for

荷役機器の増車やゲートオープン時間の延長(昼休みの対応を含む)、ヤードの拡張、ターミ

パスワード 設定変更時にパスワードを要求するよう設定する 設定なし 電波時計 電波受信ユニットを取り外したときの動作を設定する 通常