Hallo,
ich habe derzeit nur
// GPIO_Digital_Input(@GPIOA_BASE, _GPIO_PINMASK_0);
GPIO_Analog_Input(@GPIOA_BASE, _GPIO_PINMASK_0);
Muss ich die PULL UP/DOWN Widerstädne auch noch ansteuern, oder sollte
die per Default disabled sein?
Ich schalte sie vorsichtshalber auf NOPULL, das sollte aber nicht
relevant sein, sobald du auf die Alternate Function umschaltest.
Schwankende ADC Werte sind entweder ein Zeichen für eine zu hochohmige
Quelle oder unsauberer Versorgung/AREF.
Wenn dein Chip keinen eigenen AREF Eingang hat, bleibt dir nur die
saubere Abblockung des MC und das Studium der STM32 Errata.
Ist ein bekanntes Problem bei den internen ADC.
Thomas schrieb:> Hallo,> ich habe derzeit nur>> // GPIO_Digital_Input(@GPIOA_BASE, _GPIO_PINMASK_0);> GPIO_Analog_Input(@GPIOA_BASE, _GPIO_PINMASK_0);>> Muss ich die PULL UP/DOWN Widerstädne auch noch ansteuern, oder sollte> die per Default disabled sein?
Falls du mit einem Discovery Board testest, vergiss es.
Ich hatte das vor geraumer Zeit mal etwas intensiver untersucht und das
Ergebnis war erschreckend: von den eingekauften 12 Bits waren im
Durchschnitt 9-10 stabil. Ohne Moving-Average Filter sahen die Meßwerte
aus als wenn man einen Zitteral streichelt.
Norbert schrieb:> Ergebnis war erschreckend: von den eingekauften 12 Bits waren im> Durchschnitt 9-10 stabil. Ohne Moving-Average Filter sahen die Meßwerte> aus als wenn man einen Zitteral streichelt.
Da bist Du leider genau da, was man beim F4 erwarten darf.
Es gibt dann noch Tipps vom Hersteller, wie man das verbessern kann.
Hintergrund: auf dem Chip ist Logik, die gelegentlich pulsweise viel
Strom zieht und damit den Messwert verbiegt. Da hilft auch die äußere
Beschaltung und das Layout nicht viel bis garnichts.
Der Hersteller empfiehlt, die Messwerte auf Ausreißer zu untersuchen und
diese wegzuwerfen. Das ist kein Problem, falls man DC misst.
Das eine MegaSample/s gibt es aber ohne Nachbearbeitung nur mit 8..9bit.
Siehe AN4073.
Unter diesem Problem leiden viele Mixed-Signal-Chips.
Beim AVR wird z.B. empfohlen die CPU während der Wandlung in den Sleep
zu schicken - und das schon bei 10bit und ein paar KiloSamples/s.
Mein Lieblingsbeispiel - weil ich damals ein Dutzend Siliziumrevisionen
mitgemacht und einige Einträge im Errata Sheet mit verursacht habe - ist
der TMS320F2812. Da haben wir im 12bit Wandler bis zu 200 LSB Offset
gesehen. 200/4096 :) War zum Glück kein Beinbruch, weil wir beim Sonar
eine KKF mit einer mittelwertfreien Funktion gemacht haben.
Fazit: bei vielen Mikrocontrollern muss für schnelle,präzise Messungen
ein externer ADC rangeschraubt werden. Beim STM32F4 dank DMA, SPI, FSMC
etc. kein Problem, kostet "nur".
von wieviel Schwankungen reden wir denn hier ?!?!
Mit dem ATMEGA UND XMEGA hatte ich hier nie nennenswerte Probleme...
Ich setze den STM32F205 ein.
Mit den größeren F4 hatte ich keine Probleme..daher hoffte ich bisslang
das es mein Fehler ist,.
Beim Atmega lag ich bei 1-2 Digit, was ich super finde
Marcus H. schrieb:> Norbert schrieb:>>> Ergebnis war erschreckend: von den eingekauften 12 Bits waren im>> Durchschnitt 9-10 stabil. Ohne Moving-Average Filter sahen die Meßwerte>> aus als wenn man einen Zitteral streichelt.> Da bist Du leider genau da, was man beim F4 erwarten darf.> Es gibt dann noch Tipps vom Hersteller, wie man das verbessern kann.
STM32F205/7 und STM32F405/7 sind da sehr problematisch.
F401/F411/F42x/F43x/F446 sind da deutlich besser, wenn man den Hinweisen
der App-Not folgte. Auf einem F401 laeuft gerade eine Messung von einem
510 Ohm Widerstand in Serie mit 1000 Ohm. Der 510 Ohm Widerstand
simuliert einen PT1000 und entsprechend ausgewertet(*) ergibt es
folgendes:
2 -123.120
7 -123.119
11 -123.118
49 -123.117
70 -123.116
164 -123.115
383 -123.114
455 -123.113
832 -123.112
1121 -123.111
1289 -123.110
1034 -123.109
1307 -123.108
1084 -123.107
856 -123.106
468 -123.105
433 -123.104
217 -123.103
129 -123.102
80 -123.101
38 -123.100
15 -123.099
4 -123.098
2 -123.097
1 -123.096
So sehr sieht das nicht nach Zitterall aus...
Auswertung: Die Reihenschaltung wird fuer 200 us an VDDA gelegt, dann
werden 8 Messungen der Spannung am Messwiderstand gemacht und die
Spannung an der Serienschaltung dann wieder abgeschaltet. Das ganze wird
32 mal pro Sekunde gemacht und aufsummiert und dann zuerst nach Rx und
dann nach TX ausgewertet.
Uwe Bonnes schrieb:> Auf einem F401 laeuft gerade eine Messung von einem> 510 Ohm Widerstand in Serie mit 1000 Ohm.
Das ist aber auch schön niederohmig und reduziert zumindest die
Einflüsse der internen digitalen Störungen auf den S&H Teil.
Um mal ein bisschen mit Audio rumzuspielen, habe ich ein paar Opamp
Ausgänge eines Mischpultes über 100 Ohm auf 2 Kanäle des F407 geschickt
und auch das klingt gar nicht so schlecht, allerdings 'sirrt' der MC
doch hörbar auf den ADC durch. Als Ausgabe den CS43L22 des DiscoF407
Boards und auch einen TDA1543 auf I2S2. Ich nehme nun den CS5331 für
Audio Input.
Nicht umsonst empfiehlt STM ja ein Averaging - sie sind sich der
Problematik der Mixed Signal Chips durchaus bewusst. Viele Bits und
störarm geht nur mit externen ADC.
Es geht mir jetzt nicht um 1-3 Digits..ich habe hier ca 30-60 die
schaukeln..daher eher so allgemein gefragt..ob der STM32F205 an PortA0
hier auch von dem problem betroffen ist.
Hallo Thomas,
danke für die Mitteilung, dass Du einen F2 (welchen?) verwendest.
Ich habe bisher keinen F2/F3 verwendet.
Aber die bereits erwähnte AN4073 bezieht sich auf F2/F4. Mal
reingeschaut?
Der interne RC-Oszillator hat üblicherweise einen größeren
Frequenzfehler und Jitter als Quarz-Oszillatoren. Wenn das für Dich kein
Problem ist, ist das für den ADC wohl auch kein zusätzliches Problem.
Siehe F2-Datenblatt.
Grüße,
marcus
Auf dem F4 Discovery brauchst kannst du die ADC messung eh vergessen,
die Spannung für VDDA und VRef wird aus einem 3.3V Spannungsregler mit
nachgeschalteter Diode versorgt, hat also zwischen 2.9V und 3.0V, da
muss es die Schwankungen geben
Martina schrieb:> von wieviel Schwankungen reden wir denn hier ?!?!> Mit dem ATMEGA UND XMEGA hatte ich hier nie nennenswerte Probleme...> Ich setze den STM32F205 ein.> Mit den größeren F4 hatte ich keine Probleme..daher hoffte ich bisslang> das es mein Fehler ist,.> Beim Atmega lag ich bei 1-2 Digit, was ich super finde
Hier noch der Link auf meine Versuchsreihe in 2013:
Beitrag "STM32 ADC Verhalten eigentümlich"
Habe gerade nochmal ein anderes Projekt rausgekramt..hier habe ich einen
STM32F205V verbaut...
Hier wackelt nicht ein einziges Digit?!?
auch intern 16MHz ext REf an VCC angeklemt..kann also nicht am STM32F2
allgemein liegen :-(