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.

DAC7678: Updating all 8 channels quickly

Part Number: DAC7678


In my application, I would like to update all 8 channels of the DAC as quick as possible.  If I start updating with DAC channel A, can I continue to send the 2 bytes required for each of the other 7-DAC channels without starting a new I2C sequence. 

I would like to write all 8 channels using the 3.4MHz ability of this DAC but I understand that I have to start at a slower bit rate then switch to 3.4MHz and would like to only have to do this one time for all 8 channels.

Thank you.

  • Hi David,

    According to the datasheet, it does not look like the device supports streaming as you describe. As per pages 27 and 28:

    You must send an Address byte, a Command Byte, and then MSB and LSB bytes. You can continue to send MSB + LSB bytes without the Address and Command bytes if the command does not change. So for example, you can continue to update DACA without resending Address and Command bytes each time, but if you want to switch to DAC B you need to send a new Address and Command.

    The device remains in High Speed mode until it receives a stop condition. Thus, if you send the 8 DAC commands, broken up with Repeated Start conditions instead of Stop conditions, the device will stay in the High Speed mode, and you will not have to start at the slower clock rate more than once.

    Let me know if you have any other questions.

    Thanks,
    Erin

  • Erin,

    Thank you for responding so quickly.  So, by using the repeated start instead of stop condition, I can save the time it would take to switch to 3.4MHz mode (about 9us, as I calculate).  So to update all DAC channels as fast as possible, I would have to send:

    1. the start condition

    2. the 8-bit H/S master code @ 1MHz

    3. a repeated start and 36-bits for each DAC channel @ 3.4MHz

    4. the stop condition

    As I calculate it, I could update all 8 DAC channels in about 96us.  In my application, I have 3 DAC7678 DACs on the same I2C bus so to update all 24 DAC channels it could take about 300us.  Did I calculate this correctly?

  • Hi David,

    Yes, this looks accurate. 

    There is a shortcut you can take if you are writting the same data to all DACs. For example, if all of the DACs in device 1 need code 0x00F, you can write this code to the Broadcast channel. This command sends the code to all DACs at once, so you only have to do one command vs the 8. 

    Thanks,
    Erin

  • Erin, 

    I my case, I am using 5 of the DAC7678s on two separate I2C ports.  These DACs are used to control the intensity of 35 different wavelength LEDs in a solar simulation project.  I think my best option for speeding things up would be to transfer the data to the two I2C ports simultaneously using DMA.  At least I should be able to update all 40 DAC channels in about 300us as opposed to 500us.  That is slower than I was hoping for, but it will work for this specific project.  What would have been really nice is if the octal DACs had an increment register feature so that I could have just written 8 consecutive DAC values, reducing the update time from 300us to about 45us.  Oh well, I am very pleased with this DAC and have used it on several designs.  I see that TI now has an upgraded version that is up to 16-bits.  I'll have to take a deeper look at that part.  The improved resolution will work well for other projects that I am working on that could benefit from the improved dynamics range.

    Thanks again,

    David

  • Hi David,

    A few of our devices do feature data streaming, where you can start a communication, then send the device multiple bytes of data and the device will increment the register address accordingly. For example, you can look at the DACx1408 and DACx1416. These are 12/14/16 bit resolution DACs with SPI data streaming. They unfortunately don't have I2C, but with the 16 channel DAC you could consolidate two of the devices on your I2C line into one. SPI also has the benefit of higher clock speeds compared to I2C. 

    https://www.ti.com/product/DAC81416

    Thanks,
    Erin