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

ADAU1452 I2C Master Control Port IO (Startup Boot) continuously sending

SigmaDSP & SigmaStudio Mihei Sep 20, 2022 00:00 6 replies Original on forum ↗
Subscribe
Mihei Question
Sep 20, 2022 00:00

Hi,

I'm trying to config an external codec via I2C from ADAU1452. I'm using the Startup Boot version of the Master-Control-Port-IO expecting it to only send one time after DSP Boot the XML-code below, but it is sending it continuously with a period of 313us. Does anybody has any idea what I might setup wrong?

<?xml version="1.0" standalone="no"?>
<ROM IC="Codec DA7218" IC_Address="26" Address_byte_length="1">
<dateTime>2022-09-15T12:35:58.2803567Z</dateTime>
<version>4.6.0.1812</version>
<page modetype="Mode 0">
<action instr="writeXbytes" len="2" addr="9" ParamName="SOFT_RESET" DspName="ResetCodec">80</action>
</page>
</ROM>

Thanks and best Regards

Audio Signal Processors

adau1452

software

Sigmastudio 4.7 (and 4.5)

SigmaDSP Audio Processors

i2c write

Show More

Harishgowtham Reply
Sep 22, 2022 00:00

Hello Mihei,

Could you please send us your project with that xml file?

Regards,

Harish

Mihei Reply
Sep 22, 2022 00:00

TestAEC-RES_ADAU1452.zip

Mihei Reply
Sep 22, 2022 00:00

the CodecReset-File is the one I'm sending at Boot up.

Harishgowtham Reply
Sep 30, 2022 00:00

Hello Mihei,

Are you intentionally sending the CodecReset file twice(startup boot block and runtime (with trigger) block has same file CodecReset ) ?

For the master control port block with trigger, It keeps sending the xml files whenever trigger applied in the trigger pin. You used a switch input to the trigger. If you turn ON the switch then file will be sent continuously If you want that block to perform once then you have to use a one shot block for triggering once.

So after resetting the codec, you want to program the codec once with codecsetting file? Is that what you are trying?

Regards,

Harish

Mihei Reply
Sep 30, 2022 00:00

Hello Harish

the switch of the additional master control ports are off at the beginning (this was also one of my first thoughts). I also tested a version with only boot master control port, but with the same result.

This week I removed everything about the AEC and NoiseReduction which makes the boot master control port working as expected. But until now I did not find the reason and how to fix it (make it work with AEC).

Yes I was testing about the codec settings. I found the right codec settings now and want to send them together/after reset and delay in one file (my task for next week).

Best Regards

Michael

DaveThib Reply
Oct 6, 2022 00:00

Hello Michael,

This one was really a challenge. I actually spent all day on this one. I finally found the problem and it is working on my setup. I did have to change the project to use SPI since I can see the SPI transactions without having to have the exact I2C part out on the bus.

Go to the "Disable Logic" tab in your project. It will look like this.

I suggest you drag in and label the controls like this:

How these blocks work is that you have to point them to a parameter to change every sample period. So you have to populate the list of parameters in your project so compile the project then you can click on the "Select" button.

Before you change anything you will notice that there is something really wrong. Because you select DM0 and then go to the "Block Name" pull-down field and it will be blank when it is supposed to have the list of blocks and variables for each block. So something is corrupted and these cells are writing to the wrong places in memory.

So delete all four cells so you will lose the names which is why I suggested you label the blocks with user comment blocks.

Go to the DSP Functions library and pull out four Parameter Update blocks.

Connect them to the logic coming into the block. Then compile the project.

Then click on the "Select" buttons and set each one to the correct block and variable. It will look like this:

Do all four. Then compile the project again and all should be right with your project.

It fixed it in my copy.

Now the Write to initialize the codec only happens once.

By the way, the other Control Port Write with an external control input blocks will only happen once when you switch control on the input from zero to one. If it stays at a "1" it will not continue to send out the commands. You have to turn off the switch on the input and turn it back on and it will send it again. It works just like you would expect it to.

Dave T

pastedimage1665087012931v1.png
pastedimage1665087012931v1.png
pastedimage1665087123525v2.png
pastedimage1665087123525v2.png
pastedimage1665087541592v3.png
pastedimage1665087541592v3.png