Hallo zusammen, Ich möchte mit einem DDS-Chip (AD9951) eine Frequenz erzeugen. Die Frequenz soll dabei von einem Mikrocontroller an den DDS übergeben werden. Nun bin ich mir nicht sicher, wie ich den DDS-Chip mit meinem AVR richtig anspreche. Ich benutze einen XMega256A3 den ich in C programmiere. Der DDS ist an PORT A wie folgt angeschlossen: PA0: Reset PA1: I/O_Update PA2: SCLK PA3: SDIO Laut Datenblatt ist das FTW, das ich übertragen muss bei fs = 400MHz und einer zu erzeugenden Frequenz f0 = 55MHz -> 0x23333333. Aber wie übertrage ich dieses FTW über den SDIO richtig? Und wie muss ich die anderen Pins beschalten? Hat jemand einen Beispiel-Code für mich, oder kann mir anderweitig helfen?
MaKob schrieb: > Aber wie übertrage ich dieses FTW über den SDIO richtig? Das FTW hast du ja schon herausgefunden. Dazu musstest du das Datenblatt lesen (und verstehen), nicht wahr? Oder war das Eingebung? Und wie ist es mit der seriellen Ausgabe? Hat man das im Datenblatt vergessen zu erwähnen? Ich sag's ja, diese Datenblattschreiber .... unterscxhlagen einfach die wichtigsten Sachen ....
Aus dem Datenblatt: ... The serial I/O port is compatible with most synchronous transfer formats, including both the Motorola 6905/11 SPI and Intel 8051 SSR protocols.| ... The AD9951 serial interface port can be configured as a single pin I/O (SDIO), which allows a 2-wire interface or two unidirectional pins for in/out (SDIO/SDO), which in turn enables a 3-wire interface. Two optional pins, IOSYNC and CS, enable greater flexibility for system design in the AD9951. Verwende den 3pin SPI und es ist ein ganz normaler SPI dessen implementierung Du in unzähligen Applikationsschriften finden kannst. Du kannst den SPI in Software bauen oder die SPI Hardware dafür verwenden, wie es Dir beliebt.
Guten Morgen, hier ist ein benutzter Programmcode aus einem AD9951 Projekt. Die gesamte Ansteuerung, Ausgaben und der Kommandointerpreter wurden weggelassen. AD9951 Clock ist auf 150MHz gesetzt, kann geändert werden. Als Hardware wird dieses Board mit einem ATmega162 erweitert genutzt. http://www.wa1ffl.com/Hagerty_QEX.pdf http://www.wa1ffl.com/ Viel Erfolg.
:
Bearbeitet durch User
Ich habe neulich den AD9952 am Arduino zum Laufen gebracht. Ein Problem war eine missverständliche Darstellung im Datenblatt. Ohne Änderung (durch einen Befehl "LSB first") müssen sowohl Bits als auch Bytes in der Reihenfolge "MSB first" gesendet werden. In der Tabelle ist aber das niederwertigste Byte zuerst aufgelistet. Bei einem anderen Typ steht es dagegen in der richtigen Reihenfolge. Das ChipSelect darf während der Übertragung nicht abgestellt werden, die Datenübernahme erfolgt erst mit einem IO-Update Impuls, alle Konfigurationsbytes werden in einem lange Schieberegister zwischengespeichert.
Hier das Assemblerprogramm für Arduino, zusammen mit einer Drehencoder-Auswertung und Ansteuerung eines 2*16-Textdisplays nach "Industriestandard". DDS-Takt ist 200 MHz. Pegelwandler nicht vergessen, Arduino 5V, DDS 3,3V!
:
Bearbeitet durch User
Hallo zusammen, hallo Makop. Schlabbere mal über die Seiten von Klaus Hirschelmann, DJ7OO http://www.kh-gps.de/ Da wirst du sicher in BASCOM, ARDUINO, und C fündig. > XMega256A3 Viel zu gross. Je nach dem was du machen möchtest, reicht ein Tiny 85. Die Pins müssen natürlich reichen. Zur Hilfe gibt es auf der Seite von AD ein Online-Programm 'AD Sim DDS', mit dem du dir - je nach deinen Gegebenheiten - das Steuerwort ausrechnen lassen kannst. 73 Wilhelm
MaKob schrieb: > Nun bin ich mir nicht sicher, wie ich den DDS-Chip mit meinem AVR > richtig anspreche. Der konkrete µC-Typ ist doch völlig unwichtig! Guck dir im Datenblatt die Diagramme zur Übertragung an und wackele mit deinen µC-Pins entsprechend. Das war's. Kann ja wirklich nicht so schwer sein. Ich hab sowas vor Jahren mit dem PIC16Firgendwas gemacht, der im FA-NWT drinsteckt - und zwar in Assembler. Aber das nützt dir ja nix, oder? W.S.
Vielen Dank für die vielen Posts. Muss ich erstmal durchschauen. Aber ein Tiny 85 langt mir nicht. Ich möchte ja noch mehr mit dem Mikrocontroller tun, aber der Rest funktioniert schon. Ich bin mir eher bei der Auswahl des DDS-Chips unsicher. Schließlich brauche ich den DDS nur um eine feste Frequenz (je nach angeschlossenem Verbraucher verschieden) zu erzeugen. Dafür ist der AD9951 eigentlich viel zu komplex. Allerdings gibt es sehr hohe Anforderungen an die Frequenz speziell in Sachen Dämpfung.
Der AD9952 unterscheidet sich vom AD9951 nur durch einen zusätzlichen schnellen Komparator, mit dem man aus dem Sinus ein Rechteck machen kann. Die Software ist völlig gleich. Irgendwo steckt ein ID-Code in einem Register, der sich unterscheiden soll. Allerdings stehen in den Datenblättern andere Werte als in der Beispielsoftware von Analog Devices. Dort soll aus dieser Codierung der tatsächlich angeschlossene Typ erkannt werden, das Eval-Board ist unterschiedlich bestückt lieferbar mit derselben Software. Nachdem es mit dem Arduino geklappt hatte, wird mein AD9952 jetzt mit dem GPIO-Anschluß eines Raspbery Pi3 angesteuert. Software mit Python und pigpio.
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.