ΣSigmaStudio Ask AI Русский Log in

ADAU1701 STM32

SigmaDSP & SigmaStudio YLmazGNDZ Dec 3, 2021 00:00 4 replies Original on forum ↗
Subscribe
YLmazGNDZ Question
Dec 3, 2021 00:00

Hello. I want to use ADAU1701 DSP with STM32 processor. I want to read and use features such as sound on/off, increase and decrease over the processor. Is there a source code for this? Should I use the sigma studio app to do this? After programming ADAU1701 using Sigmastudio application, do I need to receive data with STM32 or can I program it directly? I would be glad if you help. Have a nice day.

Audio Signal Processors

SigmaDSP Audio Processors

adau1701 micro controller

adau1701 sigmastudio

adau1701

DaveThib Reply
Dec 3, 2021 00:00

Hello IstanbulUniversity,

Your questions are very general so I cannot fully answer everything but I will try to point you in the right directions and explain a few things.

First, this forum has MANY entries that deal with the ADAU1701. Learning to search the forum will be a lot of help.

Then there is the Wiki help files, Tutorials, Guides, Walkthroughs, and other Information [Analog Devices Wiki]

There is a lot of info on the Wiki.

You must use SigmaStudio to compile the schematic diagram into DSP code. You cannot directly write in machine language. Once the program is written you have two ways to operate and program the part. You can load the program onto an EEPROM and the DSP can boot itself from the EEPROM. The other way is to load in the program from either an MCU or of course from SigmaStudio.

SigmaStudio two basic jobs, design compile and load in a program and the second thing is to control the program objects operating in the DSP. The DSP code is run in the DSP not in SigmaStudio. All SigmaStudio does is write parameters and read parameters into and from the DSP using SPI or I2C. This is exactly the same way an external MCU would control the objects. So SigmaStudio is acting just like an MCU would be acting.

SigmaStudio has a capture window that shows most of the communications back and forth from the DSP and the computer. Some things are suppressed like when reading meters or continuous readbacks because those happen usually every 10ms so that would flood the Capture
Window instantly making it unusable. So we suppress those communications. So watching the Capture Window will help you understand how and what is needed to control the DSP program.

In addition, the Capture Window has an additional tab called Params. This one allow you to see what parameters are exposed to external control and you can see what the values are as you adjust controls in SigmaStudio. This is a great tool for teaching. I am also a professor so I understand the value of this as a teaching tool.

This should get you started. Are you going to use this in a DSP course or is this just a semester project for one student?

Dave T

bestekemaloglu Reply
Dec 6, 2021 00:00

Hi Dave. I also need to communicate stm32 and adau1701 at the place where I do my internship. How can we write a code in stm32 and send it to adau1701? Do we communicate when we give the command we sent from stm32 directly to the input of adau1701 and set up a circuit in sigmastudio? Or should it be done in other transactions in between?

DaveThib Reply
Dec 6, 2021 00:00

Hello,

Look at the link I supplied in my first post. Scroll down and there is a tutorial for implementing microcontroller programming and control of the DSP using the System Output files. You have to use SigmaStudio to compile the program and then you output the system files.

Dave T

YLmazGNDZ Reply
Dec 7, 2021 00:00

Hello there. Thanks a lot for your information. It worked great for me. BasicuCIntegrationTutorial helped me a lot. I'm stuck on one thing. Can you help me? Code is written on STM. I am using HAL library. How can I edit this function? I2C_GenerateSTART How can this function send both the address of the device to send, the address of the data and the data? Sorry, I don't understand this function.

void SIGMA_WRITE_REGISTER_BLOCK(int devAddress, int address, int length, NAME_REG_TYPE *pData )
{

int ii = 0;
int zz = 0;
Tx_Idx = 0;

----- Transmission Phase -----
ThisBufferSize = Address_Length + length;

I2C1_Buffer_Tx[0] = (address & 0xFF00)>>8;
I2C1_Buffer_Tx[1] = address & 0x00FF;

for(zz=0;zz<length;zz++)
{
I2C1_Buffer_Tx [zz + Address_Length] = pData[zz];
}
Tx_Idx = 0;
for(ii =0;ii < ThisBufferSize;ii++)
{

NextBufferEnd = ThisBufferSize;//I2C1_numbytes[ii]
if(ii == 0) I2C_GenerateSTART(I2C1, ENABLE);

// Send data
while(Tx_Idx < NextBufferEnd)
{

}

}