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!
Hast du auch ein Datenblatt zum ADC? In diesem werden viele deiner Fragen beantwortet...
Steht doch im Datenblatt -> Voltage Reference Output, also ein Ausgang an dem du VREF abgreifen kannst.
Lümmel schrieb: > Was genau ist jetzt REFO? Dein ADC hat einen Bandgap Referenz eingebaut und diese Spannung kann am REFO ausgegeben werden um sie dann z.B. mit REFP zu verbinden. > Das heisst in meiner > Anwendung einfach über Konfig-Register disablen? Wenn du sie nicht benötigst.
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.
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?
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!
Niemand eine Idee woran es liegen könnte, dass sich die ADC nur bei enableten REFO verändern ?
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 | }
|
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!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.