STM32G0 - DAC
デジタル･アナログ･コンバータレビジョン 1.0

STM32G0 デジタルアナログコンバータのプレゼンテーション
へようこそ。このブロックは、デジタル信号を外部とのインタフェースが可能なアナログ電圧に変換するために使用されます。

1

概要

VREF+

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

DAC_OUT1• 8ビット･モードまたは12ビット･モード• 1 つのDACモジュールに2つのDACコンバータを内蔵• 低消費電力サンプル & ホールド･モード

dac_out1

1212 ビット
R-2R
DAC

DAC

バッファ

dac_out2

DAC_OUT2

アプリケーション側の利点• オンチップDACで外部バイアス回路を制御できるので、ポテンショメータは不要• また、音声など任意の信号の発生器としても動作可能

STM32G0 デジタルアナログコンバータは、8 ビットまたは 12ビットのデジタルデータをアナログ電圧に変換します。DAC モ
ジュールには、同期または非同期で動作可能な 2 つのコンバータが内蔵されています。
低消費電力サンプル & ホールドモードも統合されています。
DAC は外部のポテンショメータまたはバイアス回路とインタフェース可能です。また、音声など任意の信号を作成することもできます。

2主な機能3• 8ビット･モードまたは12ビット･モード• 10ビットの単調出力を保証• バッファ有出力• 低消費電力アプリケーションのサンプル & ホールド･モード• 同期更新機能• DMA機能• さまざまなトリガ入力• ノイズ波と三角波の生成

STM32G0 マイクロコントローラ内のデジタルアナログコン
バータは、8 ビットモードまたは 12 ビットモードのシンプルなデジタルアナログ変換を実現します。10 ビットの単調出力が保証されています。DAC 出力にはローインピーダンスバッファを接続して、外部負荷を駆動できます。サンプル & ホールドモードで消費電力を大幅に削減できます。2 つのコンバータは、お互いに同期させることができます。入力データを DMA で転送して、CPU の負荷を軽減できます。DAC 出力データは、タイマ、外部トリガ、およびソフトウェアトリガで更新できます。また、ノイズ波と三角波を生成する簡単なロジックが組み込まれています。

3

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

制御ロジック
offset_calibration

ノイズ／三角波
データ保持
レジスタ 1

データ出力
レジスタ 112bch1_trig0
ch1_trig1

トリガ

ch1_trig15

ch1_trig0
ch1_trig1
ch1_trig15

データ保持
レジスタ 212b12 ビット
R-2R
DAC1

offset_calibration

データ出力
レジスタ 212b

バッファ

DAC_OUT1

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

ノイズ／三角波
LSI_ck4

12b

12 ビットR-2R
DAC2

dac_out1

バッファ

DAC_OUT2

トリガ

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

dac_out2

このスライドでは、デジタルアナログコンバータの簡易ブロック図を示します。この DAC ブロックの電源は VDDA によって供給されます。
デジタルアナログコンバータは、データ保持レジスタに値を書き込むDMA リクエストをサポートする APB スレーブです。
どちらかの DAC_OUTx 信号を対応する出力ピンから切り離して、標準の GPIO として使用できます。
DAC_OUTx 信号は、内部ピンを使用して、コンパレータなどのオンチップペリフェラルに接続できます。
DAC 出力チャネルは、バッファ有またはバッファ無です。
サンプル & ホールドブロックとレジスタは、LSI （低速内部オシレータ）クロックソースを使用し、スタティック変換のために STOP モードで動作できます。
データ保持レジスタの内容は、ソフトウェアトリガを含むトリガ条件が検出されると、対応するデータ出力レジスタに転送されます。
その後で、データ出力レジスタの内容はコンバータに転送されます。
出力バッファを有効にする前に、電圧オフセットを較正する必要があります。この較正は出荷時に実施され（リセット後にロードされ）、アプリケーション動作中にソフトウェアで調整できます。

4

出力バッファ有のDAC

