Programming SigmaDSP chips (e.g. ADAU1701) using USB on STM32 microcontroller

I am designing a class D amplifier that will utilize the ADAU1701 DSP. On the same board there will also be STM32 MCU that has USB capabilities. The USB will be used for audio class and firmware updates but since the MCU also has several I2C and SPI buses it would be very nice if it could directly support programming of the ADAU1701 from Sigma Studio.

This would allow the user to connect the amp board directly to the PC where Sigma Studio is running and there will be no need to use external USBi programmer (such as the CY7C68013A based tools).

The question is: has anyone tried to implement this? I am a bit clueless where to start. Would that be even possible or is the external programmer the only option?
 
If I understand you correctly, what you are trying to do requires emulating the SigmaStudio protocol in the PC--in essence, making your own version of the USBi interface. That is going to be difficult, since that protocol is not publicly documented, as far as I know.

A much easier approach is to use SigmaStudio to design your DSP architecture, and then use the PC or MCU to control the DSP by writing to the Parameter RAM, using your own GUI. That's how Analog Devices intended the chip to be used, long before they made SigmaStudio available to the general public. There is a lot of info on how to control the DSP from a PC or micro at Audiodevelopers.com.
 
Perhaps the MA2304DNS is worth a look?
If you don't need that much power. (<37W at 4 Ohm)

It is basically a DSP and 2 channel Class-D Amp in one chip.
A version with more power would be great for active speakers....
This is very interesting chip. Definately worth a look but my aim is actually higher power. 150W or more. I did some experiments with the TAS3251 in the past also, it has DPS capabilities too, but the Sigma studio adds much more options. Thanks for the tip anyway!
 
If I understand you correctly, what you are trying to do requires emulating the SigmaStudio protocol in the PC--in essence, making your own version of the USBi interface. That is going to be difficult, since that protocol is not publicly documented, as far as I know.

A much easier approach is to use SigmaStudio to design your DSP architecture, and then use the PC or MCU to control the DSP by writing to the Parameter RAM, using your own GUI. That's how Analog Devices intended the chip to be used, long before they made SigmaStudio available to the general public. There is a lot of info on how to control the DSP from a PC or micro at Audiodevelopers.com.
The question is whether the USBi is something proprietary to Analog devices or not. I'm not sure. The external programmers that use this are usually based on the CY7C68013A chip which somehow provides this interface but it is not AD based (I do not understand completely how this is done on that chip).

I can use the Sigma studio to compile the design and fetch it to the EEPROM from which the ADAU1701 could boot, but the USBi interface allows real time tuning of the system directly from Sigma studio and that is something I would like to achieve.
 
would be fantastic if you could figure this out. I have managed to use a cheap CY7C68013A dev board as a programmer before using the instructions on Diyaudio (which i think are in @dzwer post). So the CY7C68013A could be included in a custom board for onboard USBi but this is an extra part and not very slick if you already have a USB interface for something else.
 
Perhaps the MA2304DNS is worth a look?
If you don't need that much power. (<37W at 4 Ohm)

It is basically a DSP and 2 channel Class-D Amp in one chip.
A version with more power would be great for active speakers....
There are many all-in-one solutions. Texas Instruments also has a bunch.

But none of them beats the ease and power of SigmaStudio unfortunately.
In fact most other solutions are just a complete pain to get it all working.
 
Two interesting projects for programming ADAU DSPs:
SIgmaDSP
TCPi Interface for Sigma Studio
And the classical way:
freeUSBi
These are all very interesting solutions a there is definately a lot to learn from these projects about the Analog devices DSP.
However, each of these is very specific and it seems that none of them provides answer to what I am looking for.

SIgmaDSP - this one relies on compiling the solution on PC and then uploading it to the DSP. It does not seem to support the real-time control over USBi interface
TCPi Interface for Sigma Studio - very cool indeed, but my amp board will not have wifi connectivity. But I will explore this project further
freeUSBi - this still relies on the CY7C68013A based solution which I would like to avoid
 
I just got an interesting reply from Analog device on their forums HERE.

Basically, they will not give me any code (which I expected) but they suggest I should look up solution myself as someone already has reverse engineered this. I wish this was true as I have been looking for this over a week with no success.

I will probably give it a try and do some reversing myself. These are quite deep waters for me as I am not an USB expert. So if I can't find out anything in a reasonable time, I will most likely give up and go the way that everyone else have been going.
 
@Gordon001
I am wondering if they don't simply mean the firmware dump someone once did just to clone the USBi controller?

I guess in theory it would be possible just to implement and use that firmware as a sort of black box approach in another microcontroller.
Basically emulating the kind of chip that is normally being used. To explain it from a more simple higher level approach.
 
  • Like
Reactions: AIM65
@Gordon001
I guess in theory it would be possible just to implement and use that firmware as a sort of black box approach in another microcontroller.
I don't think that will work. The SigmaStudio USBi Communication Channel is going to look for a specific PID (part ID) and VID (vendor ID) combination in order to communicate with the device. Unless you can make the USB interface on your micro report the right PID/VID combination, SigmaStudio won't communicate with it. There are some other wired Communication Channels that might work, but I know that some of the older ones only work with 32-bit Windows.

The TCPIP communications channels look a lot more promising for using SigmaStudio as a real-time GUI. I'd look into that approach.

Of course, you don't need SigmaStudio to implement real time control of the DSP. You can look at the compiler output to find out the cell address and just write the same data that shows up on the SigmaStudio Capture Window. This approach works with the I2C or SPI interface on any micro, as long as the voltage levels are correct. The downside, of course, is that you need to write your own user interface to control the SigmaStudio design.
 
I did have a look on that AARDVARK programmer previously. Originally I thought it is just another CY7C68013A based solution but now, after doing some more research on it, I found it is basically a MCU coupled with FT245B. This FT245B chip is nothing more than a converter between USB and parallel FIFO. For reverse engineering excercise, I can't imagine anything simplier. This could be a path to be explored.
 
  • Like
Reactions: kipman725