Ansteuerung des AD5292

OP #1444183
Lesenswert?

Hallo!
Habe folgendes Problem:
Möchte gerne das Digipoti AD5292 ansteuern, jedoch weiß ich überhaupt
nicht, welche Zeichenkette dieser Baustein überhaupt will?
Werde aus dem Datenblatt nicht schlau, außer dass man es über SPI
ansteuern sollte...
Bitte um Hilfe....Danke...
lg
#1444245
Lesenswert?

Zumindest auf den ersten Blick scheint das Datenblatt ja gut 
verständlich zu sein. Ab S18 wird das alles erklärt.

Um dich besser einschätzen zu können, bzw. das Problem einzugrenzen: 
Hast du schon praktische Erfahrung mit SPI oder ähnlichen seriellen 
Schnittstellen? Mit welchen µC willst du das verwenden?

Reinhard
#1444429
Lesenswert?

Wenn du schon mit I2C gearbeitet hast, sollte SPI kein Problem für dich 
sein. SPI ist ein Master-Slave Bus wie es normalerweise bei I2C der Fall 
ist (I2C eignet sich auch für Multimasterszenarien).
Der Hauptunterschied zu I2C ist wohl die Art und Weise wie einzelne 
Devices angesprochen werden. Bei I2C gibt es die Start und Stop Signale 
und eine individuelle Adresse für jedes Device. Bei SPI gibt es eine 
zusätzliche "Slave Select" Leitung. Mit der wird dem angesprochenen 
Device Anfang und Ende der Übertragung signalisiert. Verkettete Slaves 
können sich auch eine SS Leitung teilen, das ist aber in deinem Fall 
vermutlich nicht relevant.
Außerdem besitzt SPI getrennte Leitungen für des Senden und das 
Empfangen der Daten. Eine gleichzeitige Übertragung in beide Richtungen 
ist daher möglich.
Unter Serial Peripheral Interface findest du detailliertere 
Informationen, insbesondere auch im ersten Link.

Mit PICs habe ich keine Erfahrungen, aber laut der HP von Microchip 
unterstützt der von dir Verwendete SPI in Hardware, was dir die Sache 
deutlich einfacher machen sollte.

Reinhard
#1444835
Lesenswert?

> Eine gleichzeitige Übertragung in beide Richtungen ist daher möglich.

Genauer gesagt wird auf jeden Fall in beide Richtungen gleichzeitig 
übertragen, wobei nur in ganz seltenen Fällen auch sinnvolle Daten in 
beiden Richtungen laufen.

Beim Lesen vom slave schickt man z.B. erst die Leseanforderung (der 
slave gibt derweil noch keine Daten aus) und danach so viele "dummy" 
Bytes (Daten sind ohne Bedeutung) wie man Bytes empfangen will.
OP #1445497
Lesenswert?

Reinhard R. schrieb:
> Wenn du schon mit I2C gearbeitet hast, sollte SPI kein Problem für dich
> sein. SPI ist ein Master-Slave Bus wie es normalerweise bei I2C der Fall
> ist (I2C eignet sich auch für Multimasterszenarien).
> Der Hauptunterschied zu I2C ist wohl die Art und Weise wie einzelne
> Devices angesprochen werden. Bei I2C gibt es die Start und Stop Signale
> und eine individuelle Adresse für jedes Device. Bei SPI gibt es eine
> zusätzliche "Slave Select" Leitung. Mit der wird dem angesprochenen
> Device Anfang und Ende der Übertragung signalisiert. Verkettete Slaves
> können sich auch eine SS Leitung teilen, das ist aber in deinem Fall
> vermutlich nicht relevant.
> Außerdem besitzt SPI getrennte Leitungen für des Senden und das
> Empfangen der Daten. Eine gleichzeitige Übertragung in beide Richtungen
> ist daher möglich.
> Unter Serial Peripheral Interface findest du detailliertere
> Informationen, insbesondere auch im ersten Link.
>
> Mit PICs habe ich keine Erfahrungen, aber laut der HP von Microchip
> unterstützt der von dir Verwendete SPI in Hardware, was dir die Sache
> deutlich einfacher machen sollte.
>
> Reinhard

