www.mikrocontroller.net

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


Autor: Hans Dampf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
RCCU_Div2Config(DISABLE);
RCCU_PLL1Config( RCCU_PLL1_Mul_16, RCCU_Div_1);
RCCU_RCLKSourceConfig( RCCU_PLL1_Output );
RCCU_MCLKConfig( RCCU_DEFAULT);
RCCU_FCLKConfig( RCCU_RCLK_4);
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:
ADC12_Init()
ADC12_PrescalerConfig(100);
ADC12_ModeConfig(ADC12_ROUND);
ADC12_ConversionStart();

Und so lese ich die aktuellen Messwerte aus und schicke ihn per UART an 
den PC:
ADC_Value = ADC12_ConversionValue(ADC12_CHANNEL0);
sprintf(Buffer, "Ch 0: %i", ADC_Value);
UART_StringSend(UART0, Buffer);

ADC_Value = ADC12_ConversionValue(ADC12_CHANNEL1);
sprintf(Buffer, "Ch 1: %i", ADC_Value);
UART_StringSend(UART0, Buffer);
  
ADC_Value = ADC12_ConversionValue(ADC12_CHANNEL2);
sprintf(Buffer, "Ch 2: %i", ADC_Value);
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!

Autor: Tilo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kenne deinen uC nicht aber eventuell fehlt die Referenzspannung?

Autor: Hans Dampf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.