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
Im Errata-Sheet gibt es einen eigenen Teil zum ADC. Da habe ich zu dem Thema auf den ersten Blick nichts gefunden.
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?
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.