Hallo Reinhard.
Das Ansprechen der Devices stellt sich für mich noch ein bisschen 
utopisch heraus. Zum Beispiel hat ja bei I2C jeder Slave seine eigene 
Adresse, also externe Adresse und zum Beispiel noch Speicheradresse. 
Angesprochen über i2c_write Befehle Beispielsweise. Wird gesendet über 
die SDA Leitung. Wie sieht das bei SPI aus? Ähnlich? Fungiert man da die 
Adressen ganz einfach mittels SS Leitung?
Ja SPI wird vom PIC 100%ig unterstützt, mittels dem MASTER SYNCHRONOUS
SERIAL PORT (MSSP) MODULE, welches auch eine SPI Mode unterstützt.
Danke im Vorraus,
MfG
#1445547
Lesenswert?

Es läuft in etwa so ab (kleinere Ungenauigkeiten bitte verzeihen, hab es 
schon eine Weile nicht mehr gemacht).

Aktivieren der SS Leitung (active low)
Senden des Befehls
Deaktivieren der SS Leitung

Lesen ist geringfügig komplizierter. Sieh dir dazu mal das 
Timingdiagramm auf S8 im Datenblatt an.

Wichtig ist auch dass du die richtigen Flanken verwendest. In deinem 
Fall wird immer bei fallender Flanke ein Bit übertragen.

Reinhard
OP #1445556
Lesenswert?

Reinhard R. schrieb:
> Es läuft in etwa so ab (kleinere Ungenauigkeiten bitte verzeihen, hab es
> schon eine Weile nicht mehr gemacht).
>
> Aktivieren der SS Leitung (active low)
> Senden des Befehls
> Deaktivieren der SS Leitung
>
> Lesen ist geringfügig komplizierter. Sieh dir dazu mal das
> Timingdiagramm auf S8 im Datenblatt an.
>
> Wichtig ist auch dass du die richtigen Flanken verwendest. In deinem
> Fall wird immer bei fallender Flanke ein Bit übertragen.
>
> Reinhard

Hallo Reinhard!
Okay, in das habe ich mich schon vertieft, dass man zuerst die SS 
Leitung auf Low ziehen muss, damit die Datenübertragung überhaupt 
starten kann, bzw. bei der nächsten Flanke des SCLKs...
Danach sende ich einen Befehl an den AD5292 über die MOSI Leitung an den 
DIn Eingang. Verstehe ich auch noch.
Wie ist das jedoch, wenn ich zwei AD5292 habe, wie werden diese 
adressiert (also die Digitalpotis sind das ja...). Wie erkennt der Slave 
Hausnummer 1, dass er gemeint ist, und nicht der Slave mit der 
Hausnummer 2?
MfG
OP #1445564
Lesenswert?

Aaaah:
Hab soeben die Seite 21 angeguckt. Dort steht:
"When two AD5292 devices are daisy-chained, 32 bits of data are 
required. The first 16 bits go to U2, and the second 16 bits go to U1."
D.h. jetzt einfach, wenn ich 32 Bit sende, werden die 16 
niederwertigeren Bits an das zweite Gerät, und die 16 höherwertigen Bits 
an das erste Gerät übertragen?
MfG
OP #1445565
Lesenswert?

Helmut -dc3yc schrieb:
> Indem du die entsprechende SS-Leitung auf LOW ziehst. Jeder Baustein
> bekommt seine eigene Select-Leitung.
>
> Servus,
> Helmut.

Hallo.
Aber wenn jeder Baustein seine eigene SS Leitung hat, dann ist es ja im 
Prinzip nichtmehr möglich, die Bausteine zu verketten, oder lieg ich da 
falsch?
MfG
Gast #1445576
Lesenswert?

Wenn du die hintereinander hängst, musst du die Potis parallel an eine 
einzige SS-Leitung hängen, das sieht für den uC dann wie ein einziger 
Chip aus, der eben die n-Fache Menge an Daten bekommt.
OP #1445597
Lesenswert?

