I am wondering what do I need to set up I order to use the spi on the ad9910 chip. Is there a intimidation I need to do to the chip. Is theye an order I need to push pins. Is there timing for set up and hold?
You already mentioned you are controlling the Master Reset pin. Are you also controlling the EXT_PWR_DWN pin and the I/O_RESET pin or at least not leaving them floating or tied high?
You need an FPGA, a microcontroller, or a digital pattern generator to start controlling the AD9910 evaluation board. For the FPGA or MCU's, I suggest to use the available development kits that they have if you are just going to develop a prototype. If you're interested in the setup and hold time requirements, you can look at the datasheet since it contains that info.
Ok I wasn't that clear.
I have a micro controller and I'm sending 2 wire. When I'm communicate with the spi all values are good for the timing but rising/falling is a 5 Ns. I'm changing the ftw address but when I read that value back I get all zeros. am I missing something when I communicate through the spi?
In SPI you need to use at least three wires for the CLK, SDIO, and CS/LE. At startup, the DDS is configured to have a bidirectional SDIO, This means that if you want to read the register values, you have to instruct it in the "instruction byte" (discussed in page 48 of the datasheet). I think what's missing is the I/O update. You need to issue that signal in order to latch the values to the registers. This is always made after the SPI write instruction is made.
when I say 2 wire according to the datasheet. Using sclk, SDIO, cs. I also use i/o update after I'm finished. So I lower chip select. Then I pulse clock. Then I load my address instruction then I hold clock. then l load word then pulse clock again.then I set CS high then I i/o update. if I try to read any of the data I send the signal and nothing gets sent back.
so am I missing something. I have used spi before and never had this many problems. On in order to get something from the out pin can I use the FTW address or do I need to use the profiles?
As long as the SDIO pin in the microcontroller side will have high input impedance upon reading the values via SPI, I think we won't have a problem when using SDIO as bidirectional. I also suggest to lengthen the pulse width of the I/O update signal, just to make sure that the values are properly latched to the registers.
You are not limited in reading just the FTW registers. You can access all the registers provided that the address you use in the SPI is the "Serial Address" indicated by the datasheet and take note of the wordlength it uses. There are some that uses 32-bit, while others are 64-bit.
yes I should be able to send to all registers. I launch the i/o up date for 40 micro seconds and no Signal Is generated froom the out pin. I only changed the FTW. Do I need to change other address like the profile or amplitudes?
The FTW register, 0x07, is only used when RAM or the Parallel interface is enabled. If you are not using either then yes, use the profile's FTW bits. See table 5 on page 22, 'Data Source Priority' for an explanation.
Ok I have done that as well but it could be incorrect.
So CFR1 31 = 1 and then I set CFR1 [30:29] = 11?
then I set my FTW and I should get some data?
but that didn't work ether.
Let's take a step back a little bit. First, is this with your own board design or our evaluation board? When the part is powered and you are providing a REFCLK, can you check if anything is coming out of the SYNC_CLK pin? It should be 1/4th of the system clock frequency. If you do see a clock signal coming out of SYNC_CLK try turning it on and off with CFR1<22>.
Since the evaluation board doesn't work for us. We created our own board.
thank you I will try that and get back to you.
question I do set i/o update high after I set my CS back to high?
An I/O_Update is required to make your register changes take effect. There's usually one exception which is the digital power down bit, which doesn't require an update. Also I/O_Update either has to meet the setup and hold time relative to the SYNC_CLK output, or be held high for a minimum of 1 SYNC_CLK pulse width to guarantee that it is caught by at least one rising edge of SYNC_CLK.
ok we checked to see if there was a signal at the SYNC_CLK. There was no Signal at all So we master reset checked it again still no signal. now we changed CFR2 = 1; still nothing. Changed that to zero just in case. still nothing. recorded our signal coming into the chip and we are sending in a clock pulse to it. The chip is getting a clock signal. How ever no signal coming out of he SYNC_CLK.
sorry for the late delay but between all the class work this is our time to work on this.
We were trying to solder the EXT_PWR_DWN when you responded to us. That was the solution to the problem we were experiencing. Our current problem is that there is a 2-3 minute delay between sending the SPI commands and the AD9910 outputting a waveform. We have checked to ensure that we don't have any unnecessary delay commands in our micro controller operation. Any suggestions?
My best guess at the moment is maybe your I/O_Update pulse width isn't long enough. If you're sending it asynchronous to the SYNC_CLK output, maybe it's not being caught/triggered until the timing is just right.
Retrieving data ...