5さまざまな設定によるインタフェースを容易に実現
VREF+• 出力• バッファ有モードを使用したロー･インピーダンス出力

12
バッファ

DAC_OUT1• R-2Rタイプ抵抗ラダDACからの直接出力• 出力インピーダンスは約12kΩ
dac_out1

12
バッファ

DAC_OUT2

dac_out2

ローインピーダンス負荷に対応するために DAC 出力にバッファを付けることができます。バッファ無の場合、出力は R-2R
抵抗ラダーネットワークタイプの DAC に直接接続されます。
DAC 出力は、COMP ユニットに内部的に接続することもできます。

5

DACデータフォーマット

6

フレキシブル･データ入力フォーマット

• 8ビット･モード：• 右揃えデータ入力（16ビット･データ･レジスタ）D7 D6 D5 D4 D3 D2 D1 D0• デュアル･チャネル･モードの8ビット + 8ビット･データ入力• 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

DAC は、複数の入力フォーマットをサポートできます。8 ビットモードでは、右揃え 8 ビットデータフォーマットです。

6

DACデータ･フォーマット

7デュアル･チャネル･モード• 8ビット･モード：• デュアル･チャネル･モードの8ビット + 8ビット･データ入力• 12ビット･モード：

3115

7CH231• デュアル･チャネル･モードの12ビット + 12ビット右揃えデータ入力• デュアル･チャネル･モードの12ビット + 12ビット左揃えデータ入力

2323

15

CH231

23

CH20

CH170

CH11570CH1

デュアルチャネルモードでは、2 つの DAC に入力データを提供するために、8 ビット + 8 ビットデータフォーマットを使用します。12 ビット + 12 ビットの場合、入力データには右揃えモードまたは左揃えモードのどちらかを使用できます。
これらのレジスタに保持されているデータは、同期（ステレオオーディオなど）または非同期のどちらかで、関連するコンバータに転送されます。これは、2 つのチャネルが独立して動作できることを意味します。

7

DAC変換トリガ

8

DACを開始するためのさまざまなトリガ• データ保持レジスタへの書込みにより自動的に開始（ソフトウェア･トリガ）• DAC_DHRx レジスタから DAC_DORxレジスタにわずか 1 APBクロック･サイクル後に転送される• トリガ変換により開始：• 8つの異なるタイマ出力• 外部I/Oトリガ• ソフトウェア･トリガ･ビットをセット• DAC_DORxレジスタはトリガ発生の3 dac_pclkサイクル後に更新される

DAC 出力変換は、ソフトウェアでデータ保持レジスタに書き込むことにより開始します。8 つの異なるタイマ出力、外部 I/O、またはソフトウェアが DAC 変換をトリガできます。
ソフトウェアトリガが使用された場合、データ保持レジスタの内容は 1 APB クロックサイクル後に対応するデータ出力レジスタに転送されます。
トリガモードでトリガが発生した場合、データ保持レジスタの内容は 3 APB クロックサイクル後に対応するデータ出力レジスタに転送されます。

8

サンプル & ホールド機能 (1/4)

9低消費電力モード• 「サンプル & ホールド」機能の主な目標は、マイクロコントローラが STOPモードなどの低消費電力モードの場合にDAC出力電圧を維持すること• 「サンプル & ホールド」モードに設定されているDACは、関連するアナログ回路とデジタル回路がすべてオフになっていても、変換された電圧を出力できる• DAC出力に内部／外付けホールドコンデンサを接続できる

VOUT

サンプル & ホールド機能は、DAC 出力電圧を維持しますが、連続的にアクティブに駆動するわけではありません。
内部／外付けコンデンサを使用して、サンプリング期間終了時の電圧レベルを保持します。
その後、DAC 出力をハイインピーダンスに設定できます。
もちろん、コンデンサは時間の経過とともに放電します。リフレッシュ期間が定義されているのはそのためです。リフレッシュ期間が終了すると、DAC 出力は再びアクティブに駆動され、コンデンサを再充電します。

