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

Similar documents
スライド 1

スライド 1

スライド 1

スライド 1

スライド 1

スライド 1

スライド 1

スライド 1

スライド 1

スライド 1

スライド 1

Microsoft PowerPoint - RL78G14_動画マニュアル_タイマRD.ppt [互換モード]

RL78開発環境移行ガイド R8C/M16C, H8S/H8SXからRL78への移行(統合開発環境編)(High-performance Embedded Workshop→CS+)

RH850の割り込み/例外実現方法 CC-RHアプリケーションガイド

アプリケーションノート AS-E402サンプルプログラム

PowerPoint プレゼンテーション

81 /******************************************************************************/ 82 /* スレーブアドレスの設定 */ 83 /*****************************************

内容 1. 仕様 動作確認条件 ハードウェア説明 使用端子一覧 ソフトウェア説明 動作概要 ファイル構成 オプション設定メモリ 定数一覧 変数一

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ

SH7670グループ DMAC 内蔵モジュールへの転送例

ブート領域、フラッシュ領域の分割方法 RL78ファミリ用Cコンパイラ CC-RL

S1C17 Family Application Note S1C17 シリーズ PORT 多重割り込みアプリケーションノート Rev.1.0

Microsoft Word - プログラムをRAM.doc

2.RL78 での割り込み処理 ( 割り込み受け付け ) マスクが解除された (xxmk ビットが 0 の ) 割り込み要求信号は 2 つの用途で使用されます 一つ目は,CPU のスタンバイ状態の解除です この動作は, 割り込み優先順位とは全く無関係で, マスクされていない (xxmk=0 の )

Microsoft Word - FCTT_CS_Mod( )Jver1.doc

CubeSuite+版RXシリアルデバッガ取扱説明書

CoIDE 用 F4D_VCP の説明 V /07/05 USB の VCP( 仮想 COM ポート ) による非同期シリアル通信を行うプログラムです Free の開発ツール CoIDE で作成した STM32F4 Discovery 用のプロジェクトです プログラムの開始番地は 0x

1. A/D 入力について分解能 12bit の A/D コンバータ入力です A/D 入力電圧とディジタル値との対応は理論上 入力電圧 0V : 0 入力電圧 +3V : 4095 です 実際はオフセットと傾きがあり ぴったりこの数値にはなりません 2. A/D 入力に使用する信号 STM32L_A

RTC_STM32F4 の説明 2013/10/20 STM32F4 内蔵 RTC の日付 時刻の設定および読み込みを行うプログラムです UART2( 非同期シリアル通信ポート 2) を使用して RTC の設定および読み込みを行います 無料の開発ツール Atollic TrueSTUDIO for

RX ファミリ、M16C ファミリ アプリケーションノート M16CからRXへの置き換えガイド 調歩同期式シリアル通信(UART)編

1. USB の VCP( 仮想 COM ポート ) について USB の VCP( 仮想 COM ポート ) は USB を非同期シリアル通信として使用するための USB のドライバです PC には VCP ドライバをインストールする必要があります USB の VCP( 仮想 COM ポート )

1. 使用する信号 1.1. UART 信号 UART 通信に使用する信号と接続相手との接続は以下の通りです UART 信号表 番号 CPU 機能名 CPU 信号名 基板コネクタピン番号 方向 接続相手の信号名 1 USART1_TX PA9 CN > RxD 2 USART1_R

PowerPoint プレゼンテーション

GR-SAKURA-SAのサンプルソフト説明

ETCB Manual

マクロ(シミュレータコマンド)の使い方

1. プログラム実行時の動作プログラムを実行すると以下のように動作します 1) NUCLEO-F401RE 上の LED LD2( 緑 ) が 200mSec 間隔で点滅します 2. プロジェクトの構成 2.1. プロジェクト F401N_BlinkLD2 の起動画面 TrueSTUDIO で作成し

// USB_CNC_Machine リモート PIO 端末プログラムのメイン関数およびユーザアプリ部 // 編集作成 by Takehiko Inoue /*********** メイン関数 ***************************/ #pragma code

