Hiss and Squeal on SGTL5000 via I2S

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

Hiss and Squeal on SGTL5000 via I2S

跳至解决方案
1,865 次查看
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? 

标签 (4)
0 项奖励
回复
1 解答
1,364 次查看
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 项奖励
回复
6 回复数
1,364 次查看
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

1,364 次查看
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 项奖励
回复
1,365 次查看
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 项奖励
回复
1,364 次查看
fabio_estevam
NXP Employee
NXP Employee

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

0 项奖励
回复
1,364 次查看
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 项奖励
回复
1,364 次查看
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 项奖励
回复