00000-A
ルネサス半導体トレーニングセンター
Rev. 1.00
ルネサス
エレクトロニクス株式会社
© 2013 Renesas Electronics Corporation. All rights reserved.
2013/08/02
RX62N 周辺機能紹介 DAC
© 2013 Renesas Electronics Corporation. All rights reserved.
コンテンツ
DACの概要
データフォーマット
変換開始と変換時間
転送時間
プログラムサンプル
2
© 2013 Renesas Electronics Corporation. All rights reserved.
DACの概要
© 2013 Renesas Electronics Corporation. All rights reserved.
機能概要
項目
内容
分解能
10ビット
出力チャネル
2チャネル
消費電力低減機能
モジュールストップ状態への設定が可能
4
© 2013 Renesas Electronics Corporation. All rights reserved.
ブロック図
モジュールデータバス
内部データバス
D
A
D
R
0
バ
ス
イ
ン
タ
フ
ェ
D
A
D
R
1
10ビット
D/A
コントロール回路
DADR0
:D/Aデータレジスタ0
DADR1
:D/Aデータレジスタ1
DACR
:D/Aコントロールレジスタ
DADPR :DADRmフォーマット選択レジスタ
D
A
C
R
D
A
D
P
R
AVCC
AVSS
DA1
DA0
VREFH
VREFL
A/Dコンバータと兼用
D/Aコンバータの基準電圧端子
D/Aコンバータの基準グランド端子
アナログ基準電源(0V)に接続
D/Aコンバー出力
5
© 2013 Renesas Electronics Corporation. All rights reserved.
データフォーマット
© 2013 Renesas Electronics Corporation. All rights reserved.
D/Aデータレジスタ0/1(DADR0/1)
2種類のフォーマット
b4 b15 b14 b13 b12 b11 b10 b9 b8 b7 b6 b5 b3 b2 b1 b0 - - - - - - - - - - - - ・ DADPR.DPSELビット=“0”(データはLSB詰め) リセット後の値 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 リセット後の値 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ・ DADPR.DPSELビット=“1”(データはMSB詰め) b4 b15 b14 b13 b12 b11 b10 b9 b8 b7 b6 b5 b3 b2 b1 b07
© 2013 Renesas Electronics Corporation. All rights reserved.
DADRm フォーマット選択レジスタ(DADPR)
データフォーマットの設定
b7 b6 b5 b4 b3 b2 b1 b0 リセット後の値 0 0 0 0 0 0 0 0 DPSEL - - - - - - - アドレス 0008 80C5hビット
シンボル
ビット名
機能
R/W
b6-b0
-
予約ビット
読むと“0”が読めます。書く場合は、“0”としてください。
R/W
b7
DPSEL
DADRmフォーマット選択ビット 0:D/AデータレジスタはLSB詰め
1:D/AデータレジスタはMSB詰め
R/W
© 2013 Renesas Electronics Corporation. All rights reserved.
変換開始と変換時間
© 2013 Renesas Electronics Corporation. All rights reserved.
変換時間の概要
DADR0へ
書き込み
DACRへ
書き込み
DADR0
DACR.DAOE0
DA0
ハイインピーダンス状態
変換データ(1)
tDCONV:D/A変換時間
tDCONV
変換結果(2)
DACRへ
書き込み
変換データ(2)
変換結果(1)
tDCONV
DADR0へ
書き込み
10
© 2013 Renesas Electronics Corporation. All rights reserved.
変換時間特性
40.6 D/A変換特性
表40.22 D/A変換特性
条件:VCC = PLLVCC = AVCC = VCC_USB = 2.7~3.6V、VREFH = 2.7V~AVCC
VSS = PLLVSS = AVSS = VREFL = VSS_USB = 0V
Ta = -40~+ 85℃
11
項目
min
typ
max
単位
測定条件
分解能
10
10
10
ビット
変換時間
-
-
3.0
μs
負荷容量 20pF
絶対精度
-
± 2.0
± 4.0
LSB
負荷抵抗 2MΩ
-
-
± 3.0
LSB
負荷抵抗 4MΩ
-
-
± 2.0
LSB
負荷抵抗 10MΩ
RO 出力抵抗
-
3.6
-
kΩ
© 2013 Renesas Electronics Corporation. All rights reserved.
出力の制御レジスタ
b7 b6 b5 b4 b3 b2 b1 b0
リセット後の値 0 0 0 1 1 1 1 1 DAOE1 DAOE0 DAE - - - - - アドレス 0008 80C4h
D/A コントロールレジスタ(DACR)
b5 b7 b6
説 明
DAE DAOE1 DAOE0
0 0 0 D/A 変換を禁止 1 チャネル 0 の D/A 変換を許可、チャネル 1 の D/A 変換を禁止 チャネル 0 のアナログ出力(DA0)を許可、チャネル 1 のアナログ出力(DA1)を禁止 1 0 チャネル 0 の D/A 変換を禁止、チャネル 1 の D/A 変換を許可 チャネル 0 のアナログ出力(DA0)を禁止、チャネル 1 のアナログ出力(DA1)を許可 1 チャネル 0、1 の D/A 変換を許可 チャネル 0、1 のアナログ出力(DA0、DA1)を許可 1 0 0 チャネル 0、1 の D/A 変換を許可 チャネル 0、1 のアナログ出力(DA0、DA1)を禁止 1 チャネル 0、1 の D/A 変換を許可 チャネル 0 のアナログ出力(DA0)を許可、チャネル 1 のアナログ出力(DA1)を禁止 1 0 チャネル 0、1 の D/A 変換を許可 チャネル 0 のアナログ出力(DA0)を禁止、チャネル 1 のアナログ出力(DA1)を許可 1 チャネル 0、1 の D/A 変換を許可 チャネル 0、1 のアナログ出力(DA0、DA1)を許可
12
© 2013 Renesas Electronics Corporation. All rights reserved.
兼用端子の設定
ポート モジュール名 出力信号名 ポートファンクション レジスタの設定 各周辺モジュールの設定
P00 SCI6 TxD6-A PFFSCI.SCI6S = 0 SCI6.SCR.TE = 1 PORT0 P00 PORT0.DDR.B0 = 1
P01 PORT0 P01 PORT0.DDR.B1 = 1
P02 SCI6 SCK6-A PFFSCI.SCI6S = 0 SCI6.SCMR.SMIF = 1 のとき:
SMR.GM = 0, SCR.CKE[1:0] = 01 か SMR.GM = 1 SCI6.SCMR.SMIF = 0 のとき: SMR.CM = 0, SCR.CKE[1:0] = 01 か SMR.CM = 1, SCR.CKE[1] = 0 PORT0 P02 PORT0.DDR.B2 = 1 P03 DA DA0 DACR.DAOE0 = 1 PORT0 P03 PORT0.DDR.B3 = 1 P05 DA DA1 DACR.DAOE1 = 1 PORT0 P05 PORT0.DDR.B5 = 1
13
© 2013 Renesas Electronics Corporation. All rights reserved.
変換精度と外部回路
© 2013 Renesas Electronics Corporation. All rights reserved.
変換精度と負荷抵抗
40.6 D/A変換特性
表40.22 D/A変換特性
条件:VCC = PLLVCC = AVCC = VCC_USB = 2.7~3.6V、VREFH = 2.7V~AVCC
VSS = PLLVSS = AVSS = VREFL = VSS_USB = 0V
Ta = -40~+ 85℃
15
項目
min
typ
max
単位
測定条件
分解能
10
10
10
ビット
変換時間
-
-
3.0
μs
負荷容量 20pF
絶対精度
-
± 2.0
± 4.0
LSB
負荷抵抗 2MΩ
-
-
± 3.0
LSB
負荷抵抗 4MΩ
-
-
± 2.0
LSB
負荷抵抗 10MΩ
RO 出力抵抗
-
3.6
-
kΩ
© 2013 Renesas Electronics Corporation. All rights reserved.
D/A変換出力
(DA0,DA1端子)
RX62N
+
-
オペアンプ
外部回路例
16
© 2013 Renesas Electronics Corporation. All rights reserved.
プログラムサンプル
© 2013 Renesas Electronics Corporation. All rights reserved.
サンプル仕様
動作概要
DA1端子から100Hz、振幅0-3.3Vの正弦波を出力する。
プログラム構造
main関数
周辺機能レジスタを初期化後、CPUはスタンバイモードへ遷移。
CMI0割り込
み
D/A変換データを更新。D/A変換データは360度分の正弦波
データ。360度を繰り返し、連続した100Hzの正弦波を出力。
D/Aコンバータ
動作モード
DA1端子を利用。
CMT0
動作モード
36KHzのインターバルタイマに設定。
18
© 2013 Renesas Electronics Corporation. All rights reserved.
フローチャート
init_DAC
DAC
初期化
setpsw_i(組み込み関数)
割り込み許可
wait(組み込み関数)
割り込み要求待ち、低消費電
力モードへ遷移
※CPU内部レジスタ、クロック
レート、およびメモリ内の静的
変数領域はスタートアップ・
ルーチン内で初期化されます。
start_CMT0
CMT0
カウントスタート
init_CMT0
CMT0
初期化
DACに変換データを書き込む
リセット・スタート
スタートアップルーチン
main
RTE
CMT0割り込み関数
(Excep_CMTU0_CMT0)
start_DAC
DA1
出力スタート
角度を1度増やす更新
360度なら0度に戻す
19
© 2013 Renesas Electronics Corporation. All rights reserved.
/*****************************************************************************/ /* Functionprototypedeclaration */
/*****************************************************************************/ voidmain(void); //mainfunction
voidinit_DAC(void); //InitializeforDAC
voidinit_CMT0(void); //Initializefortimer(CMT) voidstart_CMT0(void); //CMT0countstart voidstart_DAC(void); //D-Aconvertstart
/*****************************************************************************/ /* Globalvariabledefinition */
/*****************************************************************************/ conststaticuint16_tsin_10bitDA[DEGREE]={
512, 520, 529, 538, 547, 556, 565, 574, 583, 592, 600, 609, 618, 627, 635, 644, 652, 661, 670, 678, 686, 695, 703, 711, 720, 728, 736, 744, 752, 759, 767, 775, 783, 790, 798, 805, 812, 819, 826, 833, 840, 847, 854, 860, 867, 873, 879, 886, 892, 898, 903, 909, 915, 920, 925, 930, 936, 940, 945, 950, 954, 959, 963, 967, 971, 975, 979, 982, 986, 989, 992, 995, 998, 1001, 1003, 1006, 1008, 1010, 1012, 1014, 1015, 1017, 1018, 1019, 1020, 1021, 1022, 1022, 1023, 1023, 1023, 1023, 1023, 1022, 1022, 1021, 1020, 1019, 1018, 1017, 1015, 1014, 1012, 1010, 1008, 1006, 1003, 1001, 998, 995, ;;;; 423, 431, 440, 449, 458, 467, 476, 485, 494, 503 };
出力データ
20
© 2013 Renesas Electronics Corporation. All rights reserved.
DACの初期化
/*****************************************************************************/ /* Outline : Main */
/* Description : Hardware setting and CPU sleep */ /*****************************************************************************/ void main(void)
{
init_CMT0(); // Initialize for timer (CMT) init_DAC(); // Initialize for DAC
start_CMT0(); // CMT0 count start start_DAC(); // D-A convert start setpsw_i(); // Interrupt enable (CPU) while(1){
wait(); // CPU sleep }
}
/*****************************************************************************/ /* Outline : initialize */ /* Description : Initialize for DAC */ /*****************************************************************************/ void init_DAC(void){
MSTP(DA) = 0; // Wakeup DAC }
/*****************************************************************************/ /* Outline : D-A convert start */ /* Description : D-A convert start */ /*****************************************************************************/ void start_DAC(void){
DA.DACR.BIT.DAOE1 = 1; // DA1 output is enable }
© 2013 Renesas Electronics Corporation. All rights reserved.
割り込み処理
/*****************************************************************************/
/* Outline : CMT0 compare match interrupt */
/* Description : Next convert data set */
/*****************************************************************************/
void Excep_CMTU0_CMT0(void){
static uint16_t angle;
DA.DADR1 = sin_10bitDA[angle];
// Convert data set
angle++;
// angle increase (until 359)
if(angle >= DEGREE){
angle %= DEGREE;
// angle reset (360 -> 0)
}
}
© 2013 Renesas Electronics Corporation. All rights reserved.
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
= 0;
// CKS is PCLK/8
CMT0.CMCR.BIT.CMIE
= 1;
// CMIE is enable
CMT0.CMCOR
= 166;
// CMCOR is 3μs count
IEN(CMT0,CMI0)
= 1;
// CMI0 enable
IPR(CMT0,CMI0)
= 1;
// CMI0 interrupt level is 1
}
/*****************************************************************************/
/* Outline : CMT0 start */
/* Description : CMT0 count start. */
/*****************************************************************************/
void start_CMT0(void){
CMT.CMSTR0.BIT.STR0
= 1;
// Start CMT0
}
ルネサス
エレクトロニクス株式会社
© 2013 Renesas Electronics Corporation. All rights reserved.