アプリケーションノート

RX ファミリR20AN0291JJ0101
Rev.1.01
2016.10.01
音声録音・再生システム(独自 ADPCM コーデック) M3S-S2-Tiny モジュールを用いたサンプルプログラム
Firmware Integration Technology
要旨
本資料は、ADPCM エンコーダ/デコーダライブラリ(以下、S2 ライブラリ)のサンプルプログラムの情報を示します。
サンプルプログラムは各種 Renesas Starter Kit 上で動作します。音声再生・録音機能の実現のためには
Renesas Starter Kit に対応したミドルウェア評価ボードが必要です。ミドルウェア評価ボードの詳細について
は[2 章 開発環境]を参照してください。

動作確認デバイス
RX64M グループ、RX610 グループ、RX210 グループ、RX111 グループ、RX65N グループ

R20AN0291JJ0101
2016.10.01

Rev.1.01

Page 1 of 24

RX ファミリ 音声録音・再生システム(独自 ADPCM コーデック) M3S-S2-Tiny モジュールを用いたサ
ンプルプログラムFirmware Integration Technology

目次
1.

アプリケーションノート構成 ........................................................................................... 3

2.

開発環境 ...........................................................................................................................4

3.

サンプルプログラム .........................................................................................................5

3.1

操作方法 ........................................................................................................................................ 5

3.2

動作環境 ........................................................................................................................................ 5

3.3

FIT モジュール環境 ....................................................................................................................... 6

3.3.1

使用する FIT モジュール ........................................................................................................ 6

3.3.2

CS+プロジェクトへの変換方法 .............................................................................................. 6

3.4

3.4.1

概要 ......................................................................................................................................... 7

3.4.2

フロー ..................................................................................................................................... 83.4.3

関数リスト .............................................................................................................................. 93.4.4

関数チャート......................................................................................................................... 11

3.4.5

音声データ変更手順 .............................................................................................................. 12

3.4.6

10 ビット音声データ ............................................................................................................ 13

3.4.7

PWM 出力方法 ...................................................................................................................... 14

3.5

4.

SW2 押下による音声再生プログラム ........................................................................................... 7

SW1 押下による音声録音プログラム ......................................................................................... 20

3.5.1

概要 ....................................................................................................................................... 20

3.5.2

フロー ................................................................................................................................... 20

3.5.3

関数リスト ............................................................................................................................ 213.5.4

関数チャート......................................................................................................................... 22

3.5.5

ADPCM データ取得手順 ....................................................................................................... 23

3.5.6

サンプルプログラムの変更 ................................................................................................... 23

3.5.7

ADPCM データの検証........................................................................................................... 23

ソフトウェア更新履歴.................................................................................................... 23

R20AN0291JJ0101
2016.10.01

Rev.1.01

Page 2 of 24

RX ファミリ 音声録音・再生システム(独自 ADPCM コーデック) M3S-S2-Tiny モジュールを用いたサ
ンプルプログラムFirmware Integration Technology

1.

アプリケーションノート構成

本アプリケーションノートは、以下のものから構成されています。

表 1 S2 ライブラリサンプルプログラムのアプリケーションノート構成
構成
r20an0291jj0101.pdf
readme_r22j.txt
workspace
サンプルプログラム(sample)
rx64m_rsk

内容本書
サンプルプログラムの情報

RX64M 用サンプルプログラムディレクトリ
(e2 studio) (※)
rx610_rsk
RX610 用サンプルプログラムディレクトリ
(e2 studio) (※)
rx210_rsk
RX210 用サンプルプログラムディレクトリ
(e2 studio) (※)
rx111_rsk
RX111 用サンプルプログラムディレクトリ
(e2 studio) (※)
rx65n_rsk
RX65N 用サンプルプログラムディレクトリ
(e2 studio) (※)(※) e2 studio プロジェクトは CS+へ変換して動作することが可能です。

R20AN0291JJ0101
2016.10.01

Rev.1.01

Page 3 of 24

RX ファミリ 音声録音・再生システム(独自 ADPCM コーデック) M3S-S2-Tiny モジュールを用いたサ
ンプルプログラムFirmware Integration Technology

2.

開発環境

弊社の開発環境を以下に示します。
ユーザアプリケーション開発時は以下のバージョンより新しいものをご使用下さい。
[ソフトウェアツール]
統合開発環境e2 studio V5.2
コーディングツール
Renesas RXC Toolchain V2.04.01[デバッグツール]
エミュレータデバッガ
E1 emulator
エミュレータソフトウェア
RX E1/E20 エミュレータデバッガ V.1.02.00[評価ボード]Renesas Starter Kit+ for RX64M

CPU ボード(型名：R0K50564MS100BE)

Renesas Starter Kit for RX610

CPU ボード(型名：R0K56108C000BE)

Renesas Starter Kit for RX210

CPU ボード(型名：R0K52108C000BE)

Renesas Starter Kit for RX111