目次 目次... 1 はじめに... 3 マイコンシミュレータのデバッグ機能... 3 スタートアップコマンドファイル... 5 シミュレータコマンド ( マクロ ) 例... 6 I/O 制御等で外的要因待ちをしている場合 ( その1)... 6 I/O 制御等で外的要因待ちをしている場合 ( そ

AN

割り込み 今までのプログラムは 順番にそって命令を実行していくのみ それはそれで良いが 不便な場合もある 例えば 時間のかかる周辺機器を使う場合 その周辺機器が動作を終了するまで CPU は待たなければいけない 方法 1( ポーリング ) 一定時間毎に 周辺機器の動作が終了したか調べる 終了していれ

SOPC Builder ペリフェラル 簡易ユーザ・ガイド - PIO (Parallel I/O)

Microsoft Word - DS50-D A_SX505_BIOS_Manual.doc

SH7254Rグループ A-DMACを用いたSCI調歩同期式シリアルデータ転送機能

アナログ・接点変換器

CoIDE 用 STM32F4_UART2 の説明 V /03/30 STM32F4 Discovery の非同期シリアル通信ポート UART2 の送受信を行うプログラムです Free の開発ツール CoIDE で作成したプロジェクトサンプルです プログラムの開始番地は 0x08000

1. UART について UART は Universal Asynchronous Receiver Transmitter の頭文字をとったもので 非同期シリアル通信と呼ばれます シリアル通信とは 一本の信号線でデータをやりとりするために 1bit ずつデータを送出することをいいます データを受

Microsoft PowerPoint - kougi7.ppt

概要 プログラミング論 変数のスコープ, 記憶クラス. メモリ動的確保. 変数のスコープ 重要. おそらく簡単. 記憶クラス 自動変数 (auto) と静的変数 (static). スコープほどではないが重要.

1. LCD LS027B4DH01 について LS027B4DH01 は 400dot x 240dot のグラフィック LCD です 秋月電子通商で購入できます 外形サイズ : 62.8 x x 1.53mm LCD のフレキシブルケーブルの根元の部分はちょっと力を加えただけで表示が

Microsoft PowerPoint - dsp12_2006.ppt

Jan/25/2019 errata_c17m11_10 S1C17 マニュアル正誤表 項目 リセット保持時間 対象マニュアル発行 No. 項目ページ S1C17M10 テクニカルマニュアル システムリセットコントローラ (SRC) 特性 19-3 S1C17M20/M

Microsoft Word - dg_sataahciip_refdesign_jp.doc

RX コード生成 V リリースノート

OAKS16-BoardKit

自己紹介 湯浅陽一 1999 年より Linux kernel 開発に参加 MIPS アーキテクチャのいくつかの CPU へ Linux kernel を移植

基本条件 (1Slot 版用 ) 機能 MR-SHPC 端子名 設定内容 備考 CS 空間 -CS CS6 空間 ( キャッシュ無し ) キャッシュ無し空間を使用 (B h) RA25 0 固定 レジスタ空間 RA24 0 固定 RA23 0 固定 B83FFFE 4h~B83FFFF

GR-SAKURA-SAのサンプルソフト説明

/* モジュールストップ解除 */ SYSTEM.MSTPCRA.BIT.MSTPA24 = 0; /* MSTPA24(S12ADA 制御部 ) クロック供給開始 */ SYSTEM.MSTPCRA.BIT.MSTPA17 = 0; /* MSTPA17(S12ADA0) クロック供給開始 */

NI P1200 Release Notes Cover

MMUなしプロセッサ用Linuxの共有ライブラリ機構

TFTP serverの実装

1 1 TA, ,9 1. ( 2. TM TM GUI TM 1. P7-13 TM Notepad, Meadow, ( P109 ). 2. (shisaku01/sys test)

Microsoft PowerPoint - 09.pptx

RX62N グループ SCI を使ったクロック同期式シングルマスタ制御ソフトウェア

Nios® II HAL API を使用したソフトウェア・サンプル集 「Modular Scatter-Gather DMA Core」

M16C M16C/50 M16C/5M R5F35MD6JFB 128K + 24K 12K PLQP0100KB-A 100P6Q-A ( 1) R5F35MD6KFB PLQP0100KB-A 100P6Q-A ( 1) R5F35MDEJFB 256K + 24K 20K PLQP0100K

割り込み 今までのプログラムは 順番にそって命令を実行していくのみ それはそれで良いが 不便な場合もある 例えば 時間のかかる周辺機器を使う場合 その周辺機器が動作を終了するまで CPU は待たなければいけない 方法 1( ポーリング ) 一定時間毎に 周辺機器の動作が終了したか調べる 終了していれ

目次 1 I2Cとは 13 結線写真 2 センサの多くがI2Cに対応 14 WHO_AM_I 3 マイコンでのI2C通信例 15 I2C読込みプログラム 4 とは 16 I2C読込みスクリプト概要① 5 タイミングパラメータ 17 I2C読込みスクリプト概要② 6 書込み 18 センサ読込みプログラ

RX210 グループ MTU2 を用いた相補 PWM モードの波形出力 要旨 本サンプルコードでは MTU2 を用いて相補 PWM モードの波形を出力する方法について説 明します 対象デバイス RX210 1 / 41

tri_s_tg12864_vcp の説明 2014/02/05 飛石伝ひ CPU 基板 の LCD TG12864 の表示プログラムです 漢字表示 (JIS208) を行うことができます USB の VCP ( 仮想 COM ポート ) を使用して非同期シリアル通信により 表示試験を行うことができ

Rev.1.1 S1V50300 サンプルプログラムマニュアル

データ収集用 NIM/CAMAC モジュールマニュアル 2006/5/23 目次 クレート コントローラ CC/ NIM ADC 1821 (Seiko EG&G)...3 ADC インターフェイス U デッドタイム

(Microsoft Word - \216\346\220\340SiTCP-VME-Master\(Rev26\).doc)

内容 1. 仕様 動作確認条件 ハードウェア説明 使用端子一覧 ソフトウェア説明 動作概要 ファイル構成 オプション設定メモリ 定数一覧 変数一

アライドテレシス・コアスイッチ AT-x900 シリーズ で実現するエンタープライズ・VRRPネットワーク

1. 新規プロジェクト作成の準備新規プロジェクトのためのフォルダを用意して そこにプロジェクトを作成します [ 新しいフォルダー ] をクリックして希望のフォルダに新しいフォルダを作成します この例では TrST_F401N_BlinkLD2 というフォルダを作成しました TrST_F401N_Bl

スライド 1

SuperH RISC engine C/C++ コンパイラ Ver.7 不具合内容 - 過去のお知らせ SuperH RISC engine C/C++ コンパイラ Ver.7 台における不具合内容を以下に示します のチェックツールをルネサスエレクトロニクス株式会社のホームページ

Notes and Points for TMPR454 Flash memory

ヤマハDante機器と他社AES67機器の接続ガイド

OS

Microsoft Word - DS50-D A_S501B_BIOS_Manual.doc

< D A0>

セキュアVMの アーキテクチャ概要

PowerPoint プレゼンテーション

02: 変数と標準入出力

LIN (Local Interconnect Network) マスタ編

Microsoft PowerPoint - sp ppt [互換モード]

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用

命令セットの構成例 a) 算術 演算命令 例 )ADD dest, source : dest dest + source SUB dest, source : dest dest - source AND dest, source : dest dest AND source SHR reg, c

