We have built a prototype board using the AD9115 DAC and I’m trying to configure it using the SPI port and am having trouble. Here’s what I’m doing and what I’m getting:
- I power up the DAC and then toggle the RESET/PINMD pin from low to high to low to reset the spi port
- I bring the CS pin low
- I send 8 SLCK’s and transmit “0xE0” over the SDIO pin. This should allow me to read 4 bytes from the DAC starting at address 0.
- During the next 32 SCLK pulses I expect to read the default values from the first 4 registers, which are 0x00, 0x40, 0x34, 0x00. But instead I’m reading 0xFF, 0x09, 0x00, 0x00.
- I bring the CS pin back high
Writing to the chip and then trying to read what I just wrote gives similarly incorrect results. Anyone have any experience writing and reading from the DAC that could help me figure out what's wrong? Looking at the waveforms on the scope, everything seems to match the datasheet. The CS pin goes low before the first SCLK edge, the data is changing state on the falling edge of SCLK so it's ready to be sampled on the rising edge. The CS pin doesn't go high until after the very last SCLK edge of the 5th byte. Sometimes the DAC will try to write to the SDIO pin while I'm trying to write the "0xE0" instruction, telling me that me and the DAC are obviously out of sync, but I have no idea how that could have happened when there's no stray SCLK edges or CS's.
Just for grins we put the part in pin mode and then we can at least get the DAC to output a waveform on the Iout and Qout pins, so it seems like the part is working OK otherwise. We also tried replacing the DAC just in case the first one was damaged but have gotten similar (yet not identical) results out of the SPI port.
Any help will be appreciated.