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.

DAC7578 I2C Issue when sending many data updates

Other Parts Discussed in Thread: DAC7578

Hello,

I'd like to say thanks for everyone's help here on the forum! And now onto the problem.. 

Initial Testing

I am using the DAC7578 to output 7-bit MIDI information. My initial testing was to output the 7-bit information directly scaled to 12-bits. This testing allowed one data transmission per user interaction. This works fine and in real time. The data sequence after a user interaction goes as follows:

Address--->Command & Access--->MSDB--->LSDB---->End

Continuous Data Transfer Testing

7-bit information has an audible digital stepping to it, so I needed to output additional data to the DAC for every user interaction. The 7-bit information is scaled to 12-bit by multiplying the 7-bit value by 32, and outputting every integer from the last output value to the current value. For example:

LastValue = 10*32;

CurrentValue = 20 *32;

- Output the integers 320 through 640. 320 Messages in total

The data sequence after a user interaction goes as follows.  I have tried the Command and Access byte set to 0x00 and 0x30:

Address--->Command & Access--->MSDB--->LSDB--->MSDB--->LSDB--->.......--->End

This only updates the DAC output a single time. Does anyone have any suggestions as to why my output isn't updating?

Timer Fired Testing

I have also tried one additional solution to my problem. I have set up a timer that fires every 2 ms. When this timer fires, it updates my DAC's output register. This solution will update my register every time I would like it to, but happens too slowly. So I speed my timer up to .25 ms. The DAC does not update at this speed. Should I try high-speed mode? In this testing mode I use the following data sequence:

Address--->Command & Access--->MSDB--->LSDB---->End

I would like to use the other data sequence, but I cannot get the DAC to function using that method.

Does anyone have suggestions to make the quicker data sequence work? Should I be using high-speed mode? Any other suggestions are very welcome.

  • Hi Mark,

    What you have described in your "Continuous Data Transfer Testing" should be correct. Assuming LDAC is tied low the CA byte can be set to either 0x00 and 0x30 and you should still have success. What is your SCL speed? Have you probed the bus to make sure you are getting ACK signals after each transaction?

  • Hi Kevin,

    Sadly I do not have the luxury of having a probe to view the I2C transactions. As it turns out the continuous data transfer was occurring, but was happening too quickly to hear! I never would have thought that was the problem. 

    The problem was fixed by adding a little bit of delay between each set of data.

    Best,

    Mark