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

Problem with GPIO_ADAU1701

SigmaDSP & SigmaStudio Suzanne.li Apr 28, 2011 00:00 13 replies Original on forum ↗
Subscribe
Suzanne.li Question
Apr 28, 2011 00:00

Recently, we are using the GPIO function of ADAU1701, We want to increase and decrease the volume using PUSH-BOTTON VOLUME CONTROL, but we had a problem.

We found that it worked well while connected to the computer, but it didn't work in self-boot mode. And if we wrote asending values in the table of PUSH-BOTTON VOLUME CONTROL (eg: 0~1), in self-boot mode it always worked in the minimum volume(0), the bottons didn't work; if we wrote desending values (eg: 1~0), the volume could only be maximum and minimum as we pushed the buttons, no matter how many values we put in the table.

Then we found an example project in Version 3.2, it works very well, either in self-boot mode or connected to the computer. We noted that in the example project there was a switch for comparing the PUSH-BOTTON VOLUME CONTROL and bypass, and if we deleted that switch, the same problem appeared...

After that we did a lot of tests, it appeared that if we use PUSH-BOTTON VOLUME CONTROL, there must be a switch to ensure that ADAU1701 works well in self-boot mode.

Does this switch mean something? Or is it a bug? Or it's just that we didin't set the project properly?

The two attaches are the example project and the project without switch.

Looking forward to the resolutions! Thanks very much!

Audio Signal Processors

control

volume

SigmaDSP Audio Processors

gpio

push-button

adau1701

Show More

ADIApproved Reply
Apr 29, 2011 00:00

Suzanne, thanks for your detailed report. I was able to duplicate the issue on my board. It looks like this might be a problem with the EEPROM generation. Definitely a bug, but I'm not sure exactly what it is. I will report it to the software team.

However, I have good news. I found a workaround!

First, I changed the ADAU1701 to IC1 and the E2Prom to IC2. I'm not sure if this is necessary, but I just did it that way because I always think of IC1 as the primary IC.

Then, in the Capture window, click the Clear Output Data button.

Now, Link-Compile-Download as usual.

You'll see the registers, program RAM, and parameter RAM contents appear in the capture window.

Click the "<<" button in the upper right of the capture window to open the sequence window.

Select all lines in the capture window and click-drag them over to the sequence window.

Click the Export Sequence Data button.

Change the Save As Type setting to EEPROM(ascii) (*hex).

Choose a filename like "Selfboot" and click Save.

In the Hardware Configuration tab, right click the E2Prom and select "Read/Write Window"

Click the top box to select the source file.

Point it to the SelfbootIC_1.hex file you just created. It should be about 65 kB.

Click the "DownLoad File to E2Prom" button. Do not click any other buttons in this window!

You'll see a progress bar as the ~9000 addresses in the EEPROM are written.

Now, self-boot your board. It should work properly. I tested it on the evaluation board and it was a successful test.

My project and .hex file are attached.

1f9b280776255dc5e3cfc68735e2bde2.jpg
1f9b280776255dc5e3cfc68735e2bde2.jpg
1f9b280776255dc5e3cfc68735e2bde2.jpg-236x161.jpg
1f9b280776255dc5e3cfc68735e2bde2.jpg-236x161.jpg
7fa610375da476e7fa10c8b697f07ae0.jpg
7fa610375da476e7fa10c8b697f07ae0.jpg
7fa610375da476e7fa10c8b697f07ae0.jpg-177x105.jpg
7fa610375da476e7fa10c8b697f07ae0.jpg-177x105.jpg
f6f16d7e87279c9ba84ec112472dabd9.jpg
f6f16d7e87279c9ba84ec112472dabd9.jpg
f6f16d7e87279c9ba84ec112472dabd9.jpg-220x72.jpg
f6f16d7e87279c9ba84ec112472dabd9.jpg-220x72.jpg
cc0671b385b808c2e4fedaa718c5cace.jpg
cc0671b385b808c2e4fedaa718c5cace.jpg
cc0671b385b808c2e4fedaa718c5cace.jpg-450x103.jpg
cc0671b385b808c2e4fedaa718c5cace.jpg-450x103.jpg
65d09ddbc889c6730676d18dde345a72.jpg
65d09ddbc889c6730676d18dde345a72.jpg
65d09ddbc889c6730676d18dde345a72.jpg-179x103.jpg
65d09ddbc889c6730676d18dde345a72.jpg-179x103.jpg
c45fb800651c3d0d8181d152e7599439.jpg
c45fb800651c3d0d8181d152e7599439.jpg
c45fb800651c3d0d8181d152e7599439.jpg-450x76.jpg
c45fb800651c3d0d8181d152e7599439.jpg-450x76.jpg
668ea16b2e6b14c421679acb6cae4f7b.jpg
668ea16b2e6b14c421679acb6cae4f7b.jpg
668ea16b2e6b14c421679acb6cae4f7b.jpg-255x73.jpg
668ea16b2e6b14c421679acb6cae4f7b.jpg-255x73.jpg
c11f337fba66f4813392c86217687502.jpg
c11f337fba66f4813392c86217687502.jpg
c11f337fba66f4813392c86217687502.jpg-450x83.jpg
c11f337fba66f4813392c86217687502.jpg-450x83.jpg
4ca258c7c1607a43d8b4de8371332d64.jpg
4ca258c7c1607a43d8b4de8371332d64.jpg
4ca258c7c1607a43d8b4de8371332d64.jpg-450x106.jpg
4ca258c7c1607a43d8b4de8371332d64.jpg-450x106.jpg
f0690d91801bcb7e87137bfc0ee79212.jpg
f0690d91801bcb7e87137bfc0ee79212.jpg
f0690d91801bcb7e87137bfc0ee79212.jpg-428x162.jpg
f0690d91801bcb7e87137bfc0ee79212.jpg-428x162.jpg
81143e30efcf4561a31992caddaf7843.jpg
81143e30efcf4561a31992caddaf7843.jpg
81143e30efcf4561a31992caddaf7843.jpg-383x99.jpg
81143e30efcf4561a31992caddaf7843.jpg-383x99.jpg
f5df4f99e89b06fa53b020b57ab986f6.jpg
f5df4f99e89b06fa53b020b57ab986f6.jpg
f5df4f99e89b06fa53b020b57ab986f6.jpg-124x143.jpg
f5df4f99e89b06fa53b020b57ab986f6.jpg-124x143.jpg
a7b8a5ec3d120307618873e3dcce4b13.jpg
a7b8a5ec3d120307618873e3dcce4b13.jpg
a7b8a5ec3d120307618873e3dcce4b13.jpg-291x160.jpg
a7b8a5ec3d120307618873e3dcce4b13.jpg-291x160.jpg
2f1e35636326cb3ef1db1b3018ce7ee1.jpg
2f1e35636326cb3ef1db1b3018ce7ee1.jpg
2f1e35636326cb3ef1db1b3018ce7ee1.jpg-239x144.jpg
2f1e35636326cb3ef1db1b3018ce7ee1.jpg-239x144.jpg
Suzanne.li Reply
May 3, 2011 00:00