Rotti schrieb:
> Wenn du die hintereinander hängst, musst du die Potis parallel an eine
> einzige SS-Leitung hängen, das sieht für den uC dann wie ein einziger
> Chip aus, der eben die n-Fache Menge an Daten bekommt.

Eben die 32Bit anstatt der 16Bit oder?
Wenn ja, dann ist alles klar :-)
MfG
Gast #1445855
Lesenswert?

Mal ne mehr oder weniger Offtopic-Frage.
Gibts es die Dinger von Analog D. eigentlich auch in dem DIP 8 Gehäuse, 
oder nur generell nur SMD?
Ich hab zwar von Analog D. direkt gesampled, jedoch kam es mir so vor, 
als wenns dir Dinger nur in SMD Format gibt...
MfG
Gast #1446029
Lesenswert?

Naja, das Problem liegt eher nicht bei SPI, sondern daran, dass ich die 
Auflösung des Potis unbedingt brauch bei gleichzeitig hoher 
Eingangsspannung. Weiß jetzt nur nicht, welche dein oben beschriebenes 
Poti für ne Auflösung/maximale Spannung hat. Das Problem in TSSOP ist, 
dass die Leiterbahnen auf 1/4 Mil Abstand sind, und das bei meiner 
Fertigung für den Prototypen nicht möglich ist zu fertigen. Deshalb wäre 
es günstiger ein anderes Gehäuse, anstatt eine andere Firma zu wählen...
LG
#1446040
Lesenswert?

@Chris K.
Ja, im einfachen Fall eine Platine mit 2 Stiftleisten. Es gibt auch 
aufwendigere Adapter z.B. für Programmer, die aber relativ teuer sind.

@Peter G. punkt
Sieh dich mal auf der HP von Analog um. Da gibt es auch parametrische 
Listen. Ganz abnehmen kann ich dir die Produktrecherche nicht. ;)

Reinhard
OP #1446321
Lesenswert?

Reinhard R. schrieb:
> @Peter G. punkt
> Sieh dich mal auf der HP von Analog um. Da gibt es auch parametrische
> Listen. Ganz abnehmen kann ich dir die Produktrecherche nicht. ;)
>
> Reinhard

Brauchst du auch nicht, nur wenn du spontan was gewusst hättest, hättest 
du mir weiterhelfen können, ansonsten bin ich schon vollkommen 
zufrieden!
MfG
Gast #1513231
Lesenswert?

Peter,

warst du erfolgreich, mit AD5292 steuerung?
Ich habe naemlich aenliches Problem. Ich kenne gut genug SPI Protokol 
aber habe Probleme mit Steuerung Inhalt. Ich glaube, zuerst man musst 
0x1803 senden und dann vieleich in RDAC schreiben. Aber das arbeitet 
nicht. Soll man noch was machen/senden?

Gregor
Gast #1514548
Lesenswert?

Tach Gregor!
Also ich hab das ganze so realisiert (obwohl zurzeit noch nicht 
funktioniert):

Zuerst 4096dez also 0001000000000000bin rausschreiben. Ist ein Reset 
"refresh RDAC with 20-TP strored value".
Bin mir aber nicht sicher, ob das nötig ist, auf Seite 19 im Datenblatt 
steht was von Write Protection und Command 4, eben die 4096dez.
Und folglich steht: "Um das Programmieren der Wiper zu ermöglichen, ist 
es nötig, das write protect bit (C1) zu setzten. Das wird erreicht, 
indem man das Schieberegister mit Command 6 füttert. Also: 
0001100000000000bin. (6144dez).
Nun hab ich den Wert am Potentiometer rausgeschrieben, mittels Command 
1.

Ich muss jetz noch gucken, ob ich das hinbekommt bekomme, da ich mir 
noch nicht beim Timing sicher bin, ob ich die maximalen Zeiten einhalte 
(weil manuelles Timing). Würde mich über deine Antwort freuen, ob du es 
so geschafft hast, wie oben beschrieben, ansonsten meld ich mich wieder 
hier.

LG
Gast #1514765
Lesenswert?

