STM32F552VE kann analoge Pins nicht lesen

OP #8070857
Lesenswert?

Ich möchte mit dem folgenden Testprogramm den analogen Eingang PA4 lesen.

Problem: Der ADC liefert mir auf allen Kanälen immer Werte von 88-91, egal welche Spannung ich anlege. Nur bei den beiden internen Kanäle (12 und 13) liefert der ADC plausible Werte.

Vref+ liegt bei meinem gekauften Board auf 3,3 Volt.

Aber irgendwas fehlt noch. Erkennt jemand den Fehler?

Angehängte Dateien:
OP #8070893
Lesenswert?

Link zum kaputten Schaltplan: https://github.com/WeActStudio/WeActStudio.STM32C5_100Pin_CoreBoard/blob/master/Doc/stm32c552ve.pdf

Kilo S. schrieb:

Default als analog reicht nicht, der Pin hängt noch auf digital und daher bekommst du irgendwas um ~80-90 angezeigt.

Ich habe PA4 auf analoge Eingabe konfiguriert - denke ich. Was siehst du dort, was ich nicht sehe?Habe das auch mit PA3 und PA5 versucht. Bekomme trotzdem auf allen 12 Kanälen den selben Wert. Nur die internen Kanäle 12 und 13 funktionieren.

VREFBUF->CSR_ENVR = 1 in der init.

Danke, das versuche ich heute Abend.

: Bearbeitet durch User
#8070943
Lesenswert?

/Das/ gab's früher nicht (RM0522):

1
21.4.11 Channel preselection register (ADC_PCSEL)
2
The PCSEL bit of the ADC_PCSEL register controls the analog switch
3
integrated in the I/O. For each channel selected through SQRx or JSQRx
4
bits, the corresponding PCSEL bit must be configured in advance in the
5
ADC_PCSEL register. The ADC input multiplexer selects the ADC input
6
according to SQRx and JSQRx configuration with very high speed.
7
The analog switch integrated in the I/O cannot react as fast as the
8
ADC multiplexer. To avoid the delay due to the analog switch control
9
on the I/O, it is necessary to preselect the input channels that are
10
selected through the SQRx and JSQRx. The selection is based on the VIN
11
of each ADC input. For example, if the ADC converts ADCx_IN1, PCSEL1 bit
12
must also be set in ADC_PCSEL register.
13
Note: Configuring the PCSEL bit is not necessary for the internal
14
channels (such as VREFINT).
#8071002
Lesenswert?

Nemopuk schrieb:

Was siehst du dort, was ich nicht sehe?

Der Pin war noch Digital statt Analog GPIOA->MODER hat pro Pin 2 Bits:

  • 00 = Input
  • 01 = Output
  • 10 = Alternate Function
  • 11 = Analog

Nach Reset ist PA4 zwar oft 00 = Input. Das Problem: Im Digital-Input ist der Schmitt-Trigger + Pullup/Pulldown + ESD-Dioden aktiv.

Erst mit MODER = 0b11 wird die komplette Digital-Logik abgeschaltet. Dann geht der Pin direkt auf den ADC-Multiplexer.

Die GPIO-Clock war zu spät an RCC->AHB2ENR_GPIOAEN muss an sein bevor du GPIOA->MODER schreibst.

Ich hab bisher gelernt das man immer so vorgeht:Clock an -> Pin konfigurieren -> Peripherie starten.

OP #8071139
Lesenswert?

Kilo S. schrieb:

VREFBUF->CSR_ENVR = 1 in der init.

Gibt's bei diesem Modell nicht.

Kilo S. schrieb:

Der Pin war noch Digital statt Analog Die GPIO-Clock war zu spät an

Wie meist du das, war das bei dir mal der Knackpunkt? Die Punkte sind bei mir beide in Ordnung.

Harald A. schrieb:

Mal mit STM32 MX Cube gearbeitet?

Ja, das hilft mir aber nicht dabei, diese Grundlagen zu lernen. Und glaube mir, ich habe viele Stunden lang versucht, durch dessen ADC Implementierung durch zu blicken. Allerdings wäre ich notfalls darauf zurück gekommen, um wenigstens die Hardware defekt ist. Mit Arduino wäre es noch einfacher gewesen, aber Arduino unterstützt die C5 Serie noch nicht.

Bauform B. schrieb:

Link zum Original (ist auch 2 Revisionen neuer)

Datenblatt und Reference Manual habe ich gefunden. Der Schaltplan von dem Board fehlt.

Bauform B. schrieb:

Das gab's früher nicht (RM0522) 21.4.11 Channel preselection register (ADC_PCSEL)

Du bist ein Schatz! Das war der Knackpunkt. Ich hatte also wirklich etwas übersehen. Damit ging es dann sofort:

1
// Pre-Select all 14 input channels
2
STM32_MODIFY_REG(ADC1->PCSEL, ADC_PCSEL_PCSEL, 0b0011111111111111);

Vielen lieben Dank!

OP #8072067
Lesenswert?

Thorsten S. schrieb:

Das ist ein stinknormales PDF. Warum kannst du das nicht öffnen?

Weil ich eine HTML (aber mit Endung PDF) erhalte, wenn ich sie herunterlade. Auch die eingebettete Ansicht in der Webseite funktioniert bei mir nicht, sowohl auf dem PC als auch Smartphone. Auf der Arbeit geht es auch nicht.

Aber du hast mich auf eine Idee gebracht: Meine Frau konnte den Schaltplan mit ihrem Windows Laptop herunter laden. Sie hat ein png erhalten, kein PDF.

: Bearbeitet durch User

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren