I designed a hardware with LTC2666 16bit DAC and I want to output some signals by giving the correct commands (I hope). However, When I send command, address and data word, MISO (or SDO) word doesn't match with the previous input (MOSI or SDI) word. It must give previous 32 bit data-word. Therefore analog outputs don't change. I also have a problem with signal level on MISO. I attach the picture at the end.
These are pictures from osciloscope to show all signals.
Green (CH4): MOSI (SDI)
Magenta (CH3): MISO (SDO)
Turkis (CH2): SCK
Orange (CH1): nCS
This is command 0x00A0<some random number>, write code to all, update code all
Current MISO data doesn't match with previous one:
One more strange thing is that the first 16-bit of MISO is always zero.
There is a digital isolator (ISO7763 from TI) between µC and DAC, and MISO signal goes very slowly to 3.3V level after CS signal is released (goes to 1). There is no push-down or pull-up resistors on lines.
Thanks in advance.
Yes, to use SDO you need to use a 32 bit data word:
What comes out of the LTC2666 will be 8 don't cares, and the the 4 bit command, a 4 bit address and then the 16 bit data. The edge of SCK will be in the middle of the SDO data to give the best margins.
As I said in my previous post, I am getting only garbage from SDO. Not first 8 bits are zero (don't care) but all 16 bits are zero. SDO doesn't give the exactly same 32-bit word as previously sent in SDI.
I think maybe the chip is damaged?
The problem is the clock signal, it has too much overshoot and noises. It comes from a µC (TMS320F28377D), but unfortuanetly the µC development board from TI doesn't have any filtering circuitry for clock signal. I tried also very slow clock signaling but it didnd't hlep. I tried now with a USB-SPI adapter from FTDI and I wrote a small software for sending command through USB->SPI->DAC, the DAC worked as expected.
Now I must consider a filtering circutry between µC and DAC.