2017-06-16 55 views
0

私はSTM32F302 QFN32を使用していますが、残念ながらADCモジュールは1つしかありません。 1つのチャンネルは約500サンプルを1周期で取得する必要があり、タイマーを使用して同期をとる必要があります(このタイマーを使用して考えると、このI/Oはコールバックで切り替わります。または低いので、この値に応じて値を決定します)。さらに、読み取らなければならないチャンネルが4つあります(以前のようなサンプルは必要ありませんが、8または16サンプルで十分です)。ただし、ADCモジュールは1つしかありません。したがって、私はこれを行うことはできますか?はいの場合、どうですか?ありがとうございました。STM32F302異なるサイズとチャンネルのDMAを使用したAdc

+0

_ "私はSTM32F302 QFN32を使用しています" _このマイクロはQFN32のケースで製造されていないので、かなり興味深いです。 –

+0

私はUFQFPNがそのケースだと述べました。 –

+0

STには完全な注文コードのパッケージがありますが、完全な注文コードを付けることはできますか? STM32F302 ** xxx **?私はx6xまたはx8xを推測していますか? – Jeroen3

答えて

2

ST ADCには2つの変換モードがあります。レギュラーとインジェクション。

通常モードは、すべてのADCのものと似ています。ソフトウェアまたはトリガー(タイマー/ gpio)のいずれかで開始し、1つまたは一連の変換を行います。結果は、DMAが処理する共通レジスタに書き込まれます。
注入モードは、優先度の高いプリエンプション変換です。注入された変換シーケンスをソフトウェアまたはトリガで開始した後。 ADCは通常の変換の間に変換を挿入します。優先度の高いものとして。結果は、割り込みのために注入された結果チャネルの1つに格納されます。
標準モードのみがDMAをサポートしています。詳細については、AN4195を参照してください。

高速なチャンネルの通常のシーケンスをトリガーするタイマーを使用し、循環DMA設定でデータを移動することをお勧めします。注入されたシーケンスをトリガーするために別のタイマーを使用します。最大4つの注入チャンネルがあるので、あなたは運がいいです!

明らかに、これを逆にすることができます。速い注射をし、定期的にゆっくりとします。しかし、DMAがデータを移動させるためには、注入された開始トリガに別のタイマーを同期させる必要があります。
これは、サンプラリートが即時処理を許可していない場合です。それ以外の場合は、ISRを使用することができます。

+0

これらのモードを同時に使用できますか?そのため、DMAで通常のモードを使用している間、他のチャネルでは同時に注入モードを使用できますか?出来ますか?それとも、他の仕上げまでコンバージョンを開始しないのですか? –

+0

@ GokhanSahinはい、これらのモードは一緒に使用することを意図しています。両方のモードが完全な変換を開始するので、私はあなたが注入と定期的に同じチャネルを使用できると思います。このためには、マニュアルの脚注を確認する必要があります。 – Jeroen3

+0

ありがとうございますJeroen3。これは、通常モードと注入モードの両方で同時にうまくいきます。 –

関連する問題