Analog to Digital Converter ブロックの使用による STMicroelectronics STM32 Processor ベースのボードのサポート
この例では、Embedded Coder® Support Package for STMicroelectronics® STM32 Processors を使用して、アナログ入力チャネルに接続されたアナログ信号を Simulink® モデルの Analog to Digital Converter ブロックでデジタル化する方法を示します。
はじめに
この例では、STMicroelectronics NUCLEO-F429ZI ボードの Simulink モデル内の Analog to Digital Converter ブロックについて、その使用方法とコード生成方法を学習します。このブロックを使用して、内部基準電圧と温度を測定してデジタル化します。
前提条件
以下のチュートリアルを完了します。
必要なハードウェア
この例を実行するには、次のハードウェアが必要です。
STMicroelectronics NUCLEO-F429ZI ボード。
マイクロ USB ケーブル。
モデル
open_system('stm32_adc_gettingstarted');

このモデルを使用して、モデルのサンプル時間の各ステップで Analog to Digital Converter ブロックを介して内部基準電圧と温度 (内部チャネル) を読み取ることができます。
タスク 1 - 内部基準電圧と温度を読み取るように Simulink モデリングで ADC ブロックを構成する
このタスクでは、NUCLEO-F429ZI ボードの 2 つのチャネルに配列を出力するように Analog to Digital Converter ブロックが構成されます。
出力の最初の要素は、基準電圧チャネルから測定されるデジタル化された電圧です。
出力の 2 番目の要素は、温度から測定されるデジタル化された電圧です。
1. stm32_adc_gettingstarted ターゲット モデルを開きます。
2. ブロックを構成します。ブロックをダブルクリックして [ブロック パラメーター] ダイアログ ボックスを開きます。
モデルの ADC ブロックは、生成コードにおいてモデルの各ステップで ADC 変換を行うように
Trigger and readを使用して設定されています。

3. 新しい STM32CubeMX プロジェクトを作成するか、既存の STM32CubeMX プロジェクトを参照します。STM32CubeMX プロジェクトを STM32CubeMX ツールで起動します。詳細については、STMicroelectronics の STM32 プロセッサ ベースのボード入門を参照してください。
4. 次の構成を行って、ADC1 チャネルを有効にし、基準電圧と温度をデジタル化するように構成します。
STM32F4x9 プロセッサ チップで、基準電圧と温度がアナログ チャネル 17 とアナログ チャネル 18 にマッピングされています。

[End of Conversion Selection]が [EOC flag at the end of all conversions] に設定されていることを確認します。

ADC1 は複数のチャネルをサンプリングするので、データの欠落を確実に防ぐため、直接メモリ アクセス (DMA) を有効にします。DMA を有効にするには、次の手順に従います。

5. STM32CubeMX プロジェクトで、次の構成を行います。
[Project Manager]、[Project] で、[Do not generate the main()] を有効にする。
[Project Manager]、[Project] で、[Generate under root] を無効にする。
[Project Manager]、[Advanced Settings]、[Driver Selector] で、周辺装置に対して低水準 (LL) ドライバーを選択する。
[Project Manager]、[Advanced Settings]、[Generate Functions Calls] で、すべての周辺装置の初期化関数呼び出しについて [Do Not Generate Function Calls] を選択解除する。
[Project Manager]、[Advanced Settings]、[Generate Function Calls] で、すべての周辺装置の初期化関数呼び出しについて [Visibility (Static)] を選択解除する。
プロジェクトを保存する。
モデルの監視と調整
モデルに対して "監視と調整" アクションを実行すると、ホスト コンピューターがターゲットと通信し、生成された実行可能ファイルがターゲットで実行されます。
1. [ハードウェア] タブを開き、[監視と調整] をクリックします。診断ビューアーから、モデルのコードが生成され、生成された実行可能ファイルの読み込み後にホストがターゲットに接続されることを確認できます。

2. モデルの実行中に、"Display" ブロックを観察し、デジタル化された信号をリアルタイムで確認します。
タスク 2 - 外部ソースによる ADC のトリガーを構成する
このタスクでは、内部基準電圧と温度 (内部チャネル) を測定するために外部イベントで Analog To Digital Converter (ADC) をトリガーするように構成します。
ADC をトリガーするための外部イベントの生成はモデルによって制御されます。
1. stm32_adc_ext_trig_gettingstarted ターゲット モデルを開きます。
2. 新しい STM32CubeMX プロジェクトを作成するか、既存の STM32CubeMX プロジェクトを参照します。STM32CubeMX プロジェクトを STM32CubeMX ツールで起動します。詳細については、STMicroelectronics の STM32 プロセッサ ベースのボード入門を参照してください。
3. 外部イベントから変換を開始するように ADC1 を構成します。
GPIOE ポートのピン 11 (PE11) を選択して、PE11 ピンで正のエッジが検出されるたびに "EXTI 11" ラインでイベントを生成します。
"EXTI 11" ラインでイベントを生成するには、Simulink モデルでピン PE11 が GPIOE ポートのピン 10 (PE10) に接続されている必要があります。そのため、ピン PE10 を STM32CubeMX プロジェクトで "GPIO_Output" として構成する必要があります。

4. STM32CubeMX プロジェクトで、次の構成を行います。
[Project Manager]、[Project] で、[Do not generate the main()] を有効にする。
[Project Manager]、[Project] で、[Generate under root] を無効にする。
[Project Manager]、[Advanced Settings]、[Driver Selector] で、周辺装置に対して低水準 (LL) ドライバーを選択する。
[Project Manager]、[Advanced Settings]、[Generate Functions Calls] で、すべての周辺装置の初期化関数呼び出しについて [Do Not Generate Function Calls] を選択解除する。
[Project Manager]、[Advanced Settings]、[Generate Function Calls] で、すべての周辺装置の初期化関数呼び出しについて [Visibility (Static)] を選択解除する。
プロジェクトを保存する。
5. ブロックを構成します。ブロックをダブルクリックして [ブロック パラメーター] ダイアログ ボックスを開きます。
外部イベント ソースで変換を開始するように ADC1 が構成されているため、Analog to Digital Converter ブロックのトリガー モードを [Read results only] に設定します。
外部イベントに基づいてトリガーするように ADC が構成されているため、変換の準備が整い次第取得する "DMA2_Stream 0" 送信完了割り込みで ADC 変換が読み取られます。

"GPIOE" ブロックをピン 10 に設定します。

Simulink モデルからコードを生成してハードウェア ボードに読み込む
モデルの監視と調整
モデルに対して "監視と調整" アクションを実行すると、ホスト コンピューターがターゲットと通信し、生成された実行可能ファイルがターゲットで実行されます。
1. [ハードウェア] タブを開き、[監視と調整] をクリックします。診断ビューアーから、モデルのコードが生成され、生成された実行可能ファイルの読み込み後にホストがターゲットに接続されることを確認できます。

2. モデルの実行中に、"Display" ブロックを観察し、デジタル化された信号をリアルタイムで確認します。
その他の試行
Analog to Digital Converter ブロックの変換グループが [Injected] に設定された状況で、この例を実行して温度を読み取ってみます。