AD9833 funktioniert nur zufällig

OP #4246564
Lesenswert?

Hallo Leute,

ich habe ein Problem mit dem Ad9833. Er funktioniert nur sporatisch, was 
die Fehlersuche sehr erschwert. Die gesendeten Daten sehen laut 
Oszilloscope gut aus und sind immer die gleichen, auch der Chip-Select 
passt. Erst wenn ich dem Baustein meherere Resets hinter einander 
verpasse kann er die empfangenen Daten richtig interpretieren. Solange 
sich der Baustein noch nicht gefangen hat, kann zwar mit dem Baustein 
kommuniziert werden, aber auch hier werden alle Daten falsch 
interpretiert. Er gibt dann zum Beispiel eine kleine Gleichspannung von 
ca. 400mV , ein Sinus mit ca. 31kHz, ein undefiniertes 1MHz Signal oder 
auch gar kein Signal aus.

Wenn der Baustein sich einmal gefangen hat, funktioniert die 
Kommunikation und alles andere einwandfrei.

Angesteuert wird der AD9833 über einen SPI-Bus(Mode 2) des 
Mikrocontrollers NXP LPC1769.

Hatte hier jemand mal ein ähnliches Problem? Oder einen Tipp wie man so 
einen Fehler suchen kann?

Habe auch schon im Forum gesucht und ein Bausteintausch wie in:
Beitrag "Schwierigkeiten mit AD9833"
hat mir nicht geholfen.

Vielen Dank
OP #4246601
Lesenswert?

Hier mal die Schaltung des Ad9833 bzw 9837 und der dazughöhrige Code.
Ablauf ist:

CAD9833::Init( );
-> reset auslösen, Singlanform wählen, Phase auf null setzten
CAD9833::Frequenz( uint32_t Frequenz );
-> Frequenz auf gewünschten Wert setzen

Über CAD9833::Work kann ich über eine Serielle Schnittstelle mit dem 
Baustein kommunizieren und Kommandos ausführen lassen.
Angehängte Dateien:
#4246608
Lesenswert?

Die Chips von Analog Devices haben die Eigenschaft, dass das Datenblatt 
genauestens (!) durchgelesen werden muss. In diesem Fall das Kapitel der 
Kommunikation. Es kann an einem einzigen Wort liegen, das alles aendert. 
Ich wuerd nicht einfach davon ausgehen, dass SPIMode 2 richtig ist.

Kontrolliere die Kommunikation Flanke fuer Flanke, ob alle Sequenzen und 
Timings eingehalten werden.
Gast #4246807
Lesenswert?

Stolperfalle:

Im Datenblatt Seite 13 heisst es:

The SCLK can be continuous, or it can idle high or low between write 
operations. In either case, it must be high when FSYNC goes low (t11).
----------------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

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