STM32G4 – D/Aコンバータ
D/Aコンバータ
1.0版

STM32G4 D/Aコンバータのプレゼンテーションにようこそ。
このブロックは、デジタル信号を外部とのインタフェースが可能なアナログ電圧に変換する場合や、コンパレータやオペアンプなどのオンチップペリフェラルとの間に接続するために使用されます。

1

概要

VREF+ VDDA

1212ビット
D/Aコンバータ

2• デジタル･データをアナログ出力電圧に変換
バッファ

DAC_OUT1• 8ビットまたは12ビットモード• 4個のD/Aコンバータモジュール、最大2チャネル埋め込み• 低電力のサンプル&ホールド･モード

dac_out1

1212ビット
D/Aコンバータ

バッファ

DAC_OUT2

アプリケーション側の利点
•

D/A
コンバータ
（2チャンネル）

dac_out2•

オンチップD/Aコンバータは、ポテンショメータに代わって外部バイアス回路を制御可能
また、音声および任意の信号ジェネレータとしても機能可能

STM32G4 D/Aコンバータは、8ビットまたは12ビットのデジタル・データをアナログ電圧に変換します。
各D/Aコンバータモジュールには、同期または非同期で動作する2つのコンバータがあります。
低電力のサンプルおよびホールドモードも統合されています。
D/Aコンバータは外部ポテンショメータまたはバイアス回路とインタフェース可能です。
また、音声や任意の信号を作成することができます。

2

主な機能

3

• 8ビットまたは12ビットモード• D/Aコンバータ出力チャネル･バッファリングまたはバッファなし• 低電力アプリケーションのサンプルおよびホールドモード• 同期更新機能• DMA機能• ノイズ波、三角波、ノコギリ波の生成• 複数のトリガ･システム

STM32G4マイクロコントローラ内のD/Aコンバータは、8ビットまたは12ビットモードでシンプルなデジタル/アナログ変換を実現します。
D/Aコンバータ出力にはローインピーダンスバッファがあり、外部負荷を駆動します。
サンプルおよびホールドモードを使用すれば、消費電力を大幅に削減できます。
2個のD/Aコンバータは互いに同期することもできます
入力データはDMAで転送できます。
また、ノイズ、三角形、ノコギリ波形を生成する小さなロジックを持っています。
D/Aコンバータ出力データは、ソフトウェア要求、タイマ、HRTIM、およびEXTIに基づいて、複雑なトリガシステムによって更新されます。

3

追加された機能

4• VREF+ピンは基準電圧として使用• 内部VREFBUF出力によって駆動することが可能:2.048V、2.5V、2.9V• またはVREF+ピンに外部リファレンスを接続可能• バッファ･キャリブレーション• オフセット･キャリブレーションのみ• 工場出荷時にD/Aコンバータをリセット• ユーザトリミング

VREF+は正の電圧基準として使用されます。
入力リファレンスピン、VREF+（他のアナログペリフェラルと共有）は、より良い分解能のために利用可能です。
内部リファレンス電圧バッファは、同じパッド上でリファレンス電圧を生成できます。
出力バッファの電圧オフセットは調整されます。
このキャリブレーションは、出荷工場でリセット後にロードされます。
ユーザキャリブレーションは、動作条件が工場での較正条件と異なる場合、特にVDD/VDDA電圧、温度、VREF+値が変化し、ソフトウェアによるアプリケーション中の任意のタイミングで行うことができます。

4

ブロック図
AHBインタフェースdac_hclk
DMAリクエスト
IRQリクエスト

コントロールロジック

ノイズ/トライアング
ル/ノコギリ波生成
データ保持
レジスタ1

ch1_trig0
ch1_trig1

オフセット校正

12ビット
トリガ

ch1_trig15
lsi_ck、lse_ck

データ出力
レジスタ1

12ビット
D/Aコン
バータ1

バッファ

dac_out1

データ保持
レジスタ2

ch1_trig15

ビット
1212b

オフセット校正

12ビット
トリガ

DAC_OUT1

通常モード
サンプル&ホールド･モード

ノイズ/トライアング
ル/ノコギリ波生成

ch1_trig0
ch1_trig1

5

データ出力
レジスタ2

ビット
1212b

