Forum: Mikrocontroller und Digitale Elektronik Frage zu STM32F303K8 ADC Initialisierung


von Lutz S. (lutzs)


Lesenswert?

Hallo,

ich habe hier einen STM32F303K8 auf einem Nucleo Board und versuche den 
mit dem Keil Compiler direkt über die Register aus dem Referenzmanual 
anzusteuern. Das Ganze dient dem besseren Verständnis der Chipfamilie, 
im Moment ohne konkrete Anwendung.

Mit kurzem Quelltext wird der ADC initialisiert, ein Wert ausgelesen und 
über den UART2 ausgegeben. Das funktioniert auch soweit.

Dabei ist mir aufgefallen dass der ADC auch arbeitet wenn die ersten 
beiden Befehle ADC1->CR = 0x0000 0000; und ADC1->CR = 0x1000 0000;
nicht ausgeführt werden. Im Register ADC1->CR steht dann der Defaultwert 
0x2000 0000, (steht dort auch, im Debugger überprüft) laut Referenz 
Manual 15.3.6 ist der ADC Voltage Regulator damit deaktiviert und der 
ADC sollte abgeschaltet sein.

'These bits are set by software to enable the ADC voltage regulator. 
Before performing any operation such as launching a calibration or 
enabling the ADC, the ADC voltage regulator must first be enabled and 
the software must wait for the regulator start-up time.'

Habe ich da einen Denkfehler?

//init ADC1
ADC1->CR = 0x00000000; //Voltage Regulator enable step1
delayMs(1);
ADC1->CR = 0x10000000; //Voltage Regulator enable step2
delayMs(1);
ADC1->CR = 0x10000001; //enable
while(!(ADC1->ISR && 1)){} //wait for ADC ready

: Bearbeitet durch User
von STK500-Besitzer (Gast)


Lesenswert?

Im Errata-Sheet gibt es einen eigenen Teil zum ADC.
Da habe ich zu dem Thema auf den ersten Blick nichts gefunden.

von Marcel B. (cable545)


Lesenswert?

Lutz S. schrieb:
> Dabei ist mir aufgefallen dass der ADC auch arbeitet wenn die ersten
> beiden Befehle ADC1->CR = 0x0000 0000; und ADC1->CR = 0x1000 0000;
> nicht ausgeführt werden.

Was genau macht er denn? Bzw. was machst du um zu verifizieren, ob er 
arbeitet?

von Lutz S. (lutzs)


Lesenswert?

Ich lese mit dem ADC1 in einer Schleife den internen Temperatursensor 
aus. Und das funktioniert, egal ob ich in der Initialisisung den Voltage 
Regulator enable oder nicht.

Das ist es, was mich wundert. Wenn ich das Referenz Manual richtig lese 
ist er powermässig per default deaktiviert und muss erst eingeschaltet 
werden damit er initialisiert und dann ausgelesen werden kann.

: Bearbeitet durch User
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.