STM32F0x1 Komparator (COMP) und ADC gleichzeitig auf demselben Pin?

Ich stelle ein Projekt zusammen, das das Komparatorperipheriegerät des STM32F051-Mikrocontrollers nutzt. Ich habe in der Dokumentation gelesen, dass der Eingangspin für den Betrieb des Komparators für analog konfiguriert werden muss ... was das gleiche Setup ist, wenn Sie den Pin als ADC-Eingang verwenden würden.

Kann ich einen einzelnen Pin, beispielsweise PA1, als Eingang verwenden und ihn sowohl als Fensterkomparatoreingang als auch als ADC-Eingang an ADC_IN1 konfigurieren?

Gibt es irgendwelche Fallstricke bei dieser Konfiguration, wie z. B. zusätzliches Rauschen, das ich berücksichtigen sollte?

Datenblatt (S. 19)

Referenzhandbuch (S. 295)

Eine interessante Referenz, die darauf hindeutet, dass dies möglich sein sollte: Geben Sie hier die Bildbeschreibung einEntnommen aus AN4232: Erste Schritte mit analogen Komparatoren für die STM32F3-Serie

Könnten Sie auf die entsprechende Dokumentation verlinken? Das Datenblatt , das ich gefunden habe, erwähnt keine Komparatoren, aber das ist eine interessante Frage
Was ich eigentlich sagen wollte war STM32F0*5*1...
Aus meiner Erfahrung sollte es machbar sein, aber ich kann es nicht mit Sicherheit sagen und ich bezweifle, dass Sie diese Informationen in offiziellen Quellen finden werden. Das Beste, was Sie meiner Meinung nach tun können, ist zu experimentieren - besorgen Sie sich ein STM32F07x-Nucleo-Board, das recht günstig ist (~ 10 USD), und testen Sie es. Oder nimm ein F051 Discovery Board, die sind nicht viel teurer. ST verwendet die gleichen peripheren IP-Kerne in verschiedenen MCUs, sodass Sie davon ausgehen können, dass es sich zwischen F07x und F051 ähnlich verhält.
@JanDorniak Ja, das wäre der beste Weg. Leider wird es lange dauern (mehrere Tage des Herumspielens), um dies sicher herauszufinden, und ich muss diese Zeit damit verbringen, eine Leiterplatte für die Prototypenproduktion vorzubereiten. Wenn niemand mit irgendetwas zurückkommt, werde ich das irgendwann tun.
@Daniel Ein Problem, das ich Ihnen mit Sicherheit sagen kann, ist, dass einige Peripheriegeräte über Pins verbunden sind. Ich hatte Probleme beim Anschließen eines DAC-Ausgangs als COMP-Eingang, da sie über einen Pin angeschlossen waren, den ich als digitalen Ausgang verwenden wollte. Hat nicht funktioniert, zum Glück hatte ich einige freie Pins auf der MCU. Wenn Sie sich das genauer ansehen wollen, es war PA4 auf L053
@JanDorniak Ich habe mich genau darüber gewundert und war misstrauisch, dass dies der Fall ist. Danke für die Bestätigung! (Wie bizarr, oder?)
@JanDorniak Es ist schade, dass sie keine Appnotes schreiben, wie es Microchip früher getan hat: "Tipps und Tricks für die Verwendung von X" ...
@Daniel gerne geschehen :) Außerdem bietet Farnell je nach Standort eine hervorragende Lieferung am nächsten Tag in ganz Europa, obwohl die Versandkosten ziemlich hoch sind.

Antworten (3)

Dies funktioniert, Sie erhalten Nummern sowie Unterbrechungen zurück. Ich habe es mir angesehen, Download von .

Die Genauigkeit und Glitchiness sind noch unbestimmt. Aber ist in den Appnotes gut beschrieben, wie von @Bence Kaulics in diesem Thread angegeben (siehe results.txt für zusätzliche AppNotes).

Ich glaube, dass es aus den folgenden Gründen stabil sein wird.

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.

Das funktioniert auch mit dem DAC, dh man kann das Ganze intern mit dem DAC oder extern mit dem DAC und ein paar Widerständen aufbauen.

Wenn Sie sich nur die Schaltung ansehen, verwenden Sie den ADC parallel zum Komparator, im Wesentlichen einen Verstärker. Wie wir wissen, handelt es sich um sehr hochohmige Geräte mit großer Verstärkung. Störungen sind nicht unser Freund.

Jetzt werden wir von Zeit zu Zeit eine entladene Kappe auf diesen Stift schlagen, um den ADC zu füttern.

Wie wir alle wissen, müssen wir den ADC überabtasten und vorzugsweise den ersten Messwert nach einem Mux-Switch-Ereignis ablehnen, um eine Verzerrung von und zu benachbarten Kanälen zu eliminieren.

Der ADC am STM hat eine Eingangsimpedanz von etwas < 50 K // 5 pF, abhängig davon, wie sie verwendet werden. (DM00039193.pdf S. 76ff)

Tabelle 53 gibt 400->50 KOhm an, was ich vor einiger Zeit fand, als ich meinen F373 ADC kalibrierte.

Seite 79 zeigt die ADC-Schaltung.

S. 82 gibt eine kurze Beschreibung des Komparator-Pins, gelesen zusammen mit der allgemeinen Beschreibung der analogen Pins oben (S. 73ff)

Legen Sie das parallel zu Ihrem Komparatoreingang und ADC MUX und modellieren Sie es in Spice. Denken Sie daran, die ADC-Kappe regelmäßig auf eine zufällige Spannung aufzuladen.

Was auch immer sonst in der Schaltung und Software passiert, Sie werden ziemlich vernünftige Störungen an Ihrem Komparatoreingang bekommen. SCHLECHTE IDEE, selbst wenn Sie den Stift an einen niederohmigen Folger und eine Entkopplungskappe anschließen (auf der beweglichen Leitung eines Komparatoreingangs????).

Die vom ADC verwendete Kappe ist der Killer. Hoffentlich werden zukünftige Geräte mit internen Followern/Isolatoren sowohl am ADC als auch am Komparator abtasten. Diese sind möglicherweise bereits als undokumentierte Merkmale vorhanden (unwahrscheinlich aufgrund des Mux-Übersprechens).

Wie ich glaube ich, dass wir uns so sehr mit der digitalen Seite der Dinge beschäftigen, dass wir die Grundlagen vergessen, wenn wir zu analog und hybrid wechseln.

Wie misst man kleine Ströme mit einem Strom-Spannungs-Wandler? ist eine Diskussion, die ich gestern mit jemand anderem hatte. Ich kannte die Antwort, weil ich selbst daran gescheitert bin. Selbst bei den besten 3V in 50K erhalten wir einen AVO von 16K/Volt. Wann habe ich zuletzt so ein AVO / Multimeter benutzt?

Abgesehen davon zeigt ein Blick auf die Schaltung des F373, dass ST und ARM anscheinend beabsichtigt hatten, brauchbare Ergebnisse zu erzielen, wenn sowohl Komparator als auch ADC gleichzeitig in einem gemischten Gerät verwendet werden. Die Hinzufügung von Operationsverstärkern in den Serien 150 und 300 gibt einen Hinweis auf die Anforderungen an die Impedanzisolation.

Ich bin mir sicher, dass jemand, der klüger ist als ich, in der Lage sein wird, die Umgebung, für die diese internen Verbindungen entworfen wurden, neu zu konstruieren. Ich würde denken, Automotive oder HVAC .... Wechselrichter und LWL. Die FOC-Bibliothek kann wertvolle Erkenntnisse liefern.

Sofern Sie kein hochgenaues Hochgeschwindigkeitsinstrument bauen, kann eine solche Verwendung ausreichend stabil sein, um praktisch verwendet zu werden (innerhalb der oben genannten Einschränkungen). Es wird sicherlich eine Menge externer Schaltungen einsparen. Strenge Tests bei hohen Geschwindigkeiten sollten dem Schüler wahrscheinlich am besten als Übung überlassen werden (Verführen Sie mich zum Lernen).

Lösung hier .

Sieht so aus, als ob die HAL ADC-Bibliothek für Mehrkanal-DMA etwas kaputt ist. Ich habe auf der STM-Website gepostet, um eine Antwort zu erhalten. Problemumgehungen :-

a) IRQ an beiden ADCs

b) Beide ADC abfragen

c) DMA auf einem Kanal und Polling auf dem anderen

d) Initialisieren Sie die Low-Level-Register manuell

Dies ist noch ein weiterer Vorbehalt gegenüber der Lösung, bei der beide Komparatoren verwendet werden, bis eine bessere Lösung gefunden wird.

Auf einem STM32F4Discovery funktionieren ADC2 und ADC3 problemlos mit HAL. Ich verwende DMA2 Stream1 mit ADC3 und DMA2 Stream2 mit ADC2, es gibt zwei konfigurierte Kanäle auf beiden ADCs. Der DMA-Modus ist kreisförmig. Auch mit HAL auf einem STM32F3 verwende ich vier verschiedene ADCs zusammen mit DMA, 3 Kanäle auf DMA2 und 1 einen DMA1. Was ist falsch, wenn Sie versuchen, Multi-Channel-DMA zu verwenden?
@Bence - Ich habe mit F1, F3 und F4 in einer Mehrkanal-ADC-DMA-Konfiguration gearbeitet - sie verwenden einen anderen Mechanismus zum Hinzufügen von Kanälen zum DMA. Kanäle können in beliebiger Reihenfolge gescannt werden. Die STM32L0-Serie hat eine andere interne Struktur, Kanäle werden automatisch nach Kanalnummer priorisiert. Es gibt verschiedene Strukturen und Aufrufe, um es einzurichten. Jeder Kanal kann in einem Scan nur einmal vorkommen.
Ich verstehe, und diese Prioritätsreihenfolge ist festgelegt?
Vielen Dank für Ihre Antwort und Ihre Bemühungen, direkt zu bestätigen, dass dies funktioniert, sowie für die Suche nach unterstützenden Forschungsergebnissen. Sehr geschätzt!
@Daniel - Vergnügen, hoffe es hilft, es gibt (leider) ein paar Vorbehalte. Sieht so aus, als hätte ST (oder ARM) bei der Dokumentation nicht daran gedacht, es auf diese Weise zu verwenden. Wenn man darüber nachdenkt, ist der Comp ein "always on"-Gerät - 1 Gate - mit schaltbaren Eingangs-Muxen und Ausgängen. Es ist trotz der Einschränkungen ein nettes Peripheriegerät. Danke für die Frage (und Kopfgeld).
@Bence - Ja, Priorität und Reihenfolge sind festgelegt - gehen Sie nach Kanalnummer. Eine großartige Sache ist, dass Sie im Scan überabtasten und mitteln können. siehe RM oben verlinkt, lesen lohnt sich. Wie viele andere bin ich ein bisschen traurig, dass die HAL-Bibliotheken nicht für alle ARM-Geräte transparent sind (und sein können).
Ja, nach meiner begrenzten Erfahrung sind die HALs sehr gut darin, Ihnen zu ermöglichen, in einigen sehr häufigen Situationen über dem Kampf zu bleiben. Alles andere und es ist wieder unten in der Bitmine ...

Das relevanteste Setup, das ich finden konnte, ist das folgende aus Using STM32F05xx analog comparators in application cases , ( AN4112 ), page 4:

Geben Sie hier die Bildbeschreibung ein

Es sagt:

Abbildung 1 zeigt, wie ein Sensorausgang (Temperatursensor, Drucksensor, pyroelektrischer Infrarotdetektor, Fotodiodensensor) an ein STM32F05xx-Gerät in einer analogen Spannungsüberwachungsanwendung mit Komparator 2 (COMP2) angeschlossen wird. COMP2 überwacht die analoge Spannung im Stop-Modus, während der ADC sie im Run-Modus misst.

Hier arbeiten der ADC und der COMP abwechselnd, aber ich denke, beide werden gleichzeitig konfiguriert. Wenn wir im Dokument fortfahren, gibt es ein Blockdiagramm über die COMP-Konfiguration.

Geben Sie hier die Bildbeschreibung ein

Basierend auf diesem Bild denke ich, dass der ADC und der COMP den gleichen ADC-Kanal teilen, der einzige Unterschied ist die Anzahl der aktivierten analogen Schwellenquellen .

Der Text unter Abbildung 5 in der Frage besagt, dass die

Komparatoreingang ist ein ADC-Kanal

möglicherweise identisch mit ADC_IN1.

Zweck dieser ganzen Konfiguration ist es, Strom zu sparen, der COMP löst Zustandsänderungen der MCU aus (STOP <--> RUN). Wenn also der Eingang unter einem bestimmten Schwellenwert liegt, werden die MCU und der ADC abgeschaltet und nur der Komparator funktioniert, und wenn der Eingang über dem Schwellenwert liegt, wachen die MCU und der ADC auf, der ADC misst die Eingangsspannung. Aber wenn der Eingang wieder unter den Schwellenwert fällt, schickt der COMP die MCU in den STOP-Zustand.

Geben Sie hier die Bildbeschreibung ein

Es ist eine Möglichkeit, sie zusammen zu verwenden, ich hoffe, dies würde die Frage voranbringen.

Vielen Dank für Ihre Antwort. Es hat viel zur Diskussion beigetragen. Am Ende habe ich mich entschieden, das Kopfgeld an jemanden zu vergeben, der die Antwort direkt bestätigen konnte, aber das hat meine Zustimmung und wird sehr geschätzt!
Es war eine sehr interessante Frage, an der ich gerne teilnahm. Außerdem stimme ich zu, dass Chris die Belohnung erhalten hat :) . Er hat viel gearbeitet, Zeit und Mühe nicht gescheut.

Ich denke, du solltest im STM-Forum fragen. Es gibt auch (STM32F1) UART RX und TIMx auf demselben Pin, beide Eingänge, aber Sie können sie nicht zusammen verwenden, wie z. B. das Erkennen des Timer-Interrupts für das Ende der Übertragung. Stattdessen muss ein anderer TIMx-Pin parallel geschaltet werden, um die Funktion UART RX und Timer-Interrupt zu haben. Ich denke, es kann immer nur eine Funktion gleichzeitig aktiv sein.
Versuchen Sie, MxCube herunterzuladen und zu sehen, welche Konfiguration erstellt werden kann.

Das ist ein anständiger Punkt. Ich habe es, ich sollte sehen, ob es das erlaubt. Aber selbst wenn nicht, heißt das nicht unbedingt, dass du es nicht kannst :/
Das heißt, ich wünschte, die Dokumentation wäre besser und umfassender, und ich könnte mich auf jede andere Antwort verlassen als "Ich habe es einmal versucht und es hat nicht funktioniert".
@Daniel Sie haben Recht, ich denke, die endgültige Antwort wird Ihnen die MCU selbst geben, wenn Sie es versuchen.