12ビット
D/Aコン
バータ2

バッファ

VDDA
VREF+

DAC_OUT2

通常モード
サンプル&ホールド･モード

dac_out2

ここでは、D/Aコンバータの簡略化されたブロック図を見ることができます。
このD/AコンバータブロックはVDDAによって供給され、電圧リファレンスとしてVREF+を使用します。
D/Aコンバータは、AHBスレーブでデータホールドレジスタを満たすためにDMAリクエストをサポートします。
DAC_OUTx信号のどちらも、通常のGPIOとして使用可能な出力ピンから切り離すことができます。
DAC_OUTx信号は、内部ピンを使用して、コンパレータやオペアンプなどのオンチップペリフェラルに接続できます。
D/Aコンバータ出力チャネルは、バッファまたはバッファ無しにできます。
サンプルおよびホールドブロックはLSI（低速内蔵発振器）またはLSE（低速外部発振器）クロックソースを使用し、静的変換のSTOPモードで動作します。
データホールドレジスタの内容は、トリガ条件が検出されると対応するデータ出力レジスタに転送されます。それにはソフトウェアトリガも含まれます。
次に、データ出力レジスタの内容がコンバータに転送されます。
出力バッファには、電圧オフセットを校正するメカニズムがあります。

5

D/Aコンバータ･チャネル構成
D/Aコンバータの機能
最大サンプリング時間

DAC1

DAC2

1メガサンプル/秒

DAC3

6

DAC4

15メガサンプル/秒

出力バッファxx

チャンネル数

2（外部）

1（外部）

2（内部）

IOとの接続

CH1はPA4CH2はPA5

CH1はPA6

GPIOへの接続なし

2（内部）• D/Aコンバータの速度:• 15MHz:• 内部チャネルのみ（DAC3_OUTx、DAC4_OUTx）• バッファなしモードのみ• 1MHz:• 3つの外部チャネル（DAC1_OUTx、DAC2_OUT1）• バッファ/非バッファモード

STM32G4は4つのD/Aコンバータユニットを内蔵しています。
DAC1、3、4は2つのチャンネルをサポートし、DAC2は1つのチャンネルのみをサポートします。
DAC1とDAC2はGPIOに出力できますが、DAC3とDAC4にはCOMPおよびOPAMPユニットに接続できる内部チャネルのみが含まれています。
その結果、DAC3とDAC4は出力バッファを実装しません。
出力バッファは、DAC1およびDAC2のオプションです。
DAC1とDAC2の最大速度は1秒あたり1メガサンプルで、DAC3とDAC4の最大速度は1秒あたり15メガサンプルです。

6

D/Aコンバータ内部出力

7• D/Aコンバータ出力は内部信号のみ:• D/Aコンバータ出力チャンネルはDAC_OUTx出力ピンから切り離し、オンチップ･ペリフェラルに接続可能• 対応するDAC_OUTxピンは別の目的に使用することが出来る

コンパレータINM入力としてD/Aコンバータ出力の使用（COMP1-7）
コンパレータ用基準電圧（DC、波形生成）

COMPx_INP I/Os

COMPx_INM I/Os
DACx_OUTy
DACx_OUTy
VREFINT¾ VREFINT½ VREFINT¼ VREFINTCOMPx_INP+COMPx_INM-

D/Aコンバータの出力をOPAMP VINP入力として使用（OPAMP1-6 OPAMP2を除く）
内部D/Aコンバータ･チャネルを使用する方法（OPAMPx_VOUT）

VINP0
VINP1
VINP2
VINP2もしくはDACx_CHy
INM0
INM1+-DAC_OUTxは、コンパレータやオペアンプなどの内蔵ペリフェラルに内部でピン接続可能です。
DAC1とDAC2に関しては、対応するDAC_OUTxのGPIOを別の目的に使用することができます。
内部D/Aコンパレータ出力をCOMP INM入力に接続すると、コンパレータの基準電圧が定義されます。
内部へのD/Aコンバータ出力をOPAMP VINP入力に接続すると、OPAMP DCポイントをバイアスしたり、アナログ電圧を増幅できます。
また、DAC3やDAC4に役立つ、内部D/Aコンバータチャネルをピン留めする方法でもあります。

7