CPU ボード(型名：R0K505111S000BE#WS)



Renesas Starter Kit+ for RX65N

CPU ボード(型名：RTK5005651C01000BR)

ミドルウェア評価ボード
ルネサス製
ミドルウェア評価ボードのマニュアルは Renesas Web サイトより入手してください。
http://japan.renesas.com/products/mpumcu/rx/Application_Notes.jsp
ドキュメント No: R21AN0004JJ
ドキュメントタイトル : RX600 シリーズ Renesas Starter Kit for RX610
ミドルウェア評価ボードの使用方法
音声出力アンプ㈱北斗電子様 (型名：AMP386A)
音声を再生する際の外付けの音声出力用ボードとして利用可能です。
詳細は、以下の Web サイトをご参照ください。
http://www.hokutodenshi.co.jp/7/amp386a.htm

R20AN0291JJ0101
2016.10.01

Rev.1.01

Page 4 of 24

RX ファミリ 音声録音・再生システム(独自 ADPCM コーデック) M3S-S2-Tiny モジュールを用いたサ
ンプルプログラムFirmware Integration Technology

サンプルプログラム

3.

本章ではサンプルプログラムについて説明します。サンプルプログラムは e2 studio 形式のワークスペースになっています。マイコンと周辺機器の初期化プログラムをご使用のシステムに合わせて修正してくださ
い。

3.1

操作方法

メイン関数では、ボード上のスイッチ(SW)の入力を待ちます。
SW 押下時の動作は以下の表のとおりです。

表 2 SW 押下時の操作
操作

内容

SW2 押下

音声再生(3.3 章 SW2 押下による音声再生プログラムを参照)ROM データに記録されている ADPCM をデコー
ドして PWM 出力または D/A 出力で再生します。

SW1 押下

音声録音(3.4 章 SW1 押下による音声録音プログラムを参照)A/D 入力から取得した PCM データを ADPCM
データにエンコードして RAM に保存します。

3.2

動作環境

サンプルプログラムは各種 Renesas Starter Kit に同梱されている CPU Board(以降、CPU ボード)で動作します。
各サンプルプログラム構成は以下の表のとおりです。

表 3 サンプルプログラム構成
サンプルプログラム

PWM 出力信号(※)

DA 出力信号(※)

入力アナログ信号

RX64M

P24(MTIOC4A)

P03(DA0) 12bitD/A

P43(AN003) 12bitA/D

RX610

P21(TIOCA3)

P66(DA0) 10bitD/A

P40(AN0) 10bitA/D

RX210

P24(TIOC4A)

P03(DA0) 10bitD/A

P45(AN005) 12bitA/D

RX111

P17(MTIOC3A)

P03(DA0) 8bitD/A

P43(AN003) 12bitA/D

RX65N

P24(MTIOC4A)

P03(DA0) 12bitD/A

P43(AN003) 12bitA/D※PWM 出力と D/A 出力はサンプルプログラム上で切り替えます。
ユーザはこれらの端子をミドルウェア評価ボードと接続する必要があります。これらの端子は CPU ボー
ドのアプリケーションヘッダとマイクロコントローラヘッダを使用してアクセスすることができます。詳細はミドルウェア評価ボードのアプリケーションノートを参照してください。

R20AN0291JJ0101
2016.10.01

Rev.1.01

Page 5 of 24

RX ファミリ 音声録音・再生システム(独自 ADPCM コーデック) M3S-S2-Tiny モジュールを用いたサ
ンプルプログラムFirmware Integration Technology

3.3

FIT モジュール環境

サンプルプログラム は、e2 studio に含まれている FIT モジュール組み込み機能を用いてプロジェクトを作成しています。

3.3.1

使用する FIT モジュール

使用している FIT モジュールは以下の通りです。

RX ファミリ音声録音・再生システム(独自 ADPCM コーデック) M3S-S2-Tiny モジュール
Firmware Integration Technology(R20AN0037)
RX ファミリ ボードサポートパッケージモジュール Firmware Integration Technology(R01AN1685)
上記 FIT モジュールの詳細は、各 FIT モジュールに含まれるドキュメントを参照して下さい。

3.3.2

CS+プロジェクトへの変換方法

e2 studio のプロジェクトは、プロジェクト内に含まれている rcpc ファイルを用いて、CS+プロジェクトへコンバートすることができます。以下、rx64m_rsk を例に説明します。
変換方法を以下に示します。
１． CS+を起動し、「e2 studio / CubeSuite / …」の「GO」ボタンを押します。
２．「e2 studio プロジェクト・ファイル(*.rcpc)」を選択して、*.rcpc ファイルを開きます。
３．「プロジェクト変換設定」ウインドウが開き、ツリー上でプロジェクトを選択します。
４．ツリーの右側のプロジェクト設定で、使用するマイクロコントローラを「RX64M」->「R5F564MLDxFC」を選択して「OK」を押します。CS+は変換されたプロジェクトを出力します。
５．「プロジェクトツリー」から「CC-RX」を選択します。
６．「共通オプション」タブ->の「CPU」->「命令セット・アーキテクチャ」を「RXv2 アーキテクチャ」に設定します。
７．「リンク・オプション」タブ->の「入力」->「バイナリ・データ・ファイル」の設定を以下のように変
更します。
[変更前]
%ProjectFolder%/../%ProjectName%/adpcm/sound_adpcm.dat}(ADPCM_ADDR1)%MainProjectDir%/%ProjectName%/adpcm/sound_adpcm.dat(ADPCM_ADDR1)[変更後]不要な”}”と不要なパスを削除します。
%ProjectFolder%/../%ProjectName%/adpcm/sound_adpcm.dat(ADPCM_ADDR1)
８．プロジェクトをビルドして、ビルド完了します。
９．ユーザは環境に合わせてデバッグツールの設定を行ってください。その後、ユーザはサンプルプログラ
ムの動作を確認することができます。

R20AN0291JJ0101
2016.10.01

Rev.1.01

Page 6 of 24

RX ファミリ 音声録音・再生システム(独自 ADPCM コーデック) M3S-S2-Tiny モジュールを用いたサ
ンプルプログラムFirmware Integration Technology

SW2 押下による音声再生プログラム

3.4
3.4.1

概要

SW2 を押すと、音声が再生されます。音声は PWM または DA 出力を使用して再生します。
decode_main 関数により、ADPCM データが伸張され、PCM データをリングバッファに格納します。タイ
マ割り込みによってリングバッファ内の PCM/DA データを出力します。この処理はすべての ADPCM デー
タが出力されるまで続きます。PCM データは 90.7μs*間隔でタイマ割り込みによってバッファから取り出
され、PWM 出力に転送されます。音声データのサンプリング周波数は 11.025kHz です。
【注】 *90.7μsec ≒ 11.025kHz
音声データのサイズと記憶領域は、以下のマクロで定義します。
音声データのサイズ（ADPCM データサイズの 2 倍）:マクロ名 PCM_DATA_SIZE1

