Forum: Mikrocontroller und Digitale Elektronik Vdda ermitteln über ADC (STM32F303CB)


von Martin (Gast)


Lesenswert?

Moin Moin,

ich arbeite derzeit an einem Projekt, in dem ich mehrere ADC Werte 
auslesen muss. Das klappt auch alles wunderbar über DMA.

Nun zu meinem Anliegen. Ich habe gelesen, dass es möglich ist, über den 
ADC die Spannung am VDDA Pin zu messen diese mit einem ab Werk 
eingespeicherten Wert zu vergleichen (ADC Wert bei genau 3,3V) und dann 
die Spannung zu ermitteln.

Diesen habe ich auch schon gefunden

#define VREFINT_CAL_ADDR    0x1FFFF7BA

uint16_t vrefint_cal;                        // VREFINT calibration 
value
vrefint_cal= *((uint16_t*)VREFINT_CAL_ADDR); // read VREFINT_CAL_ADDR 
memory location

Die dazugehörige Berechnungsformel lautet:

VDDA= 3,3V * vrefint_cal / vrefint_ADC_data

Das Problem was nun herrscht. Die Spannung beträgt 111mV zuviel. 
Gemessen wurden lediglich 3,22 V und berechnet wurden 3,33V.

Hat jemand eine Idee?
Dank schonmal im voraus.

von soundso (Gast)


Lesenswert?

normalerweise misst mann eine interne referenz aus und kann dann zurück 
rechnen auf die Betiriebsspannung. Das Datenblatt sollte dazu die Formel 
und das Vorgehen beinhalten.

Schau dir mal das Reference Manual vom stm32F303 an !

von Martin (Gast)


Lesenswert?

Martin schrieb:
> define VREFINT_CAL_ADDR    0x1FFFF7BA
>
> uint16_t vrefint_cal;                        // VREFINT calibration
> value
> vrefint_cal= *((uint16_t*)VREFINT_CAL_ADDR); // read VREFINT_CAL_ADDR
> memory location
>
> Die dazugehörige Berechnungsformel lautet:
>
> VDDA= 3,3V * vrefint_cal / vrefint_ADC_data

Wie gesagt alles schon vorhanden.
Der ADC Wert der internen Referenz befindet sich in vrefint_ADC_data.
Und die Formel wurde so dem Datenblatt entnommen.

von Martin (Gast)


Lesenswert?

ich habe nun genau 3,3V an den VDDA angelegt.
Laut dem im µC hinterlegtem ADC Wert müsste dort 1522 ausgegeben werden
jedoch wird bei der internen Referenzspannung ein ADC Wert von lediglich 
1462 ausgegeben.

von eagle user (Gast)


Lesenswert?

Interne "automatische" Kalibrierung mit der aktuellen Konfiguration 
gemacht?
Genügend lange Sample Zeit für die VREF-Messung eingestellt?
Evt. hat der F303 auch das Problem, dass man den ersten Messwert nach 
einer längeren Pause wegwerfen muss?

von Martin (Gast)


Lesenswert?

Die interne Kalibrierung habe ich noch nicht gemacht, wird getestet. Die 
Samplezeit ansich beläuft sich auf 62 cycles und die ADC Wertabfrage 
über DMA läuft automatisch. Alle 200 ms wird eine neue Messung über 
einen Timer gestartet.

Aber sollte es an der Kalibrierung liegen, dass der Wert so aus dem 
Ruder läuft?!

von Suchender (Gast)


Lesenswert?

Haben Sie das Problem lösen können?
Habe aktuell das gleiche Problem mit einer ungenauen internen 
Referenzmessung.

von Ofen (Gast)


Lesenswert?

Im Datenblatt steht folgendes:

Min. sampling time vref: 2.2µs!!

Ich kenne eueren prescaler des ADC's nicht, aber mit 61.5 cycles samling 
time und ohne prescaler kommt man bei 72 MHz auf lediglich 854 ns.

Lg

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.