DDS-Ansteuerung (SPI)

#947151
Lesenswert?

Hallo Forum!

Seit einiger Zeit versuche ich vergeblich eine DDS per SPI anzusteuern. 
Laut dem Datenblatt sollte das kein Problem Darstellen - die DDS 
schweigt jedoch.
Ich habe ein Evaluation-Borad mit einem AD9910. Das funktioniert soweit. 
Zur Ansteuerung verwende ich einen IO-Warrior56. Funktioniert auch...

Um etwas zu schreiben muss man laut Datenblatt folgendermaßen vorgehen:

1. Instruction Byte schreiben (0E -> schreiben im Register 0E, Profile 
   0)
2. Daten schreiben (00000CF5C28F -> in meinem Fall 50 MHz)
3. I/O-Update länger als ein Takt auf High

Profile 0 ist aktiv und eigentlich sollte danach ein Sinus mit 50 MHz 
ausgegeben werden - machts aber nicht. An 'nen Logikanalysator komm ich 
erst am Montag um mal zu überprüfen, wie der Controller das auf den 
Evaluation-Board macht.
Ich hab garantiert was überlesen... bin aber am ende meins 
Bastlerlateins.

Kann mir vielleicht jemand auf die Sprünge helfen?
Gast #947210
Lesenswert?

witzig, ich häng grad beim gleichen problem, allerdings mit einem ad9833 
und am pic :|

ich weiß nicht was ich falsch mache, aber bei mir passiert auch nicht 
das gewünschte.

nen logikanalyser hätt ich gern, ich hab grad mal ein analoges oszi und 
ich find auch keine beispiel-codes im netz an die man sich klammern 
könnte.
#960463
Lesenswert?

Soooo... ich war nun am Logikanalysator. Dabei ist mir aufgefallen, das 
zwischen jedem gesendeten Byte eine kleine Pause kommt. Kann es sein, 
dass der AD9910 in den "Out of sequence" Modus geht, der eigentlich 
dafür da ist, wenn ein Register nicht komplett gefüllt wird? In der Doku 
finde ich keine Timeout-Werte für die serielle Übertragung. Die Pause 
zwischen den Bytes ist im Prinzip der einzige Unterschied zu der 
Übertragung auf dem Evaluation-Board.
Das Bild zeigt mal die SPI-Übertragung des IO-Warrior. (Von oben: /SS, 
SCK, MISO, MOSI. Die kleinen Spitzen in /SS stören mich da auch ein 
wenig. Die waren 5ns breit.)
#960468
Lesenswert?

@  Mario G. (suicided)

>dass der AD9910 in den "Out of sequence" Modus geht, der eigentlich
>dafür da ist, wenn ein Register nicht komplett gefüllt wird? In der Doku

Kann es sein, dass der uC fäschlicherweise nach jedem Byte das SS einmal 
toggelt?

>Das Bild zeigt mal die SPI-Übertragung des IO-Warrior. (Von oben: /SS,
>SCK, MISO, MOSI. Die kleinen Spitzen in /SS stören mich da auch ein
>wenig. Die waren 5ns breit.)

Mit einem Oszi gemessen? Das könnte der DDS übel nehmen.

MFG
Falk
#960488
Lesenswert?

> Kann es sein, dass der uC fäschlicherweise nach jedem Byte das SS einmal
> toggelt?

Eigentlich nicht. Ich hab ja nur mit 200 kHz gesendet. Der 
Logikanalysator kann 200 MHz - da wäre das aufgefallen. Außerdem hab ich 
mal testweise den ChipSelect der DDS auf GND gezogen (ist eh der einzige 
Slave an der SPI).

> Mit einem Oszi gemessen? Das könnte der DDS übel nehmen.

Natürlich nicht. :) ...mit 'nem Logikanalysator natürlich. Das 
Evaluation-Board tut seine Arbeit nach wie vor - mit seiner eigenen 
Steuerung. (...im Bild mal zu sehen.)
Angehängte Dateien:

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