I2C multi-master with USBi and microcontroller
We are debugging ADAU1701 algorithms on our custom target hardware using SigmaStudio and USBi. Our target hardware also has a microcontroller as I2C master connected to ADAU1701. The microcontroller implements DSP Readback functions from the DSP as part of a control loop, and we would like to tune the DSP parameters in real-time with SigmaStudio with the microcontroller in the loop.
Can the USBi as an I2C master interact with the DSP along with the microcontorller?
I know that I2C protocol supports multi-master--I am asking whether the USBi implements this. I looked at AN-1006, "Using the EVAL-ADUSB2EBZ app note but it was silent on this topic as far as I could tell.
Thanks,
John
Audio Signal Processors
SigmaDSP Audio Processors
adau1701
I haven't found a clean way to do this; the two masters usually end up fighting each other.
The best solution I've used is to "pause" interaction with the microcontroller while we fiddle with SigmaStudio, then re-enable when we're done. It's not elegant but it works.
Hello John,
I agree with Joseph's method of working around this issue. The USBi does not support multiple masters. If this needs to be done often then you could design in an I2C repeater so you can disable one of the masters. This can get a bit tricky so the brute force method of pausing the uC and connecting SigmaStudio is probably the best way to handle this.
Dave T
Thanks for the helpful answers.
Could there be some other way to transfer DSP Readback data to the microcontroller? We have control over the uC code implementation, so perhaps a SigmaDSP output pin could be used to bit-bang the data? Or is there another SigmaDSP variant that supports additional standard I/O like SPI or a second I2C port? We have implemented a method of converting the desired result to anlaog in the SigmaDSP and then sampling this analog signal in the uC, but it leaves a bit to be desired.
John
Please log in to reply.