Forum: Compiler & IDEs ARM STR71x ADC-Messwert falsch!


von Hans Dampf (Gast)


Lesenswert?

Hallo Leute,

ich habe ein kleines Problem mit dem internen AD-Wandler auf meinem 
STR711-EvalBoard (PDFs zum Controller: 
http://www.st.com/mcu/devicedocs-STR711FR2.html).

Ein Satz zur Hardware: AVDD habe ich mit 3,3V verbunden, AVSS mit GND 
und ich nutze die Kanäle 0-2 des internen 12-Bit AD-Wandlers.

Den PCLK2 habe ich folgendermaßen initialisiert:
1
RCCU_Div2Config(DISABLE);
2
RCCU_PLL1Config( RCCU_PLL1_Mul_16, RCCU_Div_1);
3
RCCU_RCLKSourceConfig( RCCU_PLL1_Output );
4
RCCU_MCLKConfig( RCCU_DEFAULT);
5
RCCU_FCLKConfig( RCCU_RCLK_4);
6
RCCU_PCLKConfig( RCCU_RCLK_4);
Da ich ein 4Mhz Quarz angeschlossen habe, sollte der PCLK2-Takt bei 
16Mhz liegen.

So habe ich meinen AD-Wandler initialisiert:
1
ADC12_Init()
2
ADC12_PrescalerConfig(100);
3
ADC12_ModeConfig(ADC12_ROUND);
4
ADC12_ConversionStart();

Und so lese ich die aktuellen Messwerte aus und schicke ihn per UART an 
den PC:
1
ADC_Value = ADC12_ConversionValue(ADC12_CHANNEL0);
2
sprintf(Buffer, "Ch 0: %i", ADC_Value);
3
UART_StringSend(UART0, Buffer);
4
5
ADC_Value = ADC12_ConversionValue(ADC12_CHANNEL1);
6
sprintf(Buffer, "Ch 1: %i", ADC_Value);
7
UART_StringSend(UART0, Buffer);
8
  
9
ADC_Value = ADC12_ConversionValue(ADC12_CHANNEL2);
10
sprintf(Buffer, "Ch 2: %i", ADC_Value);
11
UART_StringSend(UART0, Buffer);

Folgendes Problem stellt sich nun ein: Obwohl man am Eingangspin 1,65V 
messen kann, kommt auf dem PC immer ein Wert von etwa 410 an, was nach 
meiner Rechnung falsch ist:

12-Bit: 0 - 4095
Range: 0 - 2,5V

Also: 2,5V / 4096 * 410 = 0,25V

Woran kann das liegen? In der Firmware-Library von ST habe ich auch 
nichts zur Kalibrierung des ADC gefunden!

von Tilo (Gast)


Lesenswert?

Ich kenne deinen uC nicht aber eventuell fehlt die Referenzspannung?

von Hans Dampf (Gast)


Lesenswert?

Es gibt im Gegensatz zum AVR keinen externen ARef Pin! So weit ich das 
verstanden habe, liegt der Messbereich zwischen 0 und 2,5V. In der 
ST-Library gibt es auch keine Funktion zum Setzen einer Referenzspannung 
bzw. zum Kalibrieren es ADCs.

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.