www.mikrocontroller.net

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


Autor: Mario G. (suicided)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Mario G. (suicided)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
achso... /CS ist natürlich auf Low.

Autor: morph (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Mario G. (suicided)
Datum:

Bewertung
0 lesenswert
nicht 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.)

Autor: Mario G. (suicided)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
ups... Bild vergessen...

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Mario G. (suicided)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.)

Autor: 3366 (Gast)
Datum:

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

Autor: Mario G. (suicided)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Laden der Daten geschieht, wenn IO-Update auf HIGH geht.

Autor: 3366 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und welcher der 4 ist IO Update ?

Autor: Mario G. (suicided)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.