ex05_2012.pptx

内容 1. APX-3302 の特長 APX-3312 から APX-3302 へ変更するためには 差分詳細 ハードウェア ハードウェア性能および仕様 ソフトウェア仕様および制限 Ini ファイルの設

計算機システム概論

スレーブ用システム設計ガイド アプライアンス社モータビジネスユニット 2012/2/15 Rev. 2 Page 1

02: 変数と標準入出力

r_init_clock_c - メモ帳

スライド 1

Microsoft PowerPoint - Kozos12step_07_

計算機ハードウエア

Transcription:

RX62N 周辺機能紹介 DMAC Direct Memory Access Controller ルネサスエレクトロニクス株式会社ルネサス半導体トレーニングセンター 2013/08/02 Rev. 1.00 00000-A

コンテンツ DMACの概要 転送モード 起動要因 その他の機能 プログラムサンプル 2

DMAC の概要 3

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

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

転送モード 6

ノーマルモード 7

リピートモード 8

リピートエリア 9

ブロック転送モード 転送元データ領域 転送先データ領域 ( ブロック領域に設定 ) DMSAR 第 1 ブロック : 転送 ブロック領域 DMDAR 第 N ブロック 10

ブロックエリア 転送元データ領域 転送先データ領域 ( ブロック領域に設定 ) DMSAR 第 1 ブロック : 転送 第 1 ブロック ブロック領域 DMDAR 第 N ブロック 11

転送モードの設定 DMA 転送モードレジスタ (DMTMD) 12

起動要因 13

転送要求の設定 DMACn.DMTMD(n=0~3) b15 b14 b13 b12 b11 b10 b9 b8 b7 b6 b5 b4 b3 b2 b1 b0 MD DTS ーー SZ ーーーーーー DCTG 初期値 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 ノーマル 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 設定禁止 リピートエリア選択 0 0 転送先がリピート / ブロック領域 0 1 転送元がリピート / ブロック領域 1 0 リピート / ブロック領域を指定しない 1 1 設定禁止 14

ソフトウェア起動 15

周辺モジュールまたは外部割り込み DMACn.DMTMD(n=0~3) b15 b14 b13 b12 b11 b10 b9 b8 b7 b6 b5 b4 b3 b2 b1 b0 MD DTS ーー SZ ーーーーーー DCTG 初期値 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 ノーマル 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 設定禁止 リピートエリア選択 0 0 転送先がリピート / ブロック領域 0 1 転送元がリピート / ブロック領域 1 0 リピート / ブロック領域を指定しない 1 1 設定禁止 16

起動要因の詳細設定 17

その他の機能 18

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

オフセット加算の使用例 転送元 1 6 11 2 7 12 3 8 13 4 9 14 5 10 15 転送先 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 DMAC でコピーすると 90 度回転している 20

オフセット加算の設定 21

拡張リピートエリア機能 転送元アドレスの下位 3 ビット (8 バイト ) を拡張リピートエリアに設定した場合 メモリ領域 00013FFEh 00013FFFh 00014000h 00014001h 00014002h 00014003h 00014004h 00014005h 00014006h 00014007h 00014008h 00014009h DMSAR の値の範囲 00014000h 00014001h 00014002h 00014003h 00014004h 00014005h 00014006h 00014007h 繰り返す 拡張リピートエリアオーバフロー割り込み要求の発生が可能 22

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

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

プログラムサンプル 25

サンプル (1) 仕様 26

サンプル (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

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

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

サンプル (1)SCI の初期化 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クリアを確認 72: // while( IR(SCI6,ERI6) ); // 受信エラーの割り込みステータスビットが0か確認 30

サンプル (2) 仕様 動作概要 メモリ内容をリピート機能でコピーします コピーは500ms 毎 (CMT0 割り込み要求 ) に実行され リピートエリアの4つのデータをリピート回数 16 回分を転送します 全ての転送が終了すると転送設定を再初期化し 繰り返し転送します プログラム構造 main 関数 周辺機能レジスタを初期化後 CPUは転送元領域に擬 似データ作成を繰り返し DMACI0 割り込み DMAC0 を再初期化 DMAC 動作モードリピート転送モード 転送元転送先転送数起動 src_ad_data[4]) dest_result[16][4]) リピートエリア (4) リピート回数 (16)=64 CMI0 割り込み CMT0 動作モード 2Hz(500ms) のインターバルタイマに設定 31

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

サンプル (2) 転送領域 /*****************************************************************************/ /* 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(); init_cmt0(); start_cmt0(); setpsw_i(); while(1){ } } // initialize for DMAC // Initialize for timer (CMT) // CMT0 count start // Interrupt enable (CPU) 33

サンプル (2)DMAC の初期化 /*****************************************************************************/ /* 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. 34

サンプル (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 } 35

サンプル (2)CMT の初期化 /*****************************************************************************/ /* 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 } 36

まとめ データ転送機能比較 DMAC 転送情報は内部のレジスタに記憶 転送要求を受け付けると直ぐにデータ転送を開始 ( 転送のオーバーヘッドなし ) チャネル数分の転送情報を保持 (RX62Nでは4チャネル) 転送パフォーマンス優先 DTC 転送情報はRAMに記憶 転送情報をDTCベクタテーブルを使って読み込む ( 転送のオーバーヘッドあり ) 多くの転送情報を保持できる 起動要因数を優先 37

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