Bis jetzt bin ich nicht mit reset command probiert. Bis jetzt bin ich 
nur mit command 6 0x1802 begonnen und dann mit command 1 0x0500 (zum 
Beispiel) RDAC geandert. Damit war ich nicht erfolgreich. Werde ich 
jetzt mit reset command am Anfang versuchen und dann melden. Bis jetzt 
konnte ich noch nicht Wiederstand andern. War ich aber erfolgreich einen 
anderen AD IC durch SPI benutzen (mit 100 us CLK Periode)...
#1514826
Lesenswert?

Peter G. punkt (grudolf) schrieb:
> Also ich weiß jetzt nicht spezifisch deine Anforderungen, aber ich hab
> den AD5290 schon angesteuert, erweist sich als relativ einfach!

Hallo!
Ich habe ebenfalls folgendes Problem:
Mein AD5292 lässt sich nicht einstellen!! :-(

Ich poste hier mal den C-Code, welcher das Timing beeinhaltet, ist 
ebenfalls zu Fuß!

Beste Grüße
Angehängte Dateien:
Gast #1515112
Lesenswert?

Ja, da hast du allerdings Recht.
Der 5290 ist Zustandsgesteuert, nicht flankengesteuert, das heißt, er 
shiftet das Bit in der Mitte des Datums rein. Das hab ich auch so 
programmiert.
Beim 92 wird bei der fallenden Clockflanke das Bit übernommen, danke für 
deine Erkenntnis, auf das hab ich noch garnicht gedacht, obwohl es nahe 
liegt, ich werde das mal probieren, die Daten bei der fallenden Flanke 
reinzushiften.
Gast #1515225
Lesenswert?

Ob hast du SPI "manuell" realisiert, dann must do es so realisieren, das 
das Bit um positive Flanke auf pin geschrieben ist, so es genug Zeit 
dauert, das 5290 dieses Bit auf negative Flanke lesen kann.
Du must Bit auf positive Flanke andern und es wird auf negative Flanke 
gelesen. So steht auch im Datasheet.
Gast #1518896
Lesenswert?

Noch nicht. Aber endlich habe ich Contact mit AD Engineer erhalten 
(durch Distributer). Er mochtet Oscillogramme von mir. Diese habe ich 
ihm gegeben.
Werde hier melden wenn etwas neuses passieren wird.
Gast #1522126
Lesenswert?

Endlich  hab ich die Losung gefunden. Man muss SPI einstellen:
- Idle state for clock is a low level
- Clock changes from idle to active
Morgen werde ich auch ein paar oscillogrammen hier stellen.
Gast #1522733
Lesenswert?

Auf URL 
http://rapidshare.com/files/322041579/AD5292_troubleshooting.zip.html 
kann mann sich oscillogramme von SPI (SCLK und DIN) andschauen. Einige 
(not_working_xxx) sind vorher aufgenohmen werden, als ich die Losung 
nicht hegabt habe. Andere (working_xxx) sind funtionsfahig.
Ein kleiner Untershied ist auch letztes Bit von Config Wort, aber dieser 
ist gar nicht wichtig.
Was wichtig ist, ist das SCLK signal, wenn nichts ist gesendet, auf 0 
gestellt wird.
Gast #1522960
Lesenswert?

Ja, zuerst sende ich Commande #6 (0x1802) und danach kann man sofort 
RDAC schreiben mit Commande #1 (0bxx0001xxxxxxxxxx).
Ich verbrauche 20-TP gar nicht - aber ob du es brauchst, musst du zuerst 
Commande #6 0x1803 senden und dann Commande #1 und dann Commande #3. So 
habe ich es verstanden, aber weil ich das nicht versuchen habe bin ich 
nicht sicher. Man darf AD datablaten nicht vertrauen...
Gast #1523529
Lesenswert?

Grudolf sagst du dass du jetzt erfolgreich bist? Deine Oscillograme 
sehen nicht so gut aus... Ich glaube du sollst ein bischen mehr Zeit 
warte nach negative Flanke von SCLK, bis wenn du DIN signal anderst.

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