Liebe STM32 Spezialisten,
wenn man einen GPIO als Input konfiguriert, kann man über das Register GPIOx->PUPDR wunderbar die pullups und pulldowns ein/ausschalten. Man kann auch beide einschalten und damit den Inputpin auf einen mittleren Pegel legen.
Wenn ich den Input Pin als ADC-Eingang konfiguriere kann ich die pullups/pulldowns nicht mehr schalten. Das möchte ich aber gerne tun um einen externen Offset-Spannungsteiler einzusparen.
Ist das jemand schon mal gelungen oder gibt es sachdienliche Hinweise?
Keine Sorge!
Nach >45J Elektronik weis ich sehr wohl, was ein Spannungsteiler ist, aber ich weis auch, daß man dazu die Widerstandswerte mögl. genau kennen sollte...wo genau stehen diese Werte der internen Pullup/Pulldown im Datenblatt?
Den Eingang eines ADC direkt mit einen statischen Offset zu beaufschlagen ist sowieso i.d.R. eine Schnapsidee.
Fazit: Dein Ansinnen ist totaler Humbug, der nur zeigt, daß du absoluter Anfänger bist.
Was ja ansich nicht schlimm ist und erst dann problematisch wird, wenn du auf deinem Irrglauben beharrst..
unwahrscheinlich. Das ist Absicht, es steht bei den meisten STM32 ganz offiziell im Reference Manual. Außer bei den STM32G4xx, bei denen kann man immerhin den Pull-Down einschalten.
aber ich weis auch, daß man dazu die Widerstandswerte mögl. genau kennen
sollte
Das würde ich wiederum nicht pauschal unterschreiben. Je nach Anwendungsfall ist das vllt garnicht so genau notwendig.
Gehen wir Mal davon aus man könnte die Widerstände wie gewünscht aktivieren. Gegen wir Mal weiter davon aus die Widerstände sind in gewissem Rahmen gleich, so dass sich irgendwas zwischen 1-2V einstellt. Würde man über einen Kondensator AC einkoppeln welche von der Frequenz deutlich schneller ist als die Stabilität der internen Widerstände, so könnte man über einen digitalen Hochpass den sowieso uninteressant Offset wieder rausrechnen.
Evtl gibt's auch noch andere mögliche Anwendungen.
Dein Ansinnen ist totaler Humbug, der nur zeigt, daß du absoluter
Anfänger bist.
Detlef schreibt immer sehr viel in Richtung Signalverarbeitung. Also wird es vermutlich in die Richtung gehen.
Für mich ist eher die Frage ob es sich wirklich lohnt wegen 2 externen Widerständen den Aufwand zu treiben.
Evtl will Detlef ja noch was zur Applikation sagen...
Gehen wir Mal davon aus man könnte die Widerstände wie gewünscht
aktivieren.
Wenn das gehen würde, wäre es manchmal sinnvoll. Bspw. bei den OpAmps als Offset-Inputs, falls man Wechselsignale messen möchte. Dies braucht nicht so super genau zu sein, weil man den tatsächlichen Offset mit dem ADC messen kann.
Einfach den Pin auf dem PCB mit einem anderen GPIO verbinden und bei dem dann die Pullups setzen. Dieser andere Pin wird dann wohl auf Input gesetzt werden müssen, wobei dann der Schmitt-Trigger aktiv ist, welcher dann einen variablen Leckstrom auf dem Signal erzeugt und ggf. auch instabil werden kann bei einem analogen Eingangssignal (der Grund warum es den Analog-Modus überhaupt gibt).
Einfach den Pin auf dem PCB mit einem anderen GPIO verbinden und bei dem
dann die Pullups setzen. Dieser andere Pin wird dann wohl auf Input
gesetzt werden müssen, wobei dann der Schmitt-Trigger aktiv ist, welcher
dann einen variablen Leckstrom auf dem Signal erzeugt und ggf. auch
instabil werden kann bei einem analogen Eingangssignal (der Grund warum
es den Analog-Modus überhaupt gibt).
Den interne Pull Transistoren wuerde ich auch keinen einigermassen Gleichlauf zutrauen. Dann laeuft Dein Ruhepegel wild in der Gegend herum...
Es wird ja bei den Pull-Widerständen kein ohmscher Widerstand aktiviert, sondern eine Stromquelle. Somit müssten beide Stromquellen identisch sein, was sie aber nicht sind, weil Genauigkeit hier garnicht nötig ist. Somit kannst du die Idee verwefen...
Ha, die "Antwort" besteht aus genau dem, was im RM0366 auch bereits steht:
"8.3.12 Analog configuration ...
•The weak pull-up and pull-down resistors are disabled by hardware
..."
Und selbst wenn es anders wäre: Die Idee, die für Spannungsteiler zu verwenden, führt unmittelbar und zwangsläufig sofort nach der Frage nach ihrem Wert:
25 bis 55 kOhm, und zwar unabhängig zwischen Pull-Up und Pull-Down. Irgendwas von "Vergleichbarkeit" oder so wird nicht angegeben. Nicht so ganz hilfreich ...
Das ganze Fragespiel wäre also total überflüssig, wenn man des Lesens mächtig und willig wäre. Aber offenbar ist so mancher einfach zu faul, mal kurz nachzuschlagen, und möchte selbst das an andere delegieren.
Es wird ja bei den Pull-Widerständen kein ohmscher Widerstand aktiviert,
sondern eine Stromquelle.
Moin,
das sieht das Datenblatt eines von mir zufällig ausgewählten STM32F429 aber anders:
1
6. Pull-up resistors are designed with a true resistance in series with a switchable PMOS. This PMOS contribution to the series resistance is minimum (~10% order).
2
7. Pull-down resistors are designed with a true resistance in series with a switchable NMOS. This NMOS contribution to the series resistance is minimum (~10% order).
Das Datenblatt eines (ebenfalls zufällig gewählten) STM32G071 sagt auch was von einer "true resistance"...
Aber unabhängig von der konkreten Implementierung der Pull-Ups / Pull-Downs ist die Idee eines Spannungsteilers bei den angegebenen Toleranzen der Widerstände eventuell keine besonders gute Idee.