STM32F0x1 Komparator (COMP) und ADC gleichzeitig am selben Pin?


8

Ich stelle ein Projekt zusammen, das die Komparatorperipherie des STM32F051-Mikrocontrollers nutzt. Ich habe in der Dokumentation gelesen, dass der Eingangspin für Analog konfiguriert werden muss, damit der Komparator funktioniert. Dies ist das gleiche Setup, wenn Sie den Pin als ADC-Eingang verwenden.

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

Gibt es Fallstricke bei dieser Konfiguration, 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 ein Aus AN4232: Erste Schritte mit analogen Komparatoren für die STM32F3-Serie


1
Könnten Sie auf die entsprechende Dokumentation verlinken? Das Datenblatt, das ich gefunden habe, erwähnt keine Komparatoren, aber dies ist eine interessante Frage
David

Sicherlich wollte ich STM32F0 * 5 * 1 ...
Daniel

Aus meiner Erfahrung sollte es machbar sein, aber ich kann nicht sicher sagen und ich bezweifle, dass Sie diese Informationen in offiziellen Quellen finden werden. Das Beste, was Sie IMO tun können, ist zu experimentieren - holen Sie sich ein STM32F07x-Nucleo-Board, das recht günstig ist (~ 10 USD), und testen Sie es aus. Oder besorgen Sie sich ein F051 Discovery Board, sie sind nicht viel teurer. ST verwendet dieselben peripheren IP-Kerne in verschiedenen MCUs, sodass Sie erwarten können, dass sie sich zwischen F07x und F051 ähnlich verhalten.
Jan Dorniak

@ JanDorniak Ja, das wäre der beste Weg. Leider werde ich eine lange Zeit (mehrere Tage des Herumspielens) brauchen, 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

1
@ 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, weil sie über einen Pin verbunden waren, den ich als digitalen Ausgang verwenden wollte. Hat nicht funktioniert, zum Glück hatte ich ein paar freie Pins auf der MCU. Wenn Sie es untersuchen möchten, war es PA4 auf L053
Jan Dorniak

Antworten:


4

Dies funktioniert, Sie erhalten Zahlen zurück, sowie Interrupts. Ich habe es ausgecheckt, Download von .

Die Genauigkeit und Fehlerhaftigkeit sind noch unbestimmt. Wird aber in den Appnotes gut beschrieben, wie von @Bence Kaulics in diesem Thread angegeben (weitere Ergebnisse finden Sie in results.txt).

Ich glaube, dass es aus 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.

Dies funktioniert auch mit dem DAC, dh Sie können das Ganze intern mit dem DAC oder extern mit dem DAC und einigen Widerständen einrichten.

Wenn Sie nur die Schaltung betrachten, verwenden Sie den ADC parallel zum Komparator, im Wesentlichen einem Verstärker. Wie wir wissen, handelt es sich um Geräte mit sehr hoher Impedanz und großer Verstärkung. Pannen sind nicht unser Freund.

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

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

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

Tabelle 53 gibt 400-> 50 kOhm an, was ich vor einiger Zeit bei der Kalibrierung meines F373 ADC festgestellt habe.

Seite 79 zeigt die ADC-Schaltung.

S. 82 enthält eine kurze Beschreibung des Komparatorstifts, die zusammen mit der obigen allgemeinen Beschreibung der analogen Stifte gelesen wurde (S. 73ff).

Stellen Sie dies parallel zu Ihrem Komparatoreingang und ADC MUX und modellieren Sie es in Gewürzen. 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, auch wenn Sie den Pin an einen niederohmigen Mitnehmer und eine Entkopplungskappe anschließen (auf der beweglichen Leitung eines Komparatoreingangs ????).

Die vom ADC verwendete Kappe ist der Mörder. Hoffentlich werden zukünftige Geräte mit internen Followern / Isolatoren sowohl am ADC als auch am Komparator testen. Diese können bereits als undokumentierte Merkmale vorhanden sein (unwahrscheinlich aufgrund des Mux-Übersprechens).

Ich denke, wir beschäftigen uns wie ich so sehr mit der digitalen Seite der Dinge, dass wir beim Übergang zu Analog und Hybrid die Grundlagen vergessen.

Wie werden kleine Ströme mit einem Strom-Spannungs-Wandler gemessen? ist eine Diskussion, die ich gestern mit jemand anderem geführt habe. Ich kannte die Antwort, weil ich selbst schlecht drauf war. Selbst bei den besten 3V in 50K erhalten wir einen AVO von 16K / Volt. Wann habe ich zuletzt ein solches AVO / Multimeter verwendet?

Ein Blick auf die Schaltung des F373 zeigt jedoch, dass ST und ARM offenbar beabsichtigt haben, 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 sicher, dass jemand, der klüger ist als ich, die Umgebung, für die diese internen Verbindungen entwickelt wurden, neu konstruieren kann. Ich würde denken, Automobil oder HLK .... Wechselrichter und FOC. Die FOC-Bibliothek kann wertvolle Erkenntnisse liefern.

Sofern Sie kein hochpräzises Hochgeschwindigkeitsinstrument bauen, kann eine solche Verwendung ausreichend stabil sein, um praktisch verwendet zu werden (innerhalb der obigen Einschränkungen). Es wird sicherlich eine Menge externer Schaltkreise sparen. Strenge Tests bei hohen Geschwindigkeiten sollten dem Schüler wahrscheinlich am besten als Übung überlassen werden (Versuch mich zu lernen).

Lösung hier .

Es 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 beide ADCs

b) Fragen Sie beide ADC ab

c) DMA einen Kanal und den anderen abfragen

d) Initialisieren Sie die Low-Level-Register manuell

Dies ist eine weitere Einschränkung 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. Auf beiden ADCs sind zwei Kanäle konfiguriert. Der DMA-Modus ist kreisförmig. Auch mit HAL auf einem STM32F3 verwende ich vier verschiedene ADCs zusammen mit DMA, 3 Kanal auf DMA2 und 1 einen DMA1. Was ist falsch, wenn Sie versuchen, Multi-Channl-DMA zu verwenden?
Bence Kaulics

@Bence - Ich habe mit F1, F3 und F4 in der 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 nur einmal in einem Scan angezeigt werden.
ChrisR

Ich verstehe, und diese Prioritätsreihenfolge ist festgelegt?
Bence Kaulics

Vielen Dank für Ihre Antwort und die Bemühungen, direkt zu bestätigen, dass dies funktioniert, und unterstützende Forschungsergebnisse zu finden. Sehr geschätzt!
Daniel

1
@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, es lohnt sich zu lesen. Wie viele andere bin ich ein bisschen traurig, dass die HAL-Bibliotheken nicht für alle ARM-Geräte transparent sind (und nicht transparent sein können).
ChrisR

4

Das relevanteste Setup, das ich finden konnte, ist das folgende aus der Verwendung von STM32F05xx-Analogkomparatoren in Anwendungsfällen ( AN4112 ), Seite 4:

Geben Sie hier die Bildbeschreibung ein

Es sagt:

Abbildung 1 zeigt, wie ein Sensorausgang (Temperatursensor, Drucksensor, pyroelektrischer Infrarotdetektor, Fotodiodensensor) mit einem STM32F05xx-Gerät in einer analogen Spannungsüberwachungsanwendung unter Verwendung des Komparators 2 (COMP2) verbunden wird. COMP2 überwacht die analoge Spannung im Stoppmodus, während der ADC sie im Betriebsmodus misst.

Hier arbeiten ADC und COMP abwechselnd, aber ich denke, beide sind 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 denselben ADC-Kanal teilen. Der einzige Unterschied besteht in der Anzahl der aktivierten analogen Schwellenwertquellen .

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

Der Komparator-Eingang ist ein ADC-Kanal

möglicherweise dasselbe wie ADC_IN1.

Der Zweck dieser gesamten Konfiguration besteht darin, Strom zu sparen. Der COMP löst Statusänderungen der MCU aus (STOP <--> RUN). Wenn der Eingang unter einem bestimmten Schwellenwert liegt, werden MCU und ADC abgeschaltet und nur der Komparator arbeitet. Wenn der Eingang über dem Schwellenwert liegt, wecken MCU und ADC den ADC und messen die Eingangsspannung. Wenn der Eingang jedoch wieder unter den Schwellenwert fällt, sendet 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 vorantreiben.


Vielen Dank für Ihre Antwort. Es hat ziemlich viel zur Diskussion beigetragen. Am Ende habe ich beschlossen, das Kopfgeld an jemanden zu vergeben, der die Antwort direkt bestätigen kann, aber das hat meine Zustimmung und wird sehr geschätzt!
Daniel

Es war eine sehr interessante Frage, ich war froh, daran teilnehmen zu können. Außerdem stimme ich zu, dass Chris die Belohnung erhalten hat :). Er hat viel gearbeitet, ohne Zeit und Mühe zu sparen.
Bence Kaulics

3

Ich denke, Sie sollten im STM-Forum fragen. Es gibt auch (STM32F1) UART RX und TIMx am selben Pin, beide Eingänge, aber Sie können sie nicht zusammen verwenden, wie z. B. das Erkennen des Interrupt-Timers am Ende der Übertragung. Stattdessen muss ein anderer TIMx-Pin parallel geschaltet werden, damit die Funktion UART RX und Timer unterbrochen werden. Ich denke, nur eine Funktion kann gleichzeitig aktiv sein.
Versuchen Sie, MxCube herunterzuladen und sehen Sie, welche Konfiguration erstellt werden kann.


Das ist ein anständiger Punkt. Ich habe es, ich sollte sehen, ob es es erlaubt. Aber selbst wenn dies nicht der Fall ist, heißt das nicht unbedingt, dass Sie nicht: /
Daniel

Das heißt, ich wünschte, die Dokumentation wäre besser und umfassender, und ich könnte auf jede andere Antwort vertrauen als "Ich habe es einmal versucht und es hat nicht funktioniert"
Daniel

@ Daniel Du hast recht, ich denke die endgültige Antwort wird dir die MCU selbst geben, wenn du es versuchst.
Marko Buršič
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.