Der H7 hat ja bekanntlich eine ordentliche Verbesserung der ADC Performance bezogen auf den F4. Anyway um das Maximum an ENOB stehen 2 konkurierende möglichkeiten im Raum: Gem. https://www.st.com/resource/en/application_note/dm00628458-getting-started-with-the-stm32h7-series-mcu-16bit-adc-stmicroelectronics.pdf Z.b. beim TQFT144 wird setteling time basiert ein maximaler ADC clk von 12 MHz empfohlen (sektion 3.4). Andererseits hat der ADC eine HW Oversampling Engine und kann wesentlich schneller laufen. Bei einem Signal mit weniger als 100kHz Bandbreite. Ist es besser den ADC auf 50MHz laufen zu lassen und entsprechendes höheres Oversampling zu nutzen oder den ADC clk auf 12 MHz zu setzen bei tieferem Oversampling? Die Idee besteht darin, dass sich das "ringing" während der setteling time über die entsprechenden samples entsprechend kompensieren könnte.
Servus, kenne den H7 jetzt nicht, aber hier gibts noch was speziell für den ADC: https://www.st.com/resource/en/application_note/cd00211314-how-to-get-the-best-adc-accuracy-in-stm32-microcontrollers-stmicroelectronics.pdf Vll. hilft das weiter.
Meine Erfahrung mit den ADCs bei ST ist, dass Rauschen eher das geringere Problem ist, als die vergleichsweise hohe Nichtlinearität. Gerade beim höchstwertigen Bit habe ich da schon große Probleme gehabt. Bezüglich des Rauschens ist es wichtig, dass du einen sehr performanten ADC-Treiber hast, der den Samplekondensator in der notwendigen Zeit ausreichend genau auflädt. Das Einschwingverhalten lässt sich leider nicht durch Oversampling kompensieren, da es zu systematischen Fehlern führt, die stark von den Umgebungsbedingungen abhängen können. Wenn das Einschwingverhalten einen periodischen Anteil hat, wird es noch komplizierter, da diese Schwingung von vielen Faktoren beeinflusst wird und sich stark von Abtastzyklus zu Abtastzyklus unterscheiden kann. Da es sich aber nicht um echtes Rauschen handelt, hilft der Oversampler hier erfahrungsgemäß auch nicht. Schon kleine Änderungen der Umgebungsbedingungen können zu einem deutlich anderen Histogramm führen. Meine Empfehlung ist, wenn die Performance vom ADC wirklich wichtig ist, ist es einfacher und billiger einen entsprechenden externen ADC zu verwenden, der geringere Anforderungen an die Signalkonditionierung stellt und ab Werk bessere Eigenschaften mitbringt. Wenn du unbedingt den internen ADC möglichst optimieren möchtest, dann achte besonders auf einen guten Eingangstreiber und darauf, dass der Einschwingvorgang abgeschlossen ist, bevor die Abtastdauer vorbei ist. Der Aufwand, den du für den Treiber bereit bist zu investieren, legt dann deine minimale Abtastdauer fest und damit wiederum die erreichbare Messdatenrate. Es gibt bei Analog Devices ein Online-Tool, was einem bei der Auslegung des ADC-Treibers hilft. Das hat auch bei mir ganz gut funktioniert. Am Ende war das Rauschen akzeptabel aber der tatsächliche ENOB ließ sich, trotz Oversampling, nicht über die im Datenblatt angegebenen 12 b erhöhen. Außerdem waren die Messfehler leider schon lange von der Nichtlinearität dominiert und nicht mehr vom Rauschen. LG Simon
Lange Sampling Time und Oversampling in der verbleibenden Zeit können gegen das Sample Problem helfen, aber nicht gegen die Nichtlinearität.
Hermann S. schrieb: > Servus, > kenne den H7 jetzt nicht, aber hier gibts noch was speziell für den ADC: > https://www.st.com/resource/en/application_note/cd00211314-how-to-get-the-best-adc-accuracy-in-stm32-microcontrollers-stmicroelectronics.pdf > > Vll. hilft das weiter. Danke, hmmm gem diesen Daten benötigt bei: RAIN = 1 kΩ, CAIN/CPCB = 2 nF, VREF+ = 2 V and FADC = 20 MHz 16 bit 0.5 LSB 67.1ns. Das wären bei 2.5 Zyklen Sample und 36MHz ADC erreicht, die Konvertierung benötigt dann 16.5 Zyklen für 0.5 LSB. Also folglich sollten ca 1.8MSPs pro ADC möglich sein. Wieso ist der im bsp genannte RAIN = 1 kΩ so hoch? Am package/bonding kann ja kaum 1kOhm liegen, hat der S/H Transistor einen solch hohen RDSon? Das Nichtlinearitätsproblem hat ST mit dem H7 auch erkannt/ist dieses angegangen. Die kalibration sollte beim H7 anders als bei F4 etc. nicht nur den offset sondern ebenfalls die Nichtlinearitäten kompensieren. So zumindest die Theorie, wie guts funktioniert ist eine andere Frage. Ich mag eigentlich einen internen ADC. Ist halt irgendiwe cooler als extern :P. Naja und Kalibrierung ist auch einfacher. Zumindest von den theoretischen Daten her ist der H7 ADC eigentlich genial, das P/L ist besser als bei manchen externen ADC und bekommt kostenlos noch einen uC dazu.
Der ADC arbeitet mit geschalteten Kondensatoren und einigen Schaltern im Analogpfad, z.b. zur Kanalauswahl. Beim Samplen muss der Kondensator auf besser als ein LSB geladen sein, sonst sampelst Du falsch. Aus tau = R * C, also den internen (Sample) Kondensator und R = externe plus interne Widerständen ergibt sich obige Forderung. Meist wird der Eingang aber von einem OP getrieben. Der mag diese plötzliche Stromänderung beim Aufladen meist nicht und liefert den nötigen Strom nur nach einem Einschwingvorgang. Mit längeren Samplezeiten läßt Du dem Einschwingvorgang mehr Zeit.
Uwe Bonnes schrieb: > Der ADC arbeitet mit geschalteten Kondensatoren und einigen Schaltern im > Analogpfad, z.b. zur Kanalauswahl. Beim Samplen muss der Kondensator auf > besser als ein LSB geladen sein, sonst sampelst Du falsch. Aus tau = R * > C, also den internen (Sample) Kondensator und R = externe plus interne > Widerständen ergibt sich obige Forderung. Meist wird der Eingang aber > von einem OP getrieben. Der mag diese plötzliche Stromänderung beim > Aufladen meist nicht und liefert den nötigen Strom nur nach einem > Einschwingvorgang. Mit längeren Samplezeiten läßt Du dem > Einschwingvorgang mehr Zeit. Soweit verstanden Danke. Es scheint so zu sein, dass beim H7 das Analoge frontend der limitierende faktor ist, eigentlich sehr schade... Nicht dass ich ST gross kritiseren möchte -zu dem Preis ist der H7 genial-. Etwas mehr platz auf dem Die für eine bessere Analoge aufbereitung/ggf. bufferung wäre wünschenswert. Anyway beim oben genannten RAIN = 1 kΩ ist die Signalquelle (opamp oder wie der auch immer getrieben wird wohl kaum limitierend). 1k Ohm ist massiv, und dass die Gehäuseform (BGA vs TQFP) ebenfalls so einen grossen Einfluss haben soll ist für mich ebenfalls schwer nachzuvollziehen. nun die Zeitberechnung gem Tau bei 50uV delta und 1kOhm (!) - naja die 1kOhm sind halt schief...
Ich glaube du bringst gerade etwas durcheinander. Das Beispiel aus der Application-Note ist mit einem Quellwiderstand von 1 kOhm. Im Datenblatt vom H725 stehen ab S. 197 die wichtigen Werte. In Tab. 85 ist angegeben, dass bei einem Quellwiderstand von 47 Ohm eine Abtastdauer von 70 ns ausreichen soll. In der Praxis wird es wahrscheinlich eher etwas mehr sein aber mit einem guten Treiber kann man ja auch den Quellwiderstand weiter reduzieren. Man kann mit der angegebenen Haltekapazität dann grob abschätzen wie groß der Widerstand des Abtastschalters sein mag und damit dann seine eigenen Berechnungen anstellen.
Simon D. schrieb: > Ich glaube du bringst gerade etwas durcheinander. Ja anscheinend, danke. Simon D. schrieb: > Das Beispiel aus der > Application-Note ist mit einem Quellwiderstand von 1 kOhm. Im Datenblatt > vom H725 stehen ab S. 197 die wichtigen Werte. Sehr gut, da steht ja auch ein max 50Ohm; weshalb sie im AN einen absurden wert von 1kOhm verwenden ist mir schleierhaft. Anyway denke SMP von 2.5 (oder mehr) wird Sinnvoll sein, dieser zusätzliche Zyklus beeinträchtigt die samplerate nicht erheblich, entschärft jedoch dieses Problem. Haben eigentlich die Boost bits ausser dem Stromverbrauch keine negativen Auswirkungen?
Simon D. schrieb: > Bezüglich des Rauschens ist es wichtig, dass du einen sehr performanten > ADC-Treiber hast, der den Samplekondensator in der notwendigen Zeit > ausreichend genau auflädt. Dieses!!! Schön das Signal mit nem kräftigen Buffer verstärken und dann in den ADC. Der H7 hat ja cpu power ohne Ende und ne FPU deshalb einfach schnell samplen. So schnell du kannst und die ganze HF Schlotze mit nem iir oder über fft brickwall weg filtern. Da faltet sich dann nichts mehr runter und du hast weniger Rauschen im eigentlichen nutzsignal, und sparst die nen analogen anti alias filter
Low impedance source schrieb: > Dieses!!! Schön das Signal mit nem kräftigen Buffer verstärken und dann > in den ADC. > > Der H7 hat ja cpu power ohne Ende und ne FPU deshalb einfach schnell > samplen. So schnell du kannst und die ganze HF Schlotze mit nem iir oder > über fft brickwall weg filtern. > Da faltet sich dann nichts mehr runter und du hast weniger Rauschen im > eigentlichen nutzsignal, und sparst die nen analogen anti alias filter Ja soweit so gut. Anyway die Frage ist: Wie konfiguriere ich den ADC ab besten, dass er von sich aus das beste ENOB bringt. Da gibts etliche Möglichkeiten z.B. Boost bits, ADC clock, SMP etc. Lohnt es sich den ADC schneller laufen zu lassen und den internen HW oversampler zu nutzen. Oder doch besser langsamer und präziser? Annahmen: 1. Signal Quelle ist ordentlich am pin des H7. 2. Das Signal ist ein "general purpose signal" unter 100kHz Bandbreite
Ich nehme an dieses Dokument https://www.st.com/resource/en/application_note/cd00211314-how-to-get-the-best-adc-accuracy-in-stm32-microcontrollers-stmicroelectronics.pdf hast du schon gelesen und verstanden. Hier wird klar averaging empfohlen das sehe ich auch so wenn Strom egal ist schneller samplen. Wenn du an der analogen Seite nen AA Filter einbauen kannst mach das, das averaging hilft aber auch gegen aliasing sehr gut. Wenn die Quell-Impedanz klein genug ist bring länger samplen keinen Vorteil. Wenn du die Phase des signals auswerten willst ist bei 100 kHz die sampleclock schon nicht mehr egal.
ST M. schrieb: > Das Signal ist ein "general purpose signal" unter 100kHz Bandbreite Das ist komplett nichts sagend. Steuert das Signal den ADC total aus? Wenn nein warum nicht? Kann man das Signal entsprechend verstärken. Wie sieht das Signal im Spektralbereich aus? Sind die Linien scharf, wenns weiche gibt. Interessiert nur die Amplitude oder auch die Phase. Gibt's nen trigger der das sampling startet.
Low impedance source schrieb: > Steuert das Signal den ADC total aus? Wenn nein warum nicht? Kann man > das Signal entsprechend verstärken. Ach ne... Ok besser formuliert: Das general purpose Signal liegt nach bester Elektrotechnikpraxis am pin an. AA filter ist auch vorhanden. Low impedance source schrieb: > Wie sieht das Signal im Spektralbereich aus? DC-100kHz ist die Bandbreite von intresse. Low impedance source schrieb: > Interessiert nur die Amplitude oder auch die Phase. > Gibt's nen trigger der das sampling startet. Einfache "langsame" Signale mit allem mögliche was in diesem frequenzbereich interessieren kann. Bitte jetzt nicht ein bsp. suchen wos knapp wird wie phase von 100kHz signal lässt sich nicht präzise feststellen bei zu grossem oversampling etc. Sonnst halt spez ändern auf einige dutzend kHz Bandbreite. Low impedance source schrieb: > Wenn die Quell-Impedanz klein genug ist bring länger samplen keinen > Vorteil. Das ist eben die Frage. Also Pin-ADC scheint weniger reibuzngslos zu sein als man evtl. erwartet. Daher auch aufs package bezogenen empfohlenen max ADC frequenzen. Andererseits hast du richtig bemerkt: Low impedance source schrieb: > Hier wird klar averaging empfohlen das sehe ich auch so wenn Strom egal > ist schneller samplen. Die frage ist nun welche Einstellung bringt den höchsten ENOB. Der STM wird am Netz betrieben als Stromverbrauch egal
Die schaltung ist differentiel und der adc ist im direct sampling mode? Als reference nimmst du die interne bandgap Referenz? Hier gibt's ne Tabelle mit der maximalen samplingfreq je packege und resolution. https://www.st.com/resource/en/application_note/an5354-getting-started-with-the-stm32h7-series-mcu-16bit-adc-stmicroelectronics.pdf Quelle des Übels scheint ja der Strom des Sar adc an VREF zu sein. Deshalb würde ich die samplingzeit entsprechend der Tabelle wählen. Du wirst trozdem noch 1 bis 2 mega samples/s schaffen. Die würde ich dann einfach automatisch averagen lassen z. B. 8 samples zusammen. Hast du das rauschen deines eingangs mal gemessen? Was macht die CPU während der Messungen? Powerdown? Hast du ne AC oder DC Referenz die gut genug ist um den ADC zu testen?
Low impedance source schrieb: > Hast du das rauschen deines eingangs mal gemessen? Was macht die CPU > während der Messungen? Powerdown? > > Hast du ne AC oder DC Referenz die gut genug ist um den ADC zu testen? Das empfehle ich auch. Meine Erfahrung ist, dass auch bei guten ADCs eigene Messungen deutlich aussagekräftiger sind als die Angaben im Datenblatt. Einfach mit einer rauscharmen Quelle, das kann im einfachsten Fall ein RC-Tiefpassfilter mit einem dicken Elko sein das aus einem Labornetzgerät gespeist wird, den ADC bei verschiedenen Gleichspannungen messen lassen, die Daten an den PC übertragen und dann mal in Matlab, Octave, Python, etc. vernünftig auswerten. Aus dem resultierenden Amplitudendichtspektrum kann man dann schon sehr gute Aussagen darüber treffen an welchen Stellen der Messkette noch Vierbesserungspotenzial ist. Grundsätzliche Sachen wurden oben ja schon genannt: erst starker Treiber, dann gutes AA-Filter (wenn Kerkos verwendet werden, dann nur C0G) mit möglichst knapper Grenzfrequenz, Filterung (das Mittelwertfilter in Hardware ist die schlechteste Option aber dafür unglaublich billig). LG Simon
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.