Forum: Mikrocontroller und Digitale Elektronik STM32H7 ADC optimierung


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Diode (Gast)


Lesenswert?

Hallo zusammen

Ich habe etwas verwirrung bezüglich der ADCs beim H7.

Was ich bisher gem. ST Doku herausgefunden habe:

1. full range nutzen
2. stabiler quarz clk
3. bga version nutzen nicht tqfp
4. fadc max 20mhz, boost aus
5. adc convertierung mit timer starten
6. Vanalog sowie Vref sauber versorgen (+ klassische layoutempfehlungen)
7. differentiel anstatt single ended
8. wenn alles geklappt hat, sollte 16 bit mit 0.5LSB error mit bis zu 
800kSps pro ADC möglich sein.

Von intresse sind hier insbesondere die SW seitigen Aspekte. 
Insbesondere die ADC Einstellungen (triggerung per timer?), boost modus, 
conversion timing etc, s&h timing etc. offset calibration etc sind mir 
nicht so klar. Kennt sich hier diesbezüglich jemand aus?

von Falk B. (falk)


Lesenswert?

Diode schrieb:
> Ich habe etwas verwirrung bezüglich der ADCs beim H7.
>
> Was ich bisher gem. ST Doku herausgefunden habe:
>
> 1. full range nutzen
> 2. stabiler quarz clk
> 3. bga version nutzen nicht tqfp
> 4. fadc max 20mhz, boost aus
> 5. adc convertierung mit timer starten
> 6. Vanalog sowie Vref sauber versorgen (+ klassische layoutempfehlungen)
> 7. differentiel anstatt single ended
> 8. wenn alles geklappt hat, sollte 16 bit mit 0.5LSB error mit bis zu
> 800kSps pro ADC möglich sein.

Na, das glaub ich erst, wenn das jemand mit gescheiten Test bewiesen 
hat!
Sowas mit einem SEHR guten, einzelnen ADC hinzukriegen ist schon SEHR 
sportlich bis unmöglich! Das Ganze integriert in einem Mikrocontroller 
bedeutet noch viel mehr Aufwand!

von Diode (Gast)


Lesenswert?

Bin auch weit davon entfernt. Kämpfe erheblich mit dem Offset:

Single ended ca 1000 (bei 64k range)
Diff ca 500

Hatte zuerst das devboard im verdacht. (Aber alle meine Versuche die auf 
ein layoutproblem deuten würden blieben erfolglos (keine Auswirkungen).

Kann das sein, dass dieser 16 bit adc bereits 10bit offset hat?!?
Ich kenne offsetkompensation eher als nice to have; bei so einem 
massiven offset wäre dies wohl ein must have damits überhaupt brauchbar 
wird.

von Falk B. (falk)


Lesenswert?

Diode schrieb:
> Bin auch weit davon entfernt. Kämpfe erheblich mit dem Offset:
>
> Single ended ca 1000 (bei 64k range)
> Diff ca 500

Klingt jetzt nicht sooo dramatisch. Kann man kalibrieren.

> Hatte zuerst das devboard im verdacht. (Aber alle meine Versuche die auf
> ein layoutproblem deuten würden blieben erfolglos (keine Auswirkungen).
>
> Kann das sein, dass dieser 16 bit adc bereits 10bit offset hat?!?

Kann sein, muss nicht.

> Ich kenne offsetkompensation eher als nice to have; bei so einem
> massiven offset wäre dies wohl ein must have damits überhaupt brauchbar
> wird.

Kann sein.

von udok (Gast)


Lesenswert?

Diode schrieb:
> 8. wenn alles geklappt hat, sollte 16 bit mit 0.5LSB error mit bis zu
> 800kSps pro ADC möglich sein.

Datenblatt gelesen?  Nein?
ENOB = 12.2 Bits unter best case Bedingungen.

von Diode (Gast)


Lesenswert?

Falk B. schrieb:
> Klingt jetzt nicht sooo dramatisch. Kann man kalibrieren.

kann ich aus der Aussage schliessen, dass dies normal bei diesem ADC 
ist? (Beruhigt und beunruhigt mich gleichzeitig)

Falls ja:
Danke erstmal!

1. Wie kalibrieren? (genügt lediglich beim powerup bezüglich interner 
spannungen? ist ein periodischer refresh nötig?)

2. Gibts evtl eine einfache externe SPI ADC alternative die ohne 
kalibration etc. gleich auf anhieb ca 14 bit genau die werte liefert? 
(Bandbreite Signal max 100kHz)

von Falk B. (falk)


Lesenswert?

Diode schrieb:
>> Klingt jetzt nicht sooo dramatisch. Kann man kalibrieren.
>
> kann ich aus der Aussage schliessen, dass dies normal bei diesem ADC
> ist? (Beruhigt und beunruhigt mich gleichzeitig)

Keine Ahung, ich kenn mich mit dem Ding nicht aus.

> 1. Wie kalibrieren? (genügt lediglich beim powerup bezüglich interner
> spannungen?

Vermutlich.

>ist ein periodischer refresh nötig?)

Vermutlich nicht.

von Diode (Gast)


Lesenswert?

HAL_ADCEx_Calibration_Start macht den Job, danach habe ich bei 
stichproben max 4.5mV Abweichungen gefunden single ended.

Naja nicht perfekt aber ok

Wichtig: Offset und linearity kalibrieren lassen

von m.n. (Gast)


Lesenswert?

Diode schrieb:
> 2. Gibts evtl eine einfache externe SPI ADC alternative die ohne
> kalibration etc. gleich auf anhieb ca 14 bit genau die werte liefert?
> (Bandbreite Signal max 100kHz)

LTC1864 - allerdings mit 5 V.
Es wird auch neuere Typen geben.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.