Forum: Mikrocontroller und Digitale Elektronik Pull-up/Pull-down beim STM32


von Detlef _. (detlef_a)


Lesenswert?

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?

Vielen Dank.
Cheers
Detlef

von Harry L. (mysth)


Lesenswert?

Detlef _. schrieb:
> Ist das jemand schon mal gelungen

Geht nicht,und würde auch keinerlei Sinn ergeben.

von Detlef _. (detlef_a)


Lesenswert?

Harry L. schrieb:
> Detlef _. schrieb:
>> Ist das jemand schon mal gelungen
>
> Geht nicht,und würde auch keinerlei Sinn ergeben.

Harry, doch, das gibt Sinn.
Den https://de.wikipedia.org/wiki/Spannungsteiler kennst Du?
Wenn nicht, nochmal kurz nacharbeiten.

Cheers
Detlef

: Bearbeitet durch User
von Harry L. (mysth)


Lesenswert?

Detlef _. schrieb:
> Wenn nicht, nochmal kurz nacharbeiten.

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..

Denk mal drüber nach!

von Bauform B. (bauformb)


Lesenswert?

Detlef _. schrieb:
> Ist das jemand schon mal gelungen?

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.

von N. M. (mani)


Lesenswert?

Harry L. schrieb:
> 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.

Harry L. schrieb:
> 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...

: Bearbeitet durch User
von Wilhelm M. (wimalopaan)


Lesenswert?

N. M. schrieb:
> 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.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

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).

: Bearbeitet durch User
von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

Niklas G. schrieb:
> 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...

von Detlef _. (detlef_a)


Lesenswert?

Hallo Ihr Lieben,

früher gabs hier mal gute Antworten, so wie diese zu meiner Frage

https://community.st.com/t5/stm32-mcu-products/adc-and-pullup-pulldown/td-p/573802#M218416

manche hab ich selber gegeben.

Jetzt reitet hier hauptsächlich der Troll.Schade.

Cheers
Detlef

von Keks F. (keksliebhaber)


Lesenswert?

Der Unterschied zwischen beiden Postings ist deine Fähigkeit nur in 
einer Sprache unfreundlich und besserwissend zu Hilfegebenden zu werden.

Detlef _. schrieb:
> Den https://de.wikipedia.org/wiki/Spannungsteiler kennst Du?
> Wenn nicht, nochmal kurz nacharbeiten.

von Ingo L. (corrtexx)


Lesenswert?

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...

von Andreas B. (abm)


Lesenswert?

Detlef _. schrieb:
> früher gabs hier mal gute Antworten, so wie diese zu meiner Frage
> 
https://community.st.com/t5/stm32-mcu-products/adc-and-pullup-pulldown/td-p/573802#M218416

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.

von Michael F. (Firma: IAR Systems) (michael_iar)


Lesenswert?

Ingo L. schrieb:
> 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).

Seite 136 von 240: 
https://www.st.com/resource/en/datasheet/stm32f429ii.pdf

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.

Gruß,
Michael

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Michael F. schrieb:
> bei den angegebenen Toleranzen der Widerstände
Interessanter Weise finde ich nichts zum Temperaturgang.

Möchte dafür wetten, dass sich der auch interessant gestaltet.

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
Noch kein Account? Hier anmelden.