記憶領域の開始アドレス:マクロ名 ADPCM_ADDR1

D/A、PWM 出力の選択は、r_s2_driver.h の SOUND_OUTPUT_MODULE マクロに対して以下のどちらかを定義することにより決定します。
D/A で音声出力する場合: SOUND_DA

PWM で音声出力する場合 : SOUND_PWM

このサンプルプログラムは、PCM データバッファアンダーランを防止するためにメインループで PCM
データのバッファリングをしています。これは実用的なユーザシステムではありません。ユーザは必要に応じて、定期的な割り込みまたは RTOS による PCM データのバッファリングを実装してください。

R20AN0291JJ0101
2016.10.01

Rev.1.01

Page 7 of 24

RX ファミリ 音声録音・再生システム(独自 ADPCM コーデック) M3S-S2-Tiny モジュールを用いたサ
ンプルプログラムFirmware Integration Technology

3.4.2

フロー
タイマ割り込み
main()

while(1)

PCM データをバッファから取り出す

SW2 が押下されるまで待つ
デコードのための変数の初期化

PCM
データ
バッ

PCM データ
バッファ初期化

PCM データがPWM/DA で出力される

ADPCM データのデコード
ADPCM データのデコード完了まで続ける

ADPCM データのデコード

音声がすべて出力されるまで待つ

図 1

R20AN0291JJ0101
2016.10.01

Rev.1.01

フローPage 8 of 24

RX ファミリ 音声録音・再生システム(独自 ADPCM コーデック) M3S-S2-Tiny モジュールを用いたサ
ンプルプログラムFirmware Integration Technology

3.4.3
関数リスト
表 4 関数リスト
関数名

No.
1
1.1
1.2

main
R_StartSelectR_decode_main

1.2.1
1.2.2
1.2.3
1.2.3.1

decode_interval_timer_init
SOUND_MODULE_INIT(※)
R_InitDecInfo
R_adpcm_initDec

1.2.4

R_InitRingBuffer

1.2.5

R_DecodeProc

1.2.5.1

R_adpcm_RefreshDec

1.2.5.2

R_adpcm_decode

1.2.5.3

R_RingBufferSetData

1.2.5.3.1

R_RingBufferPush

1.2.5.3.1.1

SOUND_OUTPUT_DATA_CNV(※)SOUND_MODULE_START(※)
decode_interval_timer_start
SOUND_MODULE_STOP(※)
decode_interval_timer_stop
SOUND_MODULE_SLEEP(※)
decode_interval_timer_sleep
R_interrupt_decode_timer

概要
メイン関数です。
スイッチの入力を判定します。
ROM 上にある ADPCM データをデコードし、PCM データ
をリングバッファに格納します。
サンプリング周波数の周期タイマの初期設定を行います。
PWM/DA 出力の初期設定を行います。
デコード情報構造(DECINFO)を初期化します。
デコードするための作業領域を初期化します。
- ライブラリ関数です。
デコードデータを格納するためのリングバッフを初期化します。
ADPCM データを PCM データに変換し、デコードされたデータをリングバッファに格納します。ADPCM 入力ポイ
ンタがここで更新されます。
入力 ADPCM データアドレスと出力 PCM データアドレスを更新します。
- ライブラリ関数です。
4 ビット ADPCM データを 16 ビット PCM データに変換します。
- ライブラリ関数です。
データを書き込む前にリングバッファの空きをチェックします。
デコードされた PCM データをリングバッファに格納します。
PCM データ(16 ビット)を PWM 出力データに変換します。

PWM/DA 出力を開始します。
サンプリング周波数の周期タイマを開始します。
PWM/DA 出力を停止します。
サンプリング周波数の周期タイマを停止します。
PWM/DA 出力を終了します。
サンプリング周波数の周期タイマを終了します。
タイマ割り込みです。PWM を使用してサンプリング周波数のサイクルごとにデコードされた PCM データを出力します。
2.1.
R_SetPCMdata
音声データを PWM/DA で出力します。
(※) 関数を定義したマクロです。SOUND_OUTPUT_MODULE マクロの設定値により実行する関数が変わり
ます。
1.2.6
1.2.7
1.2.8
1.2.9
1.2.101.2.11
2.

R20AN0291JJ0101
2016.10.01

Rev.1.01

Page 9 of 24

RX ファミリ 音声録音・再生システム(独自 ADPCM コーデック) M3S-S2-Tiny モジュールを用いたサ
ンプルプログラムFirmware Integration Technology
表 5 関数マクロ一覧
関数マクロ名SOUND_OUTPUT_MODULE がSOUND_DA を定義している場合

SOUND_MODULE_INIT
SOUND_OUTPUT_DATA_CNV

decode_da_converter_init
R_Convert16to10(RX610、RX210)
R_Convert16to12(RX64M,RX65N)
R_Convert16to8(RX111)
decode_da_converter_start
decode_da_converter_stop
decode_da_converter_sleep

SOUND_MODULE_STARTSOUND_MODULE_STOPSOUND_MODULE_SLEEPR20AN0291JJ0101
2016.10.01

Rev.1.01

SOUND_OUTPUT_MODULE がSOUND_PWM を定義している場合
decode_pwm_init
R_Convert16toPWM

decode_pwm_start
decode_pwm_stop
decode_pwm_sleep

Page 10 of 24

RX ファミリ 音声録音・再生システム(独自 ADPCM コーデック) M3S-S2-Tiny モジュールを用いたサ
ンプルプログラムFirmware Integration Technology

関数チャート

3.4.4

1

main
1.1

R_StartSelect1.2

R_decode_main
2

R_interrupt_deco
de timer

1.2.1

decode_interval
timer init

2.1

R_SetPCMdata
1.2.2

SOUND_MODULE INIT
1.2.3

1.2.3.

R_InitDecInfo

R_adpcm_initDe
c

1.2.4

R_InitRingBuff
er
1.2.5

1.2.5.

R_adpcm_
RefreshDec

R_DecodeProc

1.2.6

1

1.2.5.

SOUND_MODULE START
1.2.9

1.2.7

decode_interval
timer stop

R_adpcm_decode

1.2.5.

decode_interval
timer start

1.2.10

1.2.

SOUND_MODULE SLEEP

1.2.5.3.1

R_DecodeProc

12

1.2.11

R_RingBufferPush1.2.5.3.1.1

SOUND_MODULE STOP

decode_interval
timer sleep

R_RingBuffer
SetData

SOUND_OUTPUT DATA CNV

1

図 2 関数チャート
R20AN0291JJ0101
2016.10.01

Rev.1.01

Page 11 of 24

RX ファミリ 音声録音・再生システム(独自 ADPCM コーデック) M3S-S2-Tiny モジュールを用いたサ
ンプルプログラムFirmware Integration Technology

3.4.5

音声データ変更手順

サンプルプログラムにはサンプルの音声データが含まれます。この音声データをユーザ作成のものに変更する手順を以下に示します。
(1) 音声データの作成
以下の表に示す仕様に従って音声データを作成します。

表 6 音声データ仕様
量子化ビットチャネル
サンプリング周波数
ファイル形式

16 ビットモノラル
11.025kHz
WAV(2) 音声データの圧縮
ADPCM_TOOL(ADPCM.exe)を使用して Wave(.wav)ファイルから ADPCM データ(バイナリ形式)を作成します。使用方法については、ツール"ADPCM_TOOL"のマニュアルを参照してください。

(3) サンプルプログラムの変更
・PCM_DATA_SIZE1
マクロ PCM_DATA_SIZE1 の値は、サンプルプログラムの" r_s2_driver.h"ファイルに設定しています。この値は、使用する音声データのサイズに従って設定します。設定値は ADPCM データのサイズの 2 倍の値を設定してください。
［たとえば、ADPCM データのサイズが 0x1ef1 バイトである場合は、設定は次のようになります。］#define PCM_DATA_SIZE1 0x3de2/* size of sound data after decode(compressed data) */・ADPCM_ADDR1ADPCM データの位置に従ってサンプルプログラムの"r_s2_driver.h"ファイルにアドレス ADPCM_ADDR1の値を設定します。
［ADPCM データが 0xFFF80000 番地から始まる場合］#define ADPCM_ADDR1

0xFFF80000/* top address of ADPCM sound data storage */(4)音声データのダウンロード
ADPCM データを ADPCM_ADDR1 に設定されたアドレスにダウンロードします。ADPCM データは
ADPCM_TOOL を使用して作成したデータです。ダウンロード手順については、統合開発環境のマニュアルを参照してください。

R20AN0291JJ0101
2016.10.01

Rev.1.01

Page 12 of 24

RX ファミリ 音声録音・再生システム(独自 ADPCM コーデック) M3S-S2-Tiny モジュールを用いたサ
ンプルプログラムFirmware Integration Technology

3.4.6

10 ビット音声データ

R_adpcm_decode 関数によって伸張された音声データの長さは 16 ビットです。ご使用のシステムに従って、音声データのビット長を変更してください。RX610、RX210 のサンプルプログラムでは、
R_Convert16to10()関数を使用して 16 ビット長の PCM データを 10 ビット長に変換します。（10 ビット D/Aコンバータなどを使用するときに、これを使用することができます｡）

引数：変換前の 16 ビット PCM データ
戻り値：変換後の 10 ビット D/A データ
return (uint16_t)(((data + 0x20) >> 6) + 512);

R20AN0291JJ0101
2016.10.01

Rev.1.01

Page 13 of 24

RX ファミリ 音声録音・再生システム(独自 ADPCM コーデック) M3S-S2-Tiny モジュールを用いたサ
ンプルプログラムFirmware Integration Technology

3.4.7

PWM 出力方法

PWM の設定および動作方法について説明します。
• <仕様>
タイマを 2 チャネル使用し、周期タイマ用、PWM 機能用として使用します。周期タイマの割り込みではPWM 機能用タイマのタイマジェネラルレジスタに PCM データから計算されたデューティ値を設定します。
デューティ値は以下の計算式で求めます。( r_s2_decode.c 関数名: R_Convert16toPWM)
return (uint16_t)(((int32_t)( data + 32768 )* PWM_SAMPLING) >> 16);
 計算式の意味
 ・+32768 の意味
入力値(data)の補正。入力値(data)は int16_t 型、出力値は uint16_t 型
 ・PWM_SAMPLING と >>16 の意味
入力値(data) : 0xffff(タイマカウント最大値) = x : PWM_SAMPLING(100kHz を数える為のタイマカウント値)

x = (入力値(data) * PWM_SAMPLING) / 0xffff= (入力値(data) * PWM_SAMPLING) >> 16;

R20AN0291JJ0101
2016.10.01

Rev.1.01

Page 14 of 24

RX ファミリ 音声録音・再生システム(独自 ADPCM コーデック) M3S-S2-Tiny モジュールを用いたサ
ンプルプログラムFirmware Integration Technology(1)[RX64M の場合]

• <利用資源>•マルチファンクションタイマパルスユニット 3(MTU3a) 2ch(MTU1,MTU4)
出力端子 1 本( MTIOC4A )表 7

