Wiring & Hardware configuration Pushbutton ADAU1452 MP12

Hi everybody,

I am trying to connect an external momentary push button to my EVAL ADAU1452 Revb in order to be able to select different sources / entries but I am not sure about the wiring and hardware configuration :

Extract from my project :

1) First of all, I don't know if I have to choose GPIO 0, 1, 2 or 3..., and same for Interface 0, 1, 2 or 3. By default, I left it at 0, what is the rule .

2) I wired the MP12 pin on header J3 on position 4 and also wired the position 2 as the ground. Is it right ?

3)  How do I configure the hardware configuration table ?

- Slave select channel : how do I know which channel to select ? I choosed "0".

- Debounce time : I tried with and without debounce time

- MP12 Pin Mode : I choosed "Input from PIN"

- MP12 Pin Function : I choosed "Multipurpose function"

If I replace the GPIO with a "push button" from the "source" menu, it works with my mouse.
If then I replace the "Push button" with the GPIO and plug the wires, it doesn't work.

Thanks for your help and nice easter,


  • 0
    •  Analog Employees 
    on Apr 5, 2021 3:36 PM

    Hello Fabian,

    There is a lot to unwrap here. 

    1) If you are using GPIO port 12 then you need to set SigmaStudio to look at GPIO 12. So no, leaving it set to zero is wrong. 

    Then you need to set the registers. That GPIO pin is a multifunction pin so you need to set it to be an input and to be in the multifunction pin mode. You did do that correctly. Slave Select channel does not apply in this case. That is for the use case where you use this pin as a Slave Select for the master serial port in SPI mode. So that register is ignored. 


    For the hardware setup. Look at the schematic diagram in the user guide for the pinout of the header. The odd pins are ground. The even pins are different signals so you do not have it correctly setup. I have also attached here an older document that explains how you should wire up the hardware. You will need a pull-up resistor and I suggest you also use a 0.01uf or 0.1uf cap as an initial filter for debounce. Then yes, it is a good idea to set the hardware debounce. 10ms or 20ms should be good. 


    I suggest you place a readback cell on the output of the toggle counter. This way you can see what number is being sent to the MUX. 

    Also, place one on the GPIO input. Set it to HEX and you should see the LSB change when you press the switch. Split up the problem so you can see what it going on. This is one of the strengths of SigmaStudio. I think you have the program flow setup correctly. 

    If you still have issues then attach the project so I can look at all the registers more closely. 

    Dave T

  • Hi Dave

    many thanks for your complete answer.

    I am a beginner and sometimes, the difficulty is to know what you can do and where to find the information. For ex., I didn't understood that GPIO12 is for PIN MP12, when I had a look at the different examples, I always saw 0, 1, or 2, thinking that I had to name the GPIO in an ascendant way to my projects.

    I will read carefuly the attached file and get the stuff. For the moment, I am using an external potentiometer to change the entries, I needed to go on in my project I attached a picture.

    My big worry now is the dangerous Plop when I switch off the board, I believe that it is a problem which has already been discussed. I will search about it.

    I agree with you that this board is really fantastic. It is my first DIY project like this and I have a lot of pleasure spending time with it.

    Thanks again and all the best, my questions can be considered as replied.

    Best regards,


    PS : I would have like to insert a picture of my project but it doesn't accept my URL

  • 0
    •  Analog Employees 
    on Apr 6, 2021 1:49 PM in reply to fabian.tuempling@gmail.com

    Hello Fabian, 

    OK, I see now, in the new world of software pins might be assignable but in this case it is not. The hardware pins have specific GPIO assignments so SigmaStudio needs to be told which one you want to use. 

    There are so many ways to use GPIO selections. You said you are using a potentiometer to change the entries. It is possible to use an AUXADC to control a MUX or other uses that are discrete and not a continuous functions. I think I have an example file for that. It is also useful for things like a single pole 12 throw switch where you setup a resistor ladder that feeds into an AUXADC input. Then SigmaStudio can decode the switch position. 

    The thump is actually difficult to take care of. It comes from the codec so the DSP does not have much control over it. Since you are using our eval board it is more difficult to modify the opamp output circuit. Look into a way to implement an external mute control. I did look at the picture you sent of your project and I am not certain what it actually does? It is not a power amp. So if there is a way to implement a relay mute circuit then you can have an enable line from a GPIO port of the DSP so that it will unmute when the DSP boots. The issue is that to make it mute again you need to have something monitoring the power supply to mute it as the power is going down. 

    Dave T

  • Hi Dave,

    once again, thanks a lot. It is very grateful that a little user on the other side of the ocean gets answers from an experienced user. Once again thank you.

    You are right, this is not an amp, I am using the EVALADAU1452 as a DSP / active filter / loudspeaker management. The big black card you see is a double DAC.

    The configuration is :

    - 1 analog input without volume control for my old Luxman preamp for my vinyls

    - 1 anlog input without volume control for my home theater RCA output on the R/L main speakers, the home theater amp managing the volume of all 7.1 outputs

    - 1 spdif input with volume control for all spid inputs coming from the spdif fixed output of my home theater, acting as a digital hub in this case

    - active crossover up to 3 outputs (2 RCA stereo directly from the eval + 1 RCA / XLR from the black card which is a DAC connected to the SPDIF output)

    - 2 amps for open baffles

    I can therefore put together analog sources, digital sources and home theater + active crossover without unnecessary AN / NA decoders for digital sources. One of the great feature of the eval is to have a variable digital output which I could find nowhere on usual preamps.

    I choosed the solution of a motorised potentiometer that yes, I am using with a demux which converts the analog value into a digital value for the volume control. This in my case the ideal configuration, the wole box beeing hidden in the furniture, I moved the remote control sensor out of the box (sorry for my english).

    Concerning the plop, it seems that it occurs only on the analog outputs of the board. The DAC which is plugged to the SPDIF output of the EVAL board seems to have no plop. Therefore, I will be careful to switch on and off the amps plugged to the analog outputs before or after the board, depending.

    Funny detail : on the façade, I put a USB plug in order to be able to do modifications. I therefore cut the 5V arrival on the USBi that I plugged directly to the 5V SMPS transformer. I can therefore plug and unplug the USB cable without any problem.

    At least, I tried to connect the I²S output of the eval to the I²S/DSD input of the DAC, without success of course because I saw later on instructions to do it and because I understood that I²S format are not normed. I may try later.

    Enclosed a picture of my system with my previous preamp in which I wanted to implement the eval board but unfortunately, it was not possible.

    Best regards,


  • 0
    •  Analog Employees 
    on Apr 6, 2021 5:38 PM in reply to fabian.tuempling@gmail.com

    Hello Fabian,

    Looks great. 

    So is there a mute pin on the DACs? That is where you could implement a mute. 

    Dave T