ARM STR71x ADC-Messwert falsch!

Gast #894090
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!
Gast #894167
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren