Forum: Mikrocontroller und Digitale Elektronik STM32 ADC mit Offset


von Tom L. (munzi)


Angehängte Dateien:

Lesenswert?

Hallo,

ich nutze einen STM32F103CB und schreibe für meine Masterarbeit 
Software.

Ich habe eine Spannung am AD-Wandlereingang, die zwischen 0 und 3,3V 
(entspricht 4095 beim 12-Bit-AD-Wandler des Cortex) schwankt und eine 
Mittenspannung von 1,65V, wie im Bild zu sehen. (Sensorsignal hinter 
Verstärker und OPVs mit 1,65V-Bezug).

Ich möchte das Signal ins 1Q15-Format überführen (quasi 
vorzeichenbehaftete 16-Bit-Variable). 3,3V soll etwa dem größten 
positiven Wert im signed word entsprechen (0x7FFF, quasi 32767) und 0 
etwa dem größten negativen Wert, d.h. dem kleinsten Wert im signed word 
entsprechen (0x8000, quasi -32768).

Nun kann man das natürlich in Software machen (sollte mit Leftshift des 
12-Bit-Werts vom AD-Wandler um 4,dann Addition von 0x8000 gehen), aber 
der Cortex kann das auch in Hardware, was ich gerne nutzen möchte.

In 
http://www.st.com/st-web-ui/static/active/en/resource/technical/document/reference_manual/CD00171190.pdf 
auf Seite 215 ist beschrieben, dass vom AD-Wandler-Wert ein Offset 
abgezogen und das Ergebnis linksbündig ausgerichtet werden kann (siehe 
untere Figure 28, "injected group"), wobei es ein Vorzeichen-Bit gibt. 
Hiermit sollte die Umwandlung demnach in Hardware möglich sein.

Ich verstehe im Manual allerdings nicht, wie das Ergebnis berechnet und 
ins Register geschrieben wird. Wird der Offset zuerst vom 12-Bit-Wert 
des AD-Wandlers abgezogen und das Ergebnis dann um 4 Stellen geschoben 
(bezogen auf rechtsbündige Ausrichtung) oder wird das Ergebnis nur um 3 
Stellen geschoben, und welche Rolle spielt das Vorzeichenbit SEXT (Bit 
15 in Figure 28)?

Meine Überlegung war, dass ich 0x800, also 2048 als Wert einstelle, der 
vom Ergebnis abgezogen wird und linksbündige Ausrichtung nutze. Würde 
das so funktionieren, sich also oben genannte Werte ergeben?




Vielen Dank und viele Grüße
T. Linz

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.