Two diffrent amplifiers. Two diffrent mute functions.

Thread Starter

Robert Murch

Joined Nov 2, 2015
43
I have included a snapshot of the circuit diagram for the two different amplifiers. The old amp (SA5) SA58631TK.png and the new (MAX) MAX98307.png are both driving the same speaker. Each is being driven by a different CODEC. If you would like to know more about how I got that CODEC installed and working you can find that topic here.

In any case, in the past there were some issues with the amplifier and speaker setup. Apparently, it was making a buzzing sound whenever the LCD brightness was maximized. In order to combat the issue gpio107 which drives the buffer and N-channel FET on the amplifiers MODE pin is brought hi to put the amp into standby mode while a tone is not being produced. In other words, the amp is muted at startup. When a tone is requested the amp is un-muted, the tone is played and the amp is then muted again.

With the new setup (MAX) the mute circuit is more simple: SPKR_MUTE drives a buffer that drives the SHDN pin of the MAX98307 amp. SHDN (shut down) is active low. Write 0 to gpio107 and the amp is shut down or muted. This functionality has been tested and is working. That being said, the control in software for that functionality is not working properly. This makes no sense to me. The whole idea behind the new circuit was to keep from having to make changes in software.

So I decided to come pick your brains. Anyone have an idea about the differences between standby and shutdown which might cause timing issues or handling issues that I am not taking into account? If the mute function works with the new amplifier (again its been tested) then why can't it be toggled in software in the exact same manner as the old standby?
 

Thread Starter

Robert Murch

Joined Nov 2, 2015
43
Well here is what I managed to figure out. If I put the computer to sleep for .04 seconds after writing a high to gpio 107 (unmute) then everything works fine, too much lower and I get audio clipping. My assumption is that this has something to do with the capacitor (C173) discharge time, would that be a valid assumption?

Code:
void amplifierOn()
{
  std::ofstream amp(amplifierGPIO);
  if (amp.is_open())
  {
    amp << "1";
    amp.close();
  }
  usleep(40000);
}
 
Last edited:
Top