Thank you for your response, Brett. I have tried as your workaround and yes, this worked properly.

And in fact, if we use the "Push and hold", "Up/Down Control w/Lookup Table" and "Single slew ext vol" instead of "Push-button Volume Cell" which is a combination of those three, it works well too.

Thank you!

stmoeller60 Reply
Aug 19, 2011 00:00

Hi Brett,

it seems that it doesnt work for my project with your method.
Please have a look on my test project.

There are 3 Pushbuttons programmed to drive three LED On/off, togglewise.
When I Selfboot, it doesnt recall the switch settings.

Any idea ? Can you reproduce the error ?

ADIApproved Reply
Aug 19, 2011 00:00

stmoeller60 wrote:

When I Selfboot, it doesnt recall the switch settings.

I'm a little confused about what you mean. Could you explain in more detail, please?

stmoeller60 Reply
Aug 19, 2011 00:00

the pushbuttons switch the LEDs "On" or "off" with the "toogle on<off" blocks Those Blocks should readback the registers when I selfboot the board so the LEDs show what they've been when board powered down.

https://ez.analog.com/cfs-file/__key/communityserver-discussions-components-files/396/bdad76edfa23ec69dc5fa4851908bb4c.htmlhttps://ez.analog.com/cfs-file/__key/communityserver-discussions-components-files/396/0511.bdad76edfa23ec69dc5fa4851908bb4c.html

5c16bfaae1ca7e65f82a75df93cd6cb3.jpg
5c16bfaae1ca7e65f82a75df93cd6cb3.jpg
5c16bfaae1ca7e65f82a75df93cd6cb3.jpg-450x368.jpg
5c16bfaae1ca7e65f82a75df93cd6cb3.jpg-450x368.jpg
ADIApproved Reply
Aug 25, 2011 00:00

The interface writeback function requires very special EEPROM formatting. You can see that in the datasheet, where the EEPROM format is described. There are some commands that need to appear at the end of the EEPROM in order to set the part in writeback mode.

At some point in SigmaStudio's development history, we made some changes to the way the EEPROM code was being generated. Unfortunately, from what I can see, this fix might have broken the functionality for the writeback commands. So, now I am going through the SigmaStudio code and the design documentation for the ADAU1701 in order to find out how to restore this functionality.

I'm sorry, but I think it might take some time until we can understand exactly what needs to be updated and then make the change. I'm currently investigating this with the software team and the hardware designers.

ADIApproved Reply
Aug 25, 2011 00:00

Are you aiming for microcontroller-free operation of this product?

stmoeller60 Reply
Aug 26, 2011 00:00

thanks for the answer Brett, - I'm using the eval board as it is at the moment. I'll put it in a metall case to have it as a pedal for demonstration use.
Programming it via I2C with USBi Interface and PC. Looking forward hearing from you what your software and hardware guys tell you.

CDevin Reply
Jan 4, 2013 00:00

Brett,

Was this issue resolved in 3.7? I'm still having difficulty getting a selfboot and writeback with a simple module using the pushbutton volume block. I have verified that other algorithms can selfboot, so it appears to be unique to the block. I tried the alternate load method, to no avail.

Craig Devin

ADIApproved Reply
Jan 9, 2013 00:00

Craig,

You should be able to get this to work, for now, with the workaround described here.

https://ez.analog.com/message/48651#48651

Unfortunately it requires that you do a bit of manual modification to the data stored in the EEPROM.

CDevin Reply
Jan 9, 2013 00:00

Brett,

Thank you. I’ll try it out.

-Craig

CraigD Reply
Jan 26, 2015 00:00

Brett,

Was this issue resolved in later versions of SigmaStudio?

Regards,

Craig

EZAdministrator Reply
Apr 29, 2019 00:00

This question has been closed by the EZ team and is assumed answered.