STM32F0x1コンパレータ(COMP)とADCを同じピンに同時に接続しますか?


8

STM32F051マイクロコントローラーのコンパレータペリフェラルを利用するプロジェクトをまとめています。ドキュメントで、コンパレータが機能するために入力ピンをアナログ用に構成する必要があることを読みました。これは、ピンをADC入力として使用していた場合と同じ設定です。

入力として単一のピン(PA1など)を使用して、ウィンドウコンパレーター入力とADC_IN1のADC入力の両方として構成できますか?

考慮すべき追加のノイズなど、この構成に問題点はありますか?

データシート(p 19)

リファレンスマニュアル(p 295)

これが可能であることを示唆する興味深いリファレンス: AN4232ここに画像の説明を入力してください からの抜粋:STM32F3シリーズのアナログコンパレータの概要


1
関連ドキュメントにリンクしていただけませんか?データシート私が見つけたのコンパレータを言及していないが、これは興味深い質問です
デヴィッド・

きっと私が言うつもりだったのはSTM32F0 * 5 * 1 ...
Daniel

私の経験からそれは実行可能であるはずですが、私は確かに言うことはできません、そしてあなたがこの情報を公式の情報源で見つけることを疑います。IMOでできる最善のことは、実験することです。非常に安価な(〜10 USD)STM32F07xヌクレオボードを入手して、テストしてみてください。またはF051ディスカバリーボードを入手してください。それほど高価ではありません。STは、異なるMCUで同じペリフェラルIPコアを使用するため、F07xとF051の間で同様に動作することが期待できます。
Jan Dorniak 2016

@JanDorniakはい、それが最善の方法でしょう。残念ながら、これを確実に理解するには長い時間(数日いじり回る)がかかり、プロトタイプ生産用のPCBの準備にその時間を費やす必要があります。誰も何も戻らない場合は、最終的にそれを行います。
Daniel

1
@Daniel確かに言える1つの問題は、一部の周辺機器がピンを介して接続されていることです。DAC出力をCOMP出力として接続すると、デジタル出力として使用しようとしたピンを介して接続されたため、問題が発生しました。うまくいきませんでした。幸い、MCUに空きピンがありました。あなたがそれを調べたいなら、それはL053のPA4でした
Jan Dorniak

回答:


4

これは機能し、数値だけでなく割り込みも返されます。確認しました。からダウンロードしてください

正確さとグリッチはまだ決まっていません。しかし、このスレッドの@Bence Kaulicsによって示されているように、Appnotesで十分に説明されています(追加のAppNotesについては、results.txtを参照してください)

以下の理由で安定すると思います。

a) The circuit diagram in RM0091 shows a direct connection from comparator to pin. i.e. it is indicated that the comparator cannot be disconnected with a switch or MUX, and will thus work as soon as the pin is assigned 'analog in'.

b) The comparator is NOT dependent on a 'Clock' to enable it (it is alow power device).

c) ST would not be able to make this level of change without assigning a new part number.


The good news is that one can continue to use the comparator for high-speed events such as over current and emergency stop etc whilst still using the ADC analog window events for other software control.

これはDACでも機能します。つまり、DACを使用して内部全体を設定することも、DACといくつかの抵抗を使用して外部で設定することもできます。

回路を見るだけで、ADCをコンパレーターと並列に使用します。私たちが知っているように、これらは非常に高インピーダンスの大利得デバイスです。グリッチは私たちの友達ではありません。

今度は、ADCに給電するために、放電したキャップをそのピンに時々ぶつけます。

誰もが知っているように、ADCをオーバーサンプリングし、マルチプレクサスイッチイベントの後の最初の読み取りを拒否して、隣接チャネルとの間のスキューを排除する必要があります。

STMのADCは、使用方法に応じて、入力インピーダンスがやや<50K // 5pFです。(DM00039193.pdf pg 76ff)

表53は、400-> 50KOhmを示しています。これは、F373 ADCをキャリブレーションしたときのことです。

79ページはADC回路を示しています。

Pg 82は、上記のアナログピンの一般的な説明(pg73ff)と合わせて読んで、コンパレータピンの短い説明を提供します

それをコンパレータ入力およびADC MUXと並列に配置し、スパイスでモデル化します。ADCキャップを定期的にランダムな電圧に充電することを忘れないでください。

回路とソフトウェアで他に何が起こっても、コンパレータ入力にかなり妥当なグリッチが発生します。ピンを低インピーダンスのフォロワとデカップリングキャップ(コンパレータ入力の移動ライン上)に接続したとしても、悪い考えです。

ADCが使用するキャップはキラーです。うまくいけば、将来のデバイスは、ADCとコンパレータの両方で内部フォロワー/アイソレーターを使用してサンプリングを行うでしょう。これらは、ドキュメント化されていない機能としてすでに存在している可能性があります(muxクロストークが原因ではない可能性があります)。

私と同じように、私はデジタルの側面に深く関わっていて、アナログやハイブリッドに移行すると、基本を忘れてしまうと思います。

電流-電圧コンバータを使用して小電流を測定する方法は?昨日誰かと話し合った 私は自分で反則した理由を知っていました。最高の3Vから50Kへの変換でも、16K /ボルトのAVOが得られます。最後にそのようなAVO /マルチメーターを使用したのはいつですか?

そうは言っても、F373の回路を見ると、STとARMは、混合デバイスで同時に使用されているコンパレータとADCの両方から有効な結果を得ることができるようになっているように思われます。150および300シリーズにオペアンプを追加すると、インピーダンス分離要件に関する手掛かりが得られます。

これらの内部相互接続が設計された環境を、私よりも賢い人が再設計できると確信しています。私は自動車かHVAC ....インバータとFOCを考えるでしょう。FOCライブラリは貴重な洞察を提供する可能性があります。

高速で高精度の計測器を構築しているのでない限り、そのような使用法は実際に使用するのに十分安定している可能性があります(上記の警告内)。それは確かに多くの外部回路を節約します。高速での厳密なテストは、おそらく生徒の練習問題として残しておくのが最善です(私を誘惑して勉強してください)。

解決策はこちら

HAL ADCライブラリは、マルチチャネルDMAで少し壊れているようです。回答を得るためにSTMウェブサイトに投稿しました。回避策:-

a)両方のADCのIRQ

b)両方のADCをポーリングする

c)1つのチャネルをDMAし、もう1つのチャネルをポーリングする

d)低レベルレジスタを手動で初期化する

これは、より良いソリューションが見つかるまで、両方のコンパレータが使用されるソリューションのもう1つの警告です。


STM32F4Discoveryでは、ADC2とADC3はHALで正常に動作します。DMA2 Stream1をADC3で、DMA2 Stream2をADC2で使用していますが、両方のADCに2つの構成済みチャネルがあります。DMAモードは循環です。また、STM32F3のHALでは、4つの異なるADCをDMA、DMA2に3チャネル、DMA1に1つ使用しています。多チャンネルDMAを使用しようとするとどうなるのですか?
Bence Kaulics

@Bence-マルチチャネルADC-DMA構成でF1、F3、およびF4を使用しました。これらは、DMAにチャネルを追加するために別のメカニズムを使用しています。チャネルは任意の順序でスキャンできます。STM32L0シリーズは内部構造が異なり、チャンネルはチャンネル番号によって自動的に優先されます。さまざまな構造とそれを設定するための呼び出しがあります。各チャネルは、スキャンで1回だけ表示されます。
ChrisR 2016年

わかりました。この優先順位は固定されていますか?
Bence Kaulics、2016年

回答と、これが機能することを直接確認するための努力、およびサポートしている研究を見つけるための努力に感謝します。とても有難い!
Daniel

1
@Bence-はい、優先順位と順序は固定されています-チャネル番号で移動します。優れた点の1つは、スキャンでオーバーサンプリングして平均化できることです。上記のリンクされたRMを参照してください。読む価値があります。多くの人と同様に、HALライブラリがすべてのARMデバイスに対して透過的ではない(そして透過的ではない)ことは少し悲しいです。
ChrisR 2016年

4

アプリケーションでのSTM32F05xxアナログコンパレータの使用AN4112)、4ページから、私が見つけた最も関連性の高いセットアップは次のとおりです

ここに画像の説明を入力してください

それは言う:

図1 は、コンパレータ2(COMP2)を使用したアナログ電圧監視アプリケーションで、センサー出力(温度センサー、圧力センサー、焦電赤外線検出器、フォトダイオードセンサー)をSTM32F05xxデバイスに接続する方法を示しています。COMP2は停止モードでアナログ電圧を監視し、ADCは実行モードでそれを測定します。

ここで、ADCとCOMPは交互に機能しますが、両方が同時に構成されていると思います。ドキュメントを続行すると、COMP構成に関するブロック図が表示されます。

ここに画像の説明を入力してください

この画像に基づいて、ADCとCOMPは同じADCチャネルを共有していると思います。唯一の違いは、有効なアナログしきい値ソースの数です

質問の図5の下のテキストは、

コンパレータ入力はADCチャネル

ADC_IN1と同じ可能性があります。

この構成全体の目的は電力を節約することであり、COMPはMCUの状態変更をトリガーします(STOP <-> RUN)。したがって、入力が特定のしきい値を下回ると、MCUとADCはシャットダウンされ、コンパレータのみが機能します。また、入力がしきい値を上回ると、MCUとADCはウェイクアップし、ADCは入力電圧を測定します。しかし、入力が再びしきい値を下回ると、COMPはMCUをSTOP状態に送信します。

ここに画像の説明を入力してください

これらを一緒に使用する方法の1つです。これで問題が前進することを願っています。


お返事ありがとうございます。それは議論にかなり多くを追加しました。最終的に、直接回答を確認できる人に賞金を授与することにしましたが、これは私の賛成票であり、非常に感謝しています!
Daniel

とても興味深かった質問で、参加してよかったです。さらに、Chrisが報酬を受け取ったことにも同意します:)。彼は時間と労力を惜しまず多くの仕事をしました。
Bence Kaulics

3

STMフォーラムで質問してください。また、(STM32F1)UART RXとTIMxが同じピンの両方の入力にありますが、送信タイマーの割り込みの終了を検出するなど、これらを一緒に使用することはできません。代わりに、UART RXおよびタイマー割り込み機能を使用するには、別のTIMxピンを並列に接続する必要があります。同時にアクティブにできる機能は1つだけだと思います。
MxCubeをダウンロードして、構築できる構成を確認してください。


それはまともなポイントです。私はそれを持っています、それがそれを可能にするかどうかを確認する必要があります。しかし、そうでない場合でも、必ずしもできないということではありません。:/
Daniel

つまり、「私は一度それを試してみましたし、それが機能しなかった」よりも、私は、ドキュメントがより良く、より包括的なたことを望む、と私は他の回答に自信を持つことができます
ダニエル

@ダニエルあなたは正しいです、私があなたがしようとするとき、私は最終的な答えがあなたにMCU自体を与えると思います。
MarkoBuršič16年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.