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.

DAC8760: DAC8760 CRC Bit Setting up time

Part Number: DAC8760

Hello Team, 

           We have two DAC's connected to same SPI lines of MCU. Our Design is similar to the design mentioned in DAC8760 data sheet (i.e. we use gate to select and supply clock to each DAC's). In our application we need to perform DAC8760 power cut (both DAC's) and restore power to DAC's then Init DAC, Set CRC, Write output and Write Control register for each DAC one after another in For loop.

           What we observe is that when DAC is powered back after cutting it's power supply we initialize DAC (0x560001), set CRC for DAC1 (0x570008) and set CRC for DAC 2 (0x570008).

           Write DAC Data register (0x01xxxx) for DAC1, Write to Control register (0x55100x) for DAC1. 

           Write DAC Data register (0x01xxxx) for DAC2, Write to Control register (0x55100x) for DAC2.

           We ran endurance testing and saw that after some random cycle CRC bit in the Configuration is not set for DAC1 every time due to which 4 byte frames sent during write to DAC's are blocked.

           Generally how much time will it take for DAC8760 to set CRC bit in Configuration register? 

           We are setting up CRC bit in a for loop for both DAC's, will there be any impact for CRC set because of this loop?

CRC setting part code looks something like this,

for (uint8_t i = 0; i<2; i++)

{

 //Setting CRC bit by writing 0x57008; (3 bytes SPI frame)

}

Best regards,

Naveen

  • Hi Naveen,

    I have a few initial questions to rule out any other communication issues.

    Have you been able to verify that the SPI messages are correctly getting to both devices? Can you share captures of the DAC1 vs DAC2 CRC writes?

    Also, if you wrote additional 4 byte frames afterwards, does DAC1 ever accept them?

    Thanks,
    Lucas

  • Hello Lucas,

     Can you share captures of the DAC1 vs DAC2 CRC writes? - Unfortunately we don't have way to solder SPI test points as it's a final product.

     If you wrote additional 4 byte frames afterwards, does DAC1 ever accept them? - No

    So code snippet looks like this

    if(crc_stat[i] == reset)
    {
     Writing 0x57008 //Setting CRC Bit
     delay 100 us
     read crc status 0x02000B
     read crc status 0x000000 
     if (crc_stat[i]  == 0x08)
      {
        crc_stat[i]  = set;
      }
    }

    if(crc_stat[i] == set)
    {
      Write data 0x01xxxx;
      Configuration 0x55100x;
    }

    If the CRC set and CRC bit is read back properly then the DAC should work, but we see issues with the highlighted part.

    How long does CRC bit set will take for this Chip and How does the internal CRC Hardware of DAC8760 look like?

    Best regards,

    Naveen

  • Hi Naveen,

    The datasheet recommends sending a no operation command afterwards if CRC enable is the first thing you are sending to the device. This can be done by toggling the LATCH.

    For more information about the CRC checking, I would recommend referring to section 8.3.10 Frame Error Checking of the datasheet.

    There shouldn't be any timing requirement other than having separate frames between writes / reads.

    If this doesn't resolve the CRC issue, it implies the issue may be the SPI communication coming from the host and would likely need to be verified.

    Thanks,
    Lucas

  • Hello Lucas,

    I shifted CRC setting part to a different function where CRC bit is set in a loop (to rule out CRC bit takes sometime to set), if it's set I don't set again and if not I'm setting this again. This resolved the issue. Thanks.

    Best regards,

    Naveen.

  • Hi Naveen,

    I'm glad the issue is resolved, thank you for letting me know your fix.

    Thanks,
    Lucas