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?
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.
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.)
@ 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
> 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.)
Manchmal verwendet man CS zum Laden der Daten, auf die steigende Flanke. Sollte das hier vom SS bewaeltigt werden ?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.