This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DAC81404: Unable to read back from DAC81404 through SPI. DAC81404's SDO gives float

Part Number: DAC81404

Hi TI support team, 

I am currently dealing with an issue with DAC81404. I coud not establish the communication between my ARM board and DAC81404. Can you please help me confirm the correct SPI mode for this DAC? diagram (Figure 7-1) shows SCLK idle low with data captured on the falling edge, is this CPOL=0, CPHA=1 (Mode 1)? What is the minimum required initialization sequence before the first register read is valid? Specifically: is a soft reset required, and must DEV-PWDWN be cleared before SDO will drive any data back?

 

Thank you for any feedback

  • Pisit,

    For the DAC81404, the SDO needs to be enabled before reading data from the device. There is an SDO-EN bit in the SPICONFIG register (Register 0x03, bit 2). Set this bit to 1 and the SDO becomes operational. 

    Here's a clip from the datasheet:

    Again, SDO should be operational after this bit is set. Let me know if this works for you.

    Joseph Wu 

  • Thankyou for the response,

    i will try that. But I also found a way to make it respond know but for some reason it didnt give the correct values in the register. For example I send 0x81000000 which is supposed to be READ to the DeviceID, and it gave me 800A7000 instead of 810A6000. It seems like it doesnt matter what I read, it doesnt provide the register's address that I am reading to. But when I read the SPICONFIG, it returns the correct bits 800AA400 (32bits), except the register's address which is supposed to be 0x03 or 830AA400

    Also, since I have some hardware design issue. basically every transaction of my SPI is 32bit instead of 24bits. If that is the case, how would I structure my TX buffer? i dont want CRC mode on

    )

  • Hi Pisit,

    SPI frame structure is not okay, i would suggest you fix that first. And without the CRC mode on, you need to write/read with correct 24 bit frame. 
    Meantime, I will check if 32bit frame can be used to do the read/write operation without the CRC mode.

    Thanks,

    Sanjay

  • Okay, thank you. 

  • because of my design, I can only send 32bit per frame and I was wondering how I should structure my frame. The datasheet mentioned that if the data is longer than minimum clock (24), it will just read the 24 MSB.

  • Were you able to test it with 32bits?

  • For normal default mode, LDAC is not required correct?

  • Hi Pisit,

    You can send the 24 bit data as your 32 bit data by padding zeros in the LSB side. For example - for a 24 bit write/read data 0x890012, the equivalent 32 bit data would be 0x89001200. 

    And yes, default mode of operation does not need LDAC (pin should be pulled to zero/GND). 

    Thanks,
    Sanjay  

  • Thankyou for the rely. But why is it that my SDO from DAC kept on outputting the incorrect format data? My SPI' clock speed is 2.5MhZ, I set the mode to be Mode 1, CPOL = 0, and CPHA = 1. And when I tried to write to a register such as SPICONFIG, I did 

    0x030A9400;  the register's values supposed to change to 0A94, but it stuck at the same default 0AA4.

    Could you please tell me or give me the example or sequence of how to interact with this DAC? The data frame set up example or SPI config on your Master side.



    Here is the photo on my oscilloscope
    I am sending 0x81000000 but receives 800A7000 instead of 810A6000
  • I also followed your instruction by padding the frame with 00 LSB but it doenst work. Write operation is not working at all.

  • Hi Pisit,

    As i suggested in the other e2e thread, please suggest a time to debug the issue (i have sent a mail for the same).

    Thanks,
    Sanjay