Hiss and Squeal on SGTL5000 via I2S

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Hiss and Squeal on SGTL5000 via I2S

Jump to solution
1,334 Views
eugenetyler
Contributor II

We are having problems with background hiss and a squealing sound when

playing sound through a KITSGTL5000EVBE connected to an i.mx6 MCU.  After

the actual sound plays, the hiss becomes more evident and a squealing

sound is heard that changes frequency until the SGTL5000 is powered down

by Alsa.  The i.MX6, which is housed on a MSC Q7 module, is running Linux

3.0.35 built from Yocto Dora with the MSC BSP layer.  Other than changes

to direct the I2c control traffic to the correct muxed output, there are

no changes to sgtl5000.c or imx-sgtl5000.c. 

To eliminate the possibility of the hiss and squeal being present on the

I2S data line, the i.MX6 I2S Data out line was disconnected and the

SGTL5000 I2S Data In was shorted to ground.  This did not reduce the hiss

or squeal. 

We use aplay to duplicate this issue, which occurs every time we play

any sound. For example: aplay Side_Left.wav

Has anyone experienced undesired sound artifacts when using the SGTL5000,

especially in the KITSGTL500EVBE?  If so, what steps did you take to

resolve the issue? 

Labels (4)
0 Kudos
1 Solution
833 Views
eugenetyler
Contributor II

Replying to myself - the problem is resolved

We obtained a Wandboard and verified that the SGTL5000 functioned properly. We then compared the I2C setup sequence to what we were doing and discovered that the analog ground voltage was incorrectly set in register 0x0028. When the register value was changed to reflect the appropriate 900mV value (Vdda/2), the hiss and squeal went away. We still have a small pop when the sound stops playing, despite applying the SMALL_POP patch, but it may be related to the .wav test that we are using.:

Thanks to all for their help and suggestions.

View solution in original post

0 Kudos
6 Replies
833 Views
fabio_estevam
NXP Employee
NXP Employee

Could you try this patch I did for fixing the definition of the sgtl5000 'small_pop' bit?

https://git.kernel.org/cgit/linux/kernel/git/broonie/sound.git/commit/?h=fix/sgtl5000

833 Views
eugenetyler
Contributor II

Hi Fabio,

Thanks for the reply. I made the change to the two files specified in the patch and recompiled the kernel. I then copied it to the target and rebooted.

There was no audible change to the hiss and squeal that occur after the sound stops playing.

I am going to try bringing up a Nitrogen6X or a Wandaboard and see how they work. Maybe that will give me a clue?

Dale

0 Kudos
834 Views
eugenetyler
Contributor II

Replying to myself - the problem is resolved

We obtained a Wandboard and verified that the SGTL5000 functioned properly. We then compared the I2C setup sequence to what we were doing and discovered that the analog ground voltage was incorrectly set in register 0x0028. When the register value was changed to reflect the appropriate 900mV value (Vdda/2), the hiss and squeal went away. We still have a small pop when the sound stops playing, despite applying the SMALL_POP patch, but it may be related to the .wav test that we are using.:

Thanks to all for their help and suggestions.

0 Kudos
833 Views
fabio_estevam
NXP Employee
NXP Employee

Could you share the wav file that produces the pop sound after playback finishes?

0 Kudos
833 Views
eugenetyler
Contributor II

There are two files that reproduce the problem. They also have a "pop" at the end when played on a PC.

http://www.mediacollege.com/audio/tone/files/440Hz_44100Hz_16bit_05sec.wav

http://www.mediacollege.com/audio/tone/files/1kHz_44100Hz_16bit_05sec.wav

When I look at the audio output from the SGTL5000, I see the output is held significantly above ground at the end of the sound playing. This may be the issue.

Thanks,

0 Kudos
833 Views
fabio_estevam
NXP Employee
NXP Employee

Ok, I can hear some kind of noise in the end of the 440Hz wav file, but the 1KHz sounds fine. Just tested on my PC though.

0 Kudos