Forum: Mikrocontroller und Digitale Elektronik DDS-Ansteuerung (SPI)


von Mario G. (suicided)


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?

von Mario G. (suicided)


Lesenswert?

achso... /CS ist natürlich auf Low.

von morph (Gast)


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.

von Mario G. (suicided)


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.)

von Mario G. (suicided)


Angehängte Dateien:

Lesenswert?

ups... Bild vergessen...

von Falk B. (falk)


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

von Mario G. (suicided)


Angehängte Dateien:

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.)

von 3366 (Gast)


Lesenswert?

Manchmal verwendet man CS zum Laden der Daten, auf die steigende Flanke. 
Sollte das hier vom SS bewaeltigt werden ?

von Mario G. (suicided)


Lesenswert?

Das Laden der Daten geschieht, wenn IO-Update auf HIGH geht.

von 3366 (Gast)


Lesenswert?

Und welcher der 4 ist IO Update ?

von Mario G. (suicided)


Lesenswert?

der fünfte - ganz unten... steht auch dran auf dem zweiten Bild. Auf dem 
ersten hab ichs nich mit drauf - da ging es mir primär um die Pausen 
zwischen den Bytes.

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
Noch kein Account? Hier anmelden.