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.
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 !
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.
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.
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?
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?!
Haben Sie das Problem lösen können? Habe aktuell das gleiche Problem mit einer ungenauen internen Referenzmessung.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.