Vdda ermitteln über ADC (STM32F303CB)

Gast #5036568
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.
Gast #5036570
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 !
Gast #5036577
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.
Gast #5036603
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.
Gast #5037475
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?
Gast #5038531
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?!
Gast #5112567
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.