AD Wandler Pins für Referenzspg.

Gast #3888399
Lesenswert?

Nochmal bezugnehmend auf einen alten Thread.
Ansprechen des AD-Converters funktioniert wunderbar.

Er hat u.a. natürlich die folgenden Pins:

VDDA, REFP, REFN und REFO (Reference Output Voltage).
Ich würde gerne eine Externe Referenzspannung von 3,3V haben. Diese 
schließe ich an VDDA. Über die Konfigurationsregister kann ich REFP 
(positive Referenzspannung, dieser Pin ist über 100n an GND) = VDDA = 
3,3 V setzen. REFN ist mit GND verbunden, d.h. es ergibt sich eine 
Referenzspannung von 3,3V = REFP - REFN.

Was genau ist jetzt REFO? Diese kann mit Konfiguraiotnsregistern auf 
1,5V bzw. 1,2V gestellt werden. Einfach eine weitere Möglichkeit mit 
einer anderen Referenzspannung zu arbeiten? Das heisst in meiner 
Anwendung einfach über Konfig-Register disablen?

Der Schaltplan wäre dann wie oben erwähnt einfach 3,3V -> VDDA, REFN -> 
GND, REFP über 100n an GND und REFO über 100n an GND und dann REFP über 
Konfigregister = VDDA und REFO disablen.

Danke für jeglichen Input!
Gast #3888497
Lesenswert?

OK, vielen Dank schon einmal. REFO benötige ich für meine Anwendung 
nicht. Da ich REFP eigentlich auch nicht nutze, sondern VDDA und VSSA 
direkt auf den AD-Wandler gebe, brauche ich auch nicht VDDA mit REFP zu 
verbinden.

Mein Problem ist, dass der ADC immer denselben Wert zurückgibt (eines 
der Equivalent Test pending signals auf S.42), ganz egal welches Analog 
Signal ich losschicke.

Ich kann den ADC also nicht sauber auslesen und begebe mich auf 
Fehlersuche.
Gast #3888569
Lesenswert?

Ich kann über die Konfigregister die Eingangsspannungen einstellen.
Testweise habe ich jetzt mal für die Positive Input Voltage 0,1* VDD 
eingestellt und für die negative Input Voltage VSSA.

Ich bekomme beim auslesen des ADC jedoch IMMER dasselbe Ergebnis!! 0x80 
00 00. Egal was ich über die Eingänge schicke. Das kann doch nicht sein.
Was wären mögliche Fehlerquellen?
Gast #3888605
Lesenswert?

Hey Hacky,

danke für die Antwort. Den Input Channel Multiplexer habe ich natürlich 
schon konfiguriert (über das ADC1 Register). Hier habe ich AIN1 und AIN2 
gewählt. Zu Testzwecken wie gesagt auch 0,1 * VDD und VSSA und das 
Ergebnis war immer 0x80 00 00.

Das einzige was zu veränderlichen Ausgaben des ADC führt inst die 
Aktivierung des REFO (also ENREF = 1). Wie kann das sein, wenn wie oben 
gesagt es sich lediglich um eine Ausgangsspg. handelt, dies zu 
veränderlichen Werten des ADCs führt?

Ich wäre sicher gewesen, dass dieser disablet werden müßte!
Gast #3888874
Lesenswert?

Der Code ist schnell erzählt. Die I2C Kommunikation funktioniert 
einwandfrei. Die ist auch dadurch zu erkennen, dass ich die jeweiligen 
Register wieder richtig auslesen kann. Funktion writeregister beschreibt 
die jeweiligen Regiser und readregister liest den ADC aus.
In diesem Fall habe ich keine externe Referenzspannung, sondern den LDO 
und natürlich den ADC aktviert. -> SYS Register!
Im SYS Register habe ich ebenfalls den REFO enablet -> ENREF = 1, da 
sich wie angesprochen sonst die ADC Werte nicht ändern!
1
int main()
2
{
3
...
4

5
writeregister(SYS, 0b00011100);
6
writeregister(ADC1, 0b00001000);
7
writeregister(ADC2, 0b01010000);
8
writeregister(ADC3, 0b00000000);
9
writeregister(ADC4, 0b00000000);
10
...
11

12
    // Example complete
13
    while(1)
14
    {
15
        readregister(ADOH, 3);
16

17
    }
18
}
Gast #3889285
Lesenswert?

Könnte es vllt. sein, dass REFO nicht nur eine einfache Ausgangsspannung 
ist, sondern intern mit REFP verbunden werden kann? Ich sehe auch, dass 
das Blockdiagramm dagegen spricht und versuche mir den Sachverhalt 
irgendwie erklären zu können!

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