大家好,
我在使用TLV320AIC3101IRHBT芯片进行音频播放的过程中,我通过程序去播放wav音频文件,发现每次启动程序,播放声音的最开始,会产生一个噪音,类似“咔”的一声,后面持续播放,这个噪音又不会出现了。但是我再次重新启动程序,这个噪音又会出现。如此循环往复。
后面我通过在驱动里面添加打印,发现程序在播放音频的最开始时,内核会去切换音频的状态,状态是这个四个状态:
SND_SOC_BIAS_OFF = 0,
SND_SOC_BIAS_STANDBY = 1,
SND_SOC_BIAS_PREPARE = 2,
SND_SOC_BIAS_ON = 3,
A、在播放开始时,在open函数后,write函数前,状态转换:SND_SOC_BIAS_STANDBY -》SND_SOC_BIAS_PREPARE -》SND_SOC_BIAS_ON
B、在播放结束后,调用close函数后,状态转换:SND_SOC_BIAS_PREPARE -》SND_SOC_BIAS_STANDBY -》SND_SOC_BIAS_OFF
产生的噪音就是在A过程中。请问这个在A这个过程中,状态的转换是导致噪音产生的原因吗?如果是,请问应该怎么解决?如果不是,请问这个噪音有可能产生的原因是什么?
Kailyn Chen:
您好,如果是状态切换过程中产生的噪音,那么在A过程和B过程都应该会听见。
如果只是在A过程中产生,是不是上电时的POP声?
datasheet中有推荐抑制POP/click音的建议:
The TLV320AIC3101 also includes functionality to detect when the user switches on or off the de-emphasis or digital audio processing functions, to first (1) soft-mute the DAC volume control, (2) change the operation of the digital effects processing, and (3) soft-unmute the part. This avoids any possible pop/clicks in the audio output due to instantaneous changes in the filtering. A similar algorithm is used when first powering up or powering down the DAC.
user6319732:
回复 Kailyn Chen:
我们后续进行了分析验证。发现在HPLOUT引脚(PIN19)至功放电路部分中间,有一个电容。电容靠近HPLOUT引脚端为低电平,电容另一端为高电平。播放的最开始,会对电容进行充电,这个时候导致电压不稳,产生了一个杂波电信号,该信号经过功放后,就形成了杂音。现在我们想驱动初始化HPLOUT引脚默认为高电平信号输出。请问应该怎么配置?或者针对我们的问题,有没有其他更好的解决方案?
user6319732:
回复 Kailyn Chen:
我们上电时,有pop声。
同时我们也只有在A过程有噪音。B过程无噪音。这个噪音我们分析认为是电路里面的电容造成的。
Kailyn Chen:
回复 user6319732:
您好, 已经在这个帖子中回复您的问题,建议您先配置register 42 和register 51 看是否能有所改善。
e2echina.ti.com/…/572591