PWM 出力方法

チャネル
1

4

項目
用途
端子出力制御動作モード
動作クロック周期
割り込み
用途
端子出力制御動作モード
動作クロックPWM 周期PWM 出力設定
TRGC から TRGA への転送タイミング
デューティ値の更新タイミング
割り込み

内容
音声データのサンプリング周期生成なし
通常動作
120MHz
音声のサンプリング周波数(≒11.025kHz)TGRA レジスタとのコンペアマッチを周期とする
使用する
PWM 機能あり(MTIOC4A)
PWM モード 1
TGRA レジスタと TGRC レジスタはバッファ動作
120MHz
100kHz(チャネル 1 より短い周期) = PWM_SAMPLING
TRGB とのコンペアマッチを PWM 周期とする
TRGA とのコンペアマッチで"L"出力、TRGB とのコンペアマッチで"H"出力TCNT レジスタのクリア(=TRGB とのコンペアマッチ)
チャネル 1 割り込み処理で更新
使用しない<制限事項>
CPU ボードで RX64M のサンプルプログラムの D/A 出力の動作を確認する場合は、CPU ボードの 0Ω抵
抗の実装を変更する必要があります。

表 8 実装変更
抵抗

信号名
P03 信号切替
D/A 出力の動作確認時の実装
デフォルト実装

R20AN0291JJ0101
2016.10.01

Rev.1.01

DA0
LED0

R189
実装する
実装しない

R277
実装しない
実装する

Page 15 of 24

RX ファミリ 音声録音・再生システム(独自 ADPCM コーデック) M3S-S2-Tiny モジュールを用いたサ
ンプルプログラムFirmware Integration Technology(2)[RX610 の場合]

• <利用資源>•16 ビットタイマパルスユニット(TPU) 2ch(TPU1,TPU3)
出力端子 1 本( TIOCA3 )

表 9 PWM 出力方法
チャネル
1

3

項目
用途
端子出力制御動作モード
動作クロック周期
割り込み
用途
端子出力制御動作モード
動作クロックPWM 周期PWM 出力設定
TRGC から TRGA への転送タイミング
デューティ値の更新タイミング
割り込み

R20AN0291JJ0101
2016.10.01

Rev.1.01

内容
音声データのサンプリング周期生成
なし
通常動作
50MHz
音声のサンプリング周波数(≒11.025kHz)TGRA レジスタとのコンペアマッチを周期とする
使用する
PWM 機能あり(TIOCA3)PWM モード 1
TGRA レジスタと TGRC レジスタはバッファ動作
50MHz
100kHz(チャネル 1 より短い周期) = PWM_SAMPLING
TRGB とのコンペアマッチを PWM 周期とする
TRGA とのコンペアマッチで"L"出力、TRGB とのコンペアマッチで"H"出力TCNT と TRGA のコンペアマッチ
チャネル 1 割り込み処理で更新
使用しない

Page 16 of 24

RX ファミリ 音声録音・再生システム(独自 ADPCM コーデック) M3S-S2-Tiny モジュールを用いたサ
ンプルプログラムFirmware Integration Technology(3)[RX210 の場合]

• <利用資源>•マルチファンクションタイマパルスユニット 2(MTU2a) 2ch(MTU1,MTU4)
出力端子 1 本( TIOC4A )表 10

PWM 出力方法

チャネル
1

4

項目
用途
端子出力制御動作モード
動作クロック周期
割り込み
用途
端子出力制御動作モード
動作クロックPWM 周期PWM 出力設定
TRGC から TRGA への転送タイミング
デューティ値の更新タイミング
割り込み

R20AN0291JJ0101
2016.10.01

Rev.1.01

内容
音声データのサンプリング周期生成
なし
通常動作
25MHz
音声のサンプリング周波数(≒11.025kHz)TGRA レジスタとのコンペアマッチを周期とする
使用する
PWM 機能あり(TIOC4A)
PWM モード 1
TGRA レジスタと TGRC レジスタはバッファ動作
25MHz
100kHz(チャネル 1 より短い周期) = PWM_SAMPLING
TRGB とのコンペアマッチを PWM 周期とする
TRGA とのコンペアマッチで"L"出力、TRGB とのコンペアマッチで"H"出力TCNT レジスタのクリア(=TRGB とのコンペアマッチ)
チャネル 1 割り込み処理で更新
使用しない

Page 17 of 24

RX ファミリ 音声録音・再生システム(独自 ADPCM コーデック) M3S-S2-Tiny モジュールを用いたサ
ンプルプログラムFirmware Integration Technology(4)[RX111 の場合]

• <利用資源>•マルチファンクションタイマパルスユニット 2(MTU2a) 2ch(MTU1,MTU3)
出力端子 1 本( MTIOC3A )表 11

PWM 出力方法

チャネル
1

3

項目
用途
端子出力制御動作モード
動作クロック周期
割り込み
用途
端子出力制御動作モード
動作クロックPWM 周期PWM 出力設定
TRGC から TRGA への転送タイミング
デューティ値の更新タイミング
割り込み

R20AN0291JJ0101
2016.10.01

Rev.1.01

内容
音声データのサンプリング周期生成
なし
通常動作
24MHz
音声のサンプリング周波数(≒11.025kHz)TGRA レジスタとのコンペアマッチを周期とする
使用する
PWM 機能あり(MTIOC3A)
PWM モード 1
TGRA レジスタと TGRC レジスタはバッファ動作
24MHz
100kHz(チャネル 1 より短い周期) = PWM_SAMPLING
TRGB とのコンペアマッチを PWM 周期とする
TRGA とのコンペアマッチで"L"出力、TRGB とのコンペアマッチで"H"出力TCNT レジスタのクリア(=TRGB とのコンペアマッチ)
チャネル 1 割り込み処理で更新
使用しない

Page 18 of 24

RX ファミリ 音声録音・再生システム(独自 ADPCM コーデック) M3S-S2-Tiny モジュールを用いたサ
ンプルプログラムFirmware Integration Technology(5)[RX65N の場合]

• <利用資源>•マルチファンクションタイマパルスユニット 3(MTU3a) 2ch(MTU1,MTU4)
出力端子 1 本( MTIOC4A )表 12

PWM 出力方法

チャネル
1

4

項目
用途
端子出力制御動作モード
動作クロック周期
割り込み
用途
端子出力制御動作モード
動作クロックPWM 周期PWM 出力設定
TRGC から TRGA への転送タイミング
デューティ値の更新タイミング
割り込み

内容
音声データのサンプリング周期生成なし
通常動作
120MHz
音声のサンプリング周波数(≒11.025kHz)TGRA レジスタとのコンペアマッチを周期とする
使用する
PWM 機能あり(MTIOC4A)
PWM モード 1
TGRA レジスタと TGRC レジスタはバッファ動作
120MHz
100kHz(チャネル 1 より短い周期) = PWM_SAMPLING
TRGB とのコンペアマッチを PWM 周期とする
TRGA とのコンペアマッチで"L"出力、TRGB とのコンペアマッチで"H"出力TCNT レジスタのクリア(=TRGB とのコンペアマッチ)
チャネル 1 割り込み処理で更新
使用しない<制限事項>
CPU ボードで RX65N のサンプルプログラムの D/A 出力の動作を確認する場合は、CPU ボードの 0Ω抵
抗の実装を変更する必要があります。

表 13 実装変更
抵抗

信号名
P03 信号切替
D/A 出力の動作確認時の実装
デフォルト実装

R20AN0291JJ0101
2016.10.01

Rev.1.01

DA0
LED0

R192
実装する
実装しない

R306
実装しない
実装する

Page 19 of 24

RX ファミリ 音声録音・再生システム(独自 ADPCM コーデック) M3S-S2-Tiny モジュールを用いたサ
ンプルプログラムFirmware Integration Technology

3.5
3.5.1

SW1 押下による音声録音プログラム
概要

ユーザが SW1 を押下すると、音声を記録します。音声は AD コンバータを使用して記録します。
R_encode_main 関数により、エンコーダを初期化し、タイマをスタートします。その後、タイマ割り込みによって 125μs ごとに入力信号からサンプリングします(サンプリング周波数 8kHz)。入力データは
ADPCM 変換のために S2 ライブラリ関数に渡され、エンコードされた ADPCM データは RAM に格納されます。エンコードは ADPCM データが MAX_DATA_LENGTH に達するまで行います。
ADPCM データのサイズは以下のマクロで定義されます。
ADPCM データのサイズ

3.5.2

マクロ名：MAX_DATA_LENGTH

フローmain()

タイマ割り込み

タイマ・
ADC の初期化
while(1)AD 変換を開始
SW1 が押されるまで待つ

AD 変換完了割り込

AD 変換結果を入力データバッ
ファに格納

エンコードのための
変数初期化
タイマ起動

ADPCM 変換要求フラグを有効にする

ADPCM 変換要求フラグが有効になるまで待つ
入力データを ADPCM に変換してエンコードデー
タバッファに格納するエンコードデータバッ
ファが満杯になるまで続ける

図 3 フロー

R20AN0291JJ0101
2016.10.01

Rev.1.01

Page 20 of 24

RX ファミリ 音声録音・再生システム(独自 ADPCM コーデック) M3S-S2-Tiny モジュールを用いたサ
ンプルプログラムFirmware Integration Technology

3.5.3
関数リスト
表 14 関数リスト
関数名

No.
1
1.1
1.3

main
R_StartSelectR_encode_main

1.3.1

R_adpcm_initEnc

1.3.2
1.3.3
1.3.4
1.3.5

encode_ad_converter_init
encode_interval_timer_init
encode_interval_timer_start
R_convert_to_ADPCM

1.3.5.1

R_adpcm_refreshEnc

1.3.5.2

R_adpcm_encode

1.3.6
1.3.7
1.3.8
1.3.9
3

encode_interval_timer_stop
encode_ad_converter_stop
encode_interval_timer_sleep
encode_ad_converter_sleep
R_interrupt_encode_timer(※)

3.1
4

概要
メイン関数です。
スイッチの入力を判定します。
入力音声データを ADPCM データにエンコードします。
ADPCM データは RAM に蓄積されます。
エンコードするための作業領域を初期化します。
- ライブラリ関数です。
AD コンバータの初期設定を行います。
音声録音用のタイマの初期設定を行います。
音声録音用のタイマを開始します。
ライブラリ関数を呼び出して PCM データを ADPCM データに変換します。
入力 PCM データバッファアドレスと出力 ADPCM データバッ
ファアドレスを更新します。
- ライブラリ関数です。
16 ビット PCM データを 4 ビット ADPCM データにエンコードします。
- ライブラリ関数です。
音声録音用のタイマを停止します。
AD 変換動作を停止します。
音声録音用のタイマをモジュールストップ状態にします。
AD コンバータをスリープ状態にします。
タイマ割り込みです。サンプリング周波数のサイクルごとに音声信号をサンプリングします。
AD 変換を開始します。
AD 変換完了割り込みです。音声信号をサンプリングします。

encode_ad_converter_start
R_interrupt_encode_ad_convert(※) 本サンプルでは AD 変換はタイマ機能から自動で開始するように設定しています。タイマの割り込み設
定はしていませんので本関数は実行されません。

R20AN0291JJ0101
2016.10.01

Rev.1.01

Page 21 of 24

RX ファミリ 音声録音・再生システム(独自 ADPCM コーデック) M3S-S2-Tiny モジュールを用いたサ
ンプルプログラムFirmware Integration Technology

3.5.4

関数チャート1

main
1.1

R_StartSelect
1.3

R_encode_main
1.3.1

R_adpcm_initEnc
1.3.2

encode_ad_convert
er_init
1.3.3

encode_interval_ti
mer_init
1.3.4

encode_interval_ti
mer_start
3.

R_interrupt_encod
e_timer
3.1

encode_ad_convert
er_start

1.3.5

R_convert_to_
ADPCM
1.3.6

encode_interval_ti
mer_stop4.

1.3.5.1

R_adpcm_refreshEnc
1.3.5.2

R_adpcm_encode

1.3.7

R_interrupt_encod
e_ad_convert

encode_ad_convert
er_stop
1.3.8

encode_interval_ti
mer_sleep
1.3.9

encode_ad_convert
er_sleep

図 4 関数チャート

R20AN0291JJ0101
2016.10.01

Rev.1.01

Page 22 of 24

RX ファミリ 音声録音・再生システム(独自 ADPCM コーデック) M3S-S2-Tiny モジュールを用いたサ
ンプルプログラムFirmware Integration Technology

ADPCM データ取得手順

3.5.5

このセクションでは、サンプルプログラムの ADPCM データ取得手順について説明します。サンプルプロ
グラムによってエンコードされた ADPCM データは以下の手順により取得することができます。
(1) ADPCM データのアップロード
エンコードデータアレイ変数 g_EncodedData の内容は、統合開発環境のメモリウィンドウに表示することができます。このエンコードデータアレイ全体をアップロードし、バイナリファイルとして保存します。
アップロード手順については、統合開発環境のマニュアルを参照してください。
(2) wav ファイルへの変換"ADPCM_TOOL(ADPCM.exe)"を使用して ADPCM データ(バイナリ形式)から Wave ファイル(.wav)を作成します。使用方法については、ツール"ADPCM_TOOL"のマニュアルを参照してください。

サンプルプログラムの変更

3.5.6

・MAX_DATA_LENGTH
マクロ"MAX_DATA_LENGTH"の値は、サンプルプログラムの r_s2_driver.h ファイルに定義しています。
この値は、エンコードされた ADPCM データを格納するために使用可能な RAM のサイズに従って設定しな
ければなりません。ADPCM データを格納するために使用可能なサイズが大きくなるほど、エンコード可能な音声サンプルの長さが長くなります。
［たとえば、ADPCM データを格納するために使用可能なサイズが 1500 バイトである場合は、設定は次のようになります。］#define MAX_DATA_LENGTH (1500u)/* Max. size of ADPCM encoded data */ADPCM データの検証

3.5.7

ADPCM_TOOL を使用して、アップロードした ADPCM ファイルから生成した Wave ファイルが入力ファ
イルと性質が類似することを検証することができます。

4.

ソフトウェア更新履歴

表 15 更新履歴
本書 version
1.01

S2 ライブラリ version
3.04

変更点
S2 ライブラリを更新
RX65N RSK サンプルプログラム追加

1.00

R20AN0291JJ0101
2016.10.01

3.01

Rev.1.01

FIT モジュール化対応
RX64M RSK、RX111 RSK サンプルプログラム追加

Page 23 of 24

RX ファミリ 音声録音・再生システム(独自 ADPCM コーデック) M3S-S2-Tiny モジュールを用いたサ
ンプルプログラムFirmware Integration Technology

ホームページとサポート窓口
ルネサス エレクトロニクスホームページ
http://japan.renesas.com/
お問合せ先
http://japan.renesas.com/contact/

すべての商標および登録商標は，それぞれの所有者に帰属します。

R20AN0291JJ0101
2016.10.01

Rev.1.01

Page 24 of 24

改訂記録
Rev.
1.01
1.00

発行日
2016.10.01
2014.07.01

ページ
―
―

改訂内容
ポイント
サンプルプログラム更新
初版発行

製品ご使用上の注意事項
ここでは、マイコン製品全体に適用する「使用上の注意事項」について説明します。個別の使用上の注意
事項については、本ドキュメントおよびテクニカルアップデートを参照してください。
1.

未使用端子の処理【注意】未使用端子は、本文の「未使用端子の処理」に従って処理してください。
CMOS製品の入力端子のインピーダンスは、一般に、ハイインピーダンスとなっています。未使用端子を開放状態で動作させると、誘導現象により、LSI周辺のノイズが印加され、LSI内部で貫通電流が流れたり、入力信号と認識されて誤動作を起こす恐れがあります。未使用端子は、本文「未使用端子の処理」で説明する指示に従い処理してください。

2.

電源投入時の処置【注意】電源投入時は，製品の状態は不定です。
電源投入時には、LSIの内部回路の状態は不確定であり、レジスタの設定や各端子の状態は不定です。
外部リセット端子でリセットする製品の場合、電源投入からリセットが有効になるまでの期間、端子の状態は保証できません。
同様に、内蔵パワーオンリセット機能を使用してリセットする製品の場合、電源投入からリセットのかかる一定電圧に達するまでの期間、端子の状態は保証できません。

3.

リザーブアドレス（予約領域）のアクセス禁止【注意】リザーブアドレス（予約領域）のアクセスを禁止します。
アドレス領域には、将来の機能拡張用に割り付けられているリザーブアドレス（予約領域）があります。これらのアドレスをアクセスしたときの動作については、保証できませんので、アクセスしないようにしてください。

4.

クロックについて【注意】リセット時は、クロックが安定した後、リセットを解除してください。
プログラム実行中のクロック切り替え時は、切り替え先クロックが安定した後に切り替えてください。
リセット時、外部発振子（または外部発振回路）を用いたクロックで動作を開始するシステムでは、クロックが十分安定した後、リセットを解除してください。また、プログラムの途中で外部発振子（または外部発振回路）を用いたクロックに切り替える場合は、切り替え先のクロックが十分安定してから切り替えてください。

5.

製品間の相違について【注意】型名の異なる製品に変更する場合は、製品型名ごとにシステム評価試験を実施してください。
同じグループのマイコンでも型名が違うと、内部ROM、レイアウトパターンの相違などにより、電気的特性の範囲で、特性値、動作マージン、ノイズ耐量、ノイズ輻射量などが異なる場合があります。型名が違う製品に変更する場合は、個々の製品ごとにシステム評価試験を実施してください。

ご注意書き1. 本資料に記載された回路、ソフトウェアおよびこれらに関連する情報は、半導体製品の動作例、応用例を説明するものです。お客様の機器・システムの設計において、回路、ソフトウェアおよびこれらに関連する情報を使用する場合には、お客様の責任において行ってください。これらの使用に起因して、お客様または第三者に生じた損害に関し、当社は、一切その責任を負いません。
2. 本資料に記載されている情報は、正確を期すため慎重に作成したものですが、誤りがないことを保証するものではありません。万一、本資料に記載されている情報の誤りに起因する損害がお客様に生じた場合においても、当社は、一切その責任を負いません。
3. 本資料に記載された製品デ－タ、図、表、プログラム、アルゴリズム、応用回路例等の情報の使用に起因して発生した第三者の特許権、著作権その他の知的財産権に対する侵害に関し、当社は、何らの責任を負うものではありません。当社は、本資料に基づき当社または第三者の特許権、著作権その他の知的財産権を何ら許諾するものではありません。
4. 当社製品を改造、改変、複製等しないでください。かかる改造、改変、複製等により生じた損害に関し、当社は、一切その責任を負いません。
5. 当社は、当社製品の品質水準を「標準水準」および「高品質水準」に分類しており、各品質水準は、以下に示す用途に製品が使用されることを意図しております。
標準水準：

コンピュータ、OA機器、通信機器、計測機器、AV機器、家電、工作機械、パーソナル機器、産業用ロボット等

高品質水準：輸送機器（自動車、電車、船舶等）、交通用信号機器、
防災・防犯装置、各種安全装置等
当社製品は、直接生命・身体に危害を及ぼす可能性のある機器・システム（生命維持装置、人体に埋め込み使用するもの等） 、もしくは多大な物的損害を発生させるおそれのある機器・システム（原子力制御システム、軍事機器等）に使用されることを意図しておらず、使用することはできません。 たとえ、意図しない用
途に当社製品を使用したことによりお客様または第三者に損害が生じても、当社は一切その責任を負いません。 なお、ご不明点がある場合は、当社営業にお問い合わせください。
6. 当社製品をご使用の際は、当社が指定する最大定格、動作電源電圧範囲、放熱特性、実装条件その他の保証範囲内でご使用ください。当社保証範囲を超えて当社製品をご使用された場合の故障および事故につきましては、当社は、一切その責任を負いません。
7. 当社は、当社製品の品質および信頼性の向上に努めていますが、半導体製品はある確率で故障が発生したり、使用条件によっては誤動作したりする場合があります。また、当社製品は耐放射線設計については行っておりません。当社製品の故障または誤動作が生じた場合も、人身事故、火災事故、社会的損害等を生じさせないよう、お客様の責任において、冗長設計、延焼対策設計、誤動作防止設計等の安全設計およびエージング処理等、お客様の機器・システムとしての出荷保証を行ってください。特に、マイコンソフトウェアは、単独での検証は困難なため、お客様の機器・システムとしての安全検証をお客様の責任で行ってください。
8. 当社製品の環境適合性等の詳細につきましては、製品個別に必ず当社営業窓口までお問合せください。ご使用に際しては、特定の物質の含有・使用を規制する
RoHS指令等、適用される環境関連法令を十分調査のうえ、かかる法令に適合するようご使用ください。お客様がかかる法令を遵守しないことにより生じた損害に関して、当社は、一切その責任を負いません。
9. 本資料に記載されている当社製品および技術を国内外の法令および規則により製造・使用・販売を禁止されている機器・システムに使用することはできません。また、当社製品および技術を大量破壊兵器の開発等の目的、軍事利用の目的その他軍事用途に使用しないでください。当社製品または技術を輸出する場合は、「外国為替及び外国貿易法」その他輸出関連法令を遵守し、かかる法令の定めるところにより必要な手続を行ってください。
10. お客様の転売等により、本ご注意書き記載の諸条件に抵触して当社製品が使用され、その使用から損害が生じた場合、当社は何らの責任も負わず、お客様にてご負担して頂きますのでご了承ください。
11. 本資料の全部または一部を当社の文書による事前の承諾を得ることなく転載または複製することを禁じます。
注1. 本資料において使用されている「当社」とは、ルネサス エレクトロニクス株式会社およびルネサス エレクトロニクス株式会社がその総株主の議決権の過半数を直接または間接に保有する会社をいいます。
注2. 本資料において使用されている「当社製品」とは、注１において定義された当社の開発、製造製品をいいます。

http://www.renesas.com■営業お問合せ窓口※営業お問合せ窓口の住所は変更になることがあります。最新情報につきましては、弊社ホームページをご覧ください。

ルネサス エレクトロニクス株式会社 〒135-0061 東京都江東区豊洲3-2-24（豊洲フォレシア）■技術的なお問合せおよび資料のご請求は下記へどうぞ。
総合お問合せ窓口：http://japan.renesas.com/contact/© 2016 Renesas Electronics Corporation. All rights reserved.
Colophon 4.0