9サンプル & ホールド機能 (2/4)

10

低消費電力モード• 「サンプル & ホールド」モードでのDAC変換は3つのフェーズで構成される• サンプリング･フェーズ：このフェーズでは「サンプル & ホールド」要素が必要な電圧まで充電される• ホールド･フェーズ：このフェーズではDACの出力はトライステート（ハイインピーダンス）になり、「サンプル & ホールド」要素に蓄積されている電荷を維持する• リフレッシュ･フェーズ：さまざまな原因でリーク電流が発生するため、出力電圧を必要な値に維持するにはリフレッシュ･フェーズが不可欠である（+/- LSB）
サンプリング ホールド リフレッシュ

DAC（サンプル &ホールドモード）

CLOAD

VOUT
VOUT

デジタルアナログコンバータは、間欠的に動作して、内部／外付けコンデンサを充電し、出力電圧がホールドコンデンサで維持されている間はパワーダウンすることができます。リフレッシュ期間が終了すると、DAC は再びパワーオンされ、ホールドコンデンサを再充電します。

10サンプル & ホールド機能 (3/4)

11

低消費電力モード• 「サンプル & ホールド」機能は消費電力要件が極めて低い場合に使用できる

dac_pclk

lsi_ck

DAC（サンプル &ホールドモード）

CloadVout• サンプリング、ホールド、およびリフレッシュのタイミングは設定できる• このモードでは、DACコアおよび対応するすべてのロジックとレジスタは低速内部オシレータ･クロック（lsi_ck）により駆動される「サンプル & ホールド」モードに設定されている DAC は、変換された出力電圧を生成した後、アクティブ回路をオフにできます。
このモードでは、DAC コアおよび対応するすべてのロジックとレジスタは、dac_pclk クロックに加えて LSI クロック（lsi_ck）によっても駆動されるので、STOP モードなどのディープ低消費電力モードで DAC チャネルを使用できます。リフレッシュをスケジュールするロジックでは、LSI クロックのみが必要です。
その際、DAC は、非常に低いデューティサイクルの間（サンプルおよびリフレッシュ）のみアクティブになるので、消費電力が非常に低くなります。デューティサイクルプログラムは、非常に柔軟性が高く、自律的です。

11

サンプル & ホールド機能 (4/4)

12低消費電力モード• 「サンプル & ホールド」要素（内部または外付け）• 外付けとして設定されている場合：外付けコンデンサをDACの外部ピンに取り付ける必要がある• バッファは有効または無効にできる• DAC出力は内部コンポーネント（すなわち内蔵コンパレータ）に送ることも送らないこともできる• 内部として設定されている場合：「サンプル & ホールド」要素として内蔵コンデンサが使用される。
この設定では、DAC出力は内部コンポーネント（オンチップコンパレータなど）にのみ送られる• 変換フェーズのタイミング• すべての変換フェーズのタイミングは、LSIクロックソースを参照している• サンプリング、ホールド、およびリフレッシュのタイミングは設定できる• これらのタイミングは必要なDAC精度および「サンプル & ホールド」コンデンサ値に基づいて計算される

外付けコンデンサまたは内部コンデンサのどちらも使用できます。
外付けの場合、バッファを使用することができ、DAC 出力を内蔵コンパレータなどの内部コンポーネントにも送ることができます。
内部の場合、内蔵コンデンサが使用され、DAC 出力は内部コンポーネントにのみ送られます。
充電時間は、コンデンサ値に依存します。
上記 3 つのフェーズのタイミングは、lsi_ck クロック単位で定義されます。

12

ノイズと三角波の生成13

さまざまな波の生成• ノイズ生成• リニアフィードバックシフトレジスタ（LFSR）を使用• 初期値 = 0xAAA• 計算されたノイズ値は、外部トリガを使用してオーバーフローなしでデータ保持レジスタに加算される• 三角波生成• アップダウンカウンタを使用して三角波を生成できる（トリガごとに +/- 1 ステップインクリメントする）

MAMPx[3:0]

最大振幅

DAC_DHRx

ベース値

DAC デジタルインタフェースには、2 つの特殊な信号生成器が組み込まれています。リニアフィードバックシフトレジスタは、DAC 入力のノイズ信号を作成できます。トリガごとに LFSR ブロックにより DAC 出力データが更新されます。
カウント値をプログラム可能なアップダウンカウンタは、DAC出力データを更新できる三角波データを作成できます。データはトリガ信号でも更新できます。

13

DMA を使用するDAC

14

CPUの負荷を軽減• 外部トリガが発生すると、DACDMAリクエストが生成される• データ保持レジスタの値がデータ出力レジスタに転送される

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

DACx
DAC トリガチャネル x出力• 割込み機能付きDMAアンダーラン• 安定したサンプリング時間ベースの出力（タイマ制御）を生成できる

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

14

割込みとDMA
割込みイベント
DMAアンダーラン

DMA イベント
DMAリクエスト

15

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

説明
DMAENxビットがセットされている場合の外部トリガ

メモリからデータを転送するために DMA リクエストを生成できます。
DAC DMA リクエストはキューに入れられないので、最初の外部トリガに対する確認応答を受信する（最初のリクエスト）前に2 つ目の外部トリガが発生すると、新しいリクエストは発行されず、アンダーランフラグがセットされてマスク可能な割込みリクエストが発生します。

15低消費電力モード
モード

説明

RUN/
低消費電力RUN

アクティブ

SLEEP/
低消費電力
SLEEP

影響なし、DACとDMAは使用可能

STOP 0/STOP 1

サンプル & ホールドモードがLSIクロックを使用して選択されている場合、DACは静的な値でアクティブな状態を維持する

STANDBY
SHUTDOWN

16

DACペリフェラルはパワーダウンされ、STANDBYモードまたはSHUTDOWNモード終了後に再初期化する必要がある

低消費電力 RUN モードと低消費電力 SLEEP モードでは、デジタルアナログコンバータはアクティブです。
STOP 0 モードでは、サンプル & ホールドモードが選択されている場合はアクティブな状態を維持します。
STANDBY モードと SHUTDOWN モードでは DAC はパワーダウンされ、モード終了後に再初期化する必要があります。

16性能状態値（標準）

単位

VDDA

1.8～3.6

V単調出力

10ビット

微分非直線性（DNL）±2LSB

積分非直線性（INL）±4LSB

有効ビット数（ENOB）
1kHz 出力

バッファオン

11.4ビット

バッファオフ11.5ビット

VREF+からの消費電流

バッファオン

185µA

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

1.6µs

1.0Mサンプリング/秒

整定時間
サンプリングレート

17スライドの表に、デジタルアナログコンバータの性能パラメータを示します。DAC は、1.8～3.6 V の範囲で動作できます。10ビットの単調出力が保証されています。消費電力は、バッファが有効な場合は 185 µA、バッファが無効な場合は 155 µA です。サンプル & ホールドモードを使用することによって、消費電流を大幅に削減できます。条件およびホールドコンデンサの特性によっては、このモードで消費電流を 1 µA 未満にすることが可能です。バッファ有の DAC 出力の整定時間は、50 pFの負荷で 1.6 µs です。
DAC は、1 Mサンプリング/秒のサンプリングレートを処理できます。外部コンポーネントを使用する場合は、最大 10 Mサンプリング/秒を処理できます。詳細については、アプリケーション
ノート AN4566 を参照してください。

17

関連ペリフェラル

18• 次のペリフェラルにリンクされているペリフェラル･トレーニングを参照• DMA - ダイレクト･メモリ･アクセス• 割込み - ネスト化されたベクタ割込みコントローラ• GPIO - 汎用入出力• TIM - タイマ• ADC - アナログ･デジタル･コンバータ• COMP - コンパレータ

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

18

参照

19

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

DAC のトピック専用のアプリケーションノートも公開されています。

19