Wenn wir kontinuierliche Daten erfassen und einem digitalen Wert zuordnen wollten, müssen wir ADCs verwenden.
Aber es gibt ein Problem. Wenn wir mehrere Pins als analoge Eingänge festlegen, welche Kanäle entsprechen den einzelnen Pins im analogen Modus?
In den Steuerregistern haben wir keinen Pin, der bestimmt, auf welchem Pin und auf welchem Kanal auf ADC zu erfassen ist.
Ich habe das Referenzhandbuch gelesen, aber es sagt, konfigurieren Sie einfach einen Pin an einem Port im analogen Modus. Wenn wir jedoch mehrere analoge Eingänge haben und mehrere ADC-Kanäle verwenden möchten, gibt es einige Schwierigkeiten damit und mit der Zuordnung zwischen analogen Eingangspins und ADC-Kanälen.
Vollständiges Datenblatt für die gesamte STM32F40x-Familie hier . Es gibt Möglichkeiten, den ADC so zu konfigurieren, dass er automatisch Pins durchläuft, die als ADC-Eingänge konfiguriert sind, und den Eingang darauf liest. Sie können auch mehrere einzelne Konvertierungen manuell durchführen, also prüfen Sie ADC1, konfigurieren Sie ADC für einen anderen Kanal neu, prüfen Sie ADC2,... Lesen Sie mehr im mitgelieferten Datenblatt oder erfahren Sie, wie Sie Tools wie CUBE MX verwenden, die die Konfiguration für Sie übernehmen können. Sie können auch bereits vorhandene HAL-Bibliotheken verwenden, anstatt Ihre eigenen Funktionen zu schreiben, um ADC in verschiedenen Modi zu lesen. Die Kombination von HAL und CUBE MX würde ich empfehlen, da Sie nur davon profitieren, wenn Sie wissen, wie man mit ihnen arbeitet, und sie Ihr Leben viel einfacher machen.
Ich füge meine zwei Cent zu Daniels Antwort hinzu. Ich würde empfehlen, den folgenden Anwendungshinweis zu lesen
AN3116 "STM32 ADC-Modi und ihre Anwendungen"
für die Erklärung, wie die Mehrkanal-ADC-Konvertierung funktioniert. Insbesondere Abschnitt 1.4 „Kontinuierlicher Konvertierungsmodus Mehrkanal (Scan)“ wäre für Sie am interessantesten. Wenn Sie das verstehen, lesen Sie
AN4031 „Verwendung des DMA-Controllers der Serien STM32F2, STM32F4 und STM32F7“
weil DMA im Zirkularmodus der einfachste Weg ist, um Scan-Ergebnisse in Ihre Anwendung zu bekommen, ohne CPU-Zyklen zu verschwenden.
Der Rest ist einfach - Sie geben an, welche Kanäle Sie in welcher Reihenfolge abtasten möchten, und weisen dann DMA an, die Ergebnisse in Ihr eigenes Array von 16-Bit-Ganzzahlen zu übertragen. Die konvertierte Spannung an den entsprechenden Pins erscheint dann "magisch" in Ihrem Array.
Elliot Alderson
Nur ich
Ahorn