D/Aコンバータ･データフォーマット

8

柔軟なデータ入力形式• 8ビットモード:• 右詰めデータ入力（16ビットデータレジスタ）D7 D6 D5 D4 D3 D2 D1 D0• 12ビットモード:• 右詰めデータ入力（16ビットデータレジスタ）• 左詰めデータ入力（16ビットデータレジスタ）

D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0

D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0

D/Aコンバータは、さまざまな入力形式をサポートできます。
8ビットモードでは、右詰めの8ビットデータ形式です。
また、符号なし、符号つきデータ形式も受け付けます。

8

D/Aコンバータ･データフォーマット

9デュアルチャネルモード• 8ビットモード:• デュアルチャネルモード用
8ビット+8ビットデータ入力• 12ビットモード:• 12ビット+12ビットデュアルチャネルモード用
右詰めデータ入力• デュアル･チャネル･モード用
12ビット+12ビット左詰めデータ入力

3123157CH2312315CH23123CH20CH170CH11570CH1

デュアルチャネルモードでは、2つのD/Aコンバータに入力データを提供するため、8ビット+8ビットのデータ形式です。
12ビット+12ビットでは、入力データに右詰めまたは左詰めモードを使用できます。
これらのレジスタに保持されているデータは、関連するコンバータに同期して（例えば、ステレオオーディオの場合）、または非同期で転送されます。
つまり、2つのチャネルは独立して動作できます。

9

D/Aコンバータ変換トリガ

10

D/Aコンバータを起動するためのトリガ• 変換を開始• データ保留レジスタに自動的に書込み（ソフトウェア･トリガ）• DAC_DHRxレジスタからDAC_DORxレジスタへは、AHB1クロックサイクルのみを使用• トリガ変換により• 7つの異なるタイマ出力• 7HRTIM出力• 外部I/Oトリガ• ソフトウェア･トリガ･ビットの設定• 下の表は、トリガとDAC_DOR更新の間の遅延を示す
HFSEL

AHB周波数関数00≤ 80MHzDAC_DOR最大3AHBクロック･サイクルの更新レート

01[80MHz、160MHz]

DAC_DOR更新レートは最大5AHBクロック･サイクル

10> 160MHz

DAC_DOR更新レートは最大7AHBクロック･サイクル

11

予約済み

D/Aコンバータ出力変換は、ソフトウェアを使用してデータ保留レジスターに書き込み、開始されます。
7つの異なるタイマ出力、7つの異なるHRTIM出力、外部I/OまたはソフトウェアがD/Aコンバータの変換をトリガすることができます。
ソフトウェアトリガを使用すると、データホールドレジスタの内容は、1AHBクロックサイクル後に対応するデータ出力レジスタに転送されます。
トリガモードでトリガが発生すると、AHBクロック周波数に応じて、データ・ホールド・レジスタの内容が、3、5、または7AHBクロック・サイクルの後に対応するデータ出力レジスタに転送されます。

10サンプルおよびホールド機能

11低電力モード• 「サンプル&ホールド」機能の主な目的は、MCUがSTOP0/1モードで低電力動作時にD/Aコンバータの出力電圧維持• LSIまたはLSEクロックは、dac_hclkクロックがゲートされている間、アクティブなまま• 「サンプル&ホールド」モードで設定すると、D/Aコンバータは関連するすべてのアナログ回路とデジタル回路がOFFになっていても変換電圧を出力することが可能• 内部または外部ホールド･コンデンサをD/Aコンバータ出力に接続可能

VOUT

サンプル&ホールド機能は、アクティブに駆動しない間でもD/Aコンバータの出力電圧を維持します。
これは、サンプル期間の終わりに電圧レベルを保持する内部または外部コンデンサに依存しています。
その後、D/Aコンバータの出力をハイインピーダンスの設定ができます。
もちろんコンデンサは時間の経過とともに放電します。そのため、更新期間が定義されています。リフレッシュ期間が終了すると、D/Aコンバータの出力は再びアクティブに駆動され、コンデンサを充電します。

11サンプルおよびホールド機能

12低電力モード• 「サンプル&ホールド」モードでのD/Aコンバータ変換は3つのフェーズで構成• サンプリング･フェーズ•

このフェーズの間に、“サンプル&ホールド”回路は希望した電圧に充電される• ホールド･フェーズ•

この間、D/Aコンバータの出力はトライステート（ハイインピーダンス）になり、「サンプル&ホールド」の蓄積された電荷を維持• リフレッシュ･フェーズ•

複数のソースからの漏れにより、出力電圧を希望の値（+/-LSb）に保つためにリフレッシュ･フェーズが必要

D/Aコンバータ（サンプル&ホールドモード）

CLOAD

VOUT

デジタル-アナログコンバータは断続的に動作し、外部または内部コンデンサを充電し、出力電圧がホールドコンデンサに保持されている間に電源を切ることができます。リフレッシュ期間の後、D/Aコンバータの電源が再びオンになり、ホールドコンデンサが再充電されます。

12サンプルおよびホールド機能

13低電力モード• 「サンプル&ホールド」機能は、極めて低い電力要件に対応• サンプル、ホールド、およびリフレッシュのタ
イミングは設定可能

dac_hclk
lsi_ckもしくはlse_ck

D/Aコンバータ（サンプル&ホールドモード）

CLOAD

Vout• このモードでは、D/Aコンバータ･コアとそれに対応するすべてのロジックおよびレジスタは、低速内蔵オシレータ･クロック（lsi_ck）または低速の外付けオシレータ･クロック（lse_ck）によって駆動される

D/Aコンバータを「サンプル&ホールド」モードで設定すると、変換された出力電圧を生成でき、アクティブ回路をオフにすることができます。
このモードでは、D/Aコンバータコアと対応するすべてのロジックとレジスタは、dac_hclkクロックに加えてLSIクロック（lsi_ck）またはLSEクロック（lse_ck）によって駆動され、STOPモードなどのディープ低電力モードでD/Aコンバータチャネルを使用できます。
リフレッシュのスケジュールを担当するロジックは、LSIクロックまたはLSEクロックのみを必要とします。
そうすることで、D/Aコンバータは非常に低いデューティサイクルの間のみアクティブになります。その結果、消費電力が非常に低くなります。
デューティサイクルプログラムは非常に柔軟に設定可能です。

13

サンプルおよびホールド機能

14

低電力モード• 「サンプル&ホールド」要素（内部または外部）• 外部に設定されている場合:外部コンデンサをD/Aコンバータの外部ピンに取り付ける必要がある• バッファは有効または無効に設定可能• D/Aコンバータ出力は内部コンポーネント（つまり内蔵コンパレータ）にルーティング可能、もしくはルーティングしない• 内蔵に設定されている場合:内蔵コンデンサが「サンプル&ホールド」要素として使用される• この構成では、D/Aコンバータの出力は内部コンポーネント（内蔵コンパレータなど）にのみルーティング• 変換フェーズのタイミング• すべての変換フェーズ･タイミングは、LSIまたはLSEクロック･ソースを参照して行われる• サンプリング、ホールド、およびリフレッシュのタイミングは設定可能

コンデンサは、外部または内部にすることができます。
外付けの場合は、バッファを使用でき、D/Aコンバータの出力を内蔵のコンパレータなどの内部コンポーネントにルーティングすることもできます。
内部にする場合、内蔵コンデンサが使用され、D/Aコンバータの出力は内部コンポーネントにのみルーティングされます。
充電時間はコンデンサ値によって異なります。
上記の3つのフェーズのタイミングは、lsi_ckまたはクロックサイク
ルlse_ck単位です。

14ノイズと三角波の生成

15波形生成• ノイズ生成• LFSR（線形フィードバックシフトレジスタ）に基づく• 計算されたノイズ値が外部トリガを使用してオーバーフローなしでデータホールド･レジスタに入力• 振幅の設定可能• 三角波生成• アップダウン･カウンタに基づいて、三角波を生成することが可能（各トリガは+/-1ステップをインクリメント）• ベースと振幅の設定可能

MAMPx[3:0]
最大振幅+DAC_DHRx

DAC_DHRx
ベース値

D/Aコンバータ デジタルインタフェースは、ノイズ、三角波、ノコギリの3つの特別な信号発生器を統合しています。
線形フィードバックシフトレジスタ（LFSR）は、D/Aコンバータ入力のノイズ信号を生成できます。
トリガごとに、LFSRブロックでD/Aコンバータ出力データを更新します。
プログラム可能なカウント値のあるアップダウンカウンタで、D/Aコンバータ出力データを更新できる三角波データを生成できます。
データは、トリガ信号でも更新できます。

15

ノコギリ波の生成

16波形生成• D/Aコンバータ自動波形生成機能• ノコギリ波• 設定可能なインクリメント/ディクリメント値と振幅に基づく• 複雑なトリガ･システム•

インクリメント/デクリメントの場合• リセット用

D/Aコンバータはノコギリ波形を生成することが出来ます。
初期値、インクリメント値、方向制御に関する特定のレジスタ設定が可能です。
ノコギリ波カウンタはSTRSTDATAから開始し、各増分トリガはSTINCDATA値をインクリメント（またはデクリメント）します。
インクリメントトリガおよびリセットトリガは、STINCTRIGSELおよびSTRSTTRIGSELビットフィールドを使用して選択する必要があります。
この機能は、コンパレータがモータ電流を制御するための閾値電圧を作成するのに利用できます。

16

ノコギリ波の生成

17波形生成• ノコギリ波生成のプロパティ• インクリメント/デクリメント･カウンタ• 16ビットノコギリ波カウンタ（基準値からスタート:STRSTDATAx[11:0]<<4）•トリガ信号のリセットは、カウンタを基本値に初期化する STRSTDATAx[11:0]<<4• 各STINCTRIGトリガはSTINCDATAx[15:0]によってインクリメント/デクリメントされる• D/Aコンバータ出力として使用されるのは、上位12ビットのみ•0x0000または0xFFFFに達すると、値は飽和状態になる• インクリメント/デクリメント（STINCTRIG）およびリセット（STRSTTRIG）のトリガ信号• SWTRIGビット、EXTI、TIMx_TRGO、HRTIM

インクリメント値は、DAC_STRxレジスタのSTINCDATAビットによって定義されます。
D/Aコンバータ出力は、このカウンタ値の12MSBから使用されます。
カウンタが0x0000または0xFFFFに達すると、値は飽和状態になります。
ノコギリ波の方向は、DAC_STRxレジスタのSTDIRビットによって定義されます。

17

DMAを使用したD/Aコンバータ

18

CPUの負荷をオフロード• D/AコンバータDMAリクエストは、外部CPUトリガが発生したときに生成• データホールド･レジスタ値は、データ出力レジスタに転送• 安定したサンプリング時間ベースの出力（タイマ制御）を生成可能

RAM（パターン1）（パターン2）DMA

D/Aコンバータx
D/Aコンバータ･トリガ

チャネルx
出力

• 割込み機能を備えたDMAアンダーラン

D/Aコンバータは、トリガ信号からDMAリクエストも生成できます。
トリガが検出されると、データホールドレジスタ値がデータ出力レジスタに転送されます。
次に、データホールドレジスタの新しいデータを取得するために、DMAリクエストが生成されます。
出力データレジスタの更新はトリガ信号によって直接開始される
ため、D/Aコンバータ出力信号にジッタはなく、安定したサンプリング時間信号出力を生成でき、サンプリング周波数をフィルタしやすくなります。

18

DMAダブルデータ機能

19

CPUの負荷をオフロード• DMAダブルデータ･モード（DMADOUBLExビット=1）• 1回のDMA転送で2つの連続したD/Aコンバータ･サンプルの転送が可能• 1つのD/Aコンバータ･チャネルの連続サンプル• DMAリクエストは、2番目のD/Aコンバータトリガごとに生成• 1つの32ビットトランザクションで2つのサンプルが転送• 実装• 2つのデータホールドレジスタ（DAC_DHRx、DAC_DHRBx）
2つの出力データレジスタ（DAC_DORx、DAC_DORBx）• DMA転送フィルDAC_DHRx、DAC_DHRBx• トリガの切り替えDAC_DORx、DAC_DORBx•DORSTATxビットはアクティブレジスタペアを示す

D/Aコンバータは、バスアクティビティを減らすためにダブルデー
タDMA機能をサポートします。
D/AコンバータDMAリクエストは、2つの外部トリガ（ソフトウェアトリガを除く）ごとに生成されるため、同じ32ビットAHBトランザクションで2つのサンプルが転送されます。
DMAダブルモードでは、DMAリクエストで処理できるD/Aコンバー
タのチャネルは1つだけです。
DMAダブルモードで2つのチャネル出力を使用するには、各DMAチャネルを個別に設定する必要があります。

19割込みおよびDMA
割込みイベント
DMAアンダーラン

DMAイベント
DMAリクエスト

20

説明DMAリクエストが次の外部トリガによって処理されない場合

説明
DMAENxビットがセットされたときの外部トリガ

メモリからデータを転送するには、DMAリクエストを生成できます。
D/AコンバータDMAリクエストはキューに入れられていないため、最初の外部トリガの受信確認（最初の要求）の前に2番目の外部トリガが到着した場合、新しいリクエストは発行されず、マスク可
能な割込み要求を引き起こすアンダーランフラグが設定されます。

20

低電力モード
モード

説明

SLEEP

効果なし、D/Aコンバータ、DMAは使用可能

低電力RUN

効果なし

低電力SLEEP

効果なし、D/Aコンバータ、DMAは使用可能

STOP0/STOP1

LSI/LSEクロックを使用してサンプル&ホールドモードを選択した場合、D/Aコンバ
ータは静的な値でアクティブな状態を維持

STANDBY
SHUTDOWN

21

D/Aコンバータペリフェラルの電源が切れ、STANDBYまたはSHUTDOWNモードを終了した後に再初期化する必要がある

D/Aコンバータは、RUN、SLEEPの低電力モードではアクティブになります。
STOP0モードおよびSTOPモードでは、サンプルとホールドモードが選択されている場合はアクティブな状態が維持されます。
STANDBYモードとSHUTDOWNモードでは、D/Aコンバータの電源がオフになり、後で再初期化する必要があります。

21パフォーマンス
条件値（標準）単位

VDDA

1.71 ~ 3.6V

単調出力

10ビット

微分非直線性（DNL）

+/-2

LSB

積分非線形性（INL）

+/-4

LSB

有効ビット数（ENOB）
1KHz出力バッファオン

11.4ビット

バッファオフ11.5

ビット

VREF+からの消費（1メガサンプル/秒）

バッファオン

185µA

バッファオフ155µA+/-1LSB、C=50pF

1.6µs

1.0

メガサンプル/秒

15.0

メガサンプル/秒

安定時間（1メガサンプル/秒）
サンプリングレート22

次の表には、D/Aコンバータのパフォーマンスパラメータをいくつか示しています。D/Aコンバータは1.71~3.6Vの間で動作します。
D/Aコンバータ出力バッファがONの場合、またはピンDAC_OUT接続されている場合、VDDAの最小電圧値は1.8Vです。
10ビット単調出力が保証されます。
1メガサンプル/秒で動作する場合、バッファが有効な場合は消費電力は185μA、バッファ無効の場合は155μAです。
サンプル&ホールドモードを使用することで、消費電流を大幅に削減できます。コンディションやホールドコンデンサの特性に応じて、このモードでは1μA未満の電流消費が可能です。D/Aコン
バータバッファ出力は、50pF負荷で1.6μsecの安定時間を持っています。
D/Aコンバータは、1秒あたり1メガサンプルまたは1秒当たり15メガサンプルのサンプリングレートを処理できます。

22

関連するペリフェラル

23• 本ペリフェラルに関連する以下のペリフェラルのトレーニングを参照してください。
• VREFBUF - 電圧リファレンス･バッファ• RCC - クロック･モジュール• DMA - ダイレクト･メモリ･アクセス• 割込み• GPIO - 汎用入出力• TIM - タイマ• Op Amp - オペアンプ• COMP - コンパレータ

これは、D/Aコンバータに関連するペリフェラルの一覧です。詳細
については、必要に応じてこれらのペリフェラルのトレーニングを参照してください。

23

参照

24

• 詳細については、次のリソースを参照してください。
• AN3126: Audio and waveform generation using the DAC in STM32 microcontrollers• AN4566: Extending the DAC performance of STM32 microcontrollers

D/A コンバータの項目に特化したアプリケーションノートも参照できます。

24