离线
https://github.com/torvalds/linux/blob/master/sound/soc/sunxi/sun8i-codec-analog.c
static int sun8i_headphone_amp_event(struct snd_soc_dapm_widget *w,
struct snd_kcontrol *k, int event)
{
struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm);if (SND_SOC_DAPM_EVENT_ON(event)) {
snd_soc_component_update_bits(component, SUN8I_ADDA_PAEN_HP_CTRL,
BIT(SUN8I_ADDA_PAEN_HP_CTRL_HPPAEN),
BIT(SUN8I_ADDA_PAEN_HP_CTRL_HPPAEN));
/*
* Need a delay to have the amplifier up. 700ms seems the best
* compromise between the time to let the amplifier up and the
* time not to feel this delay while playing a sound.
*/
msleep(700);
} else if (SND_SOC_DAPM_EVENT_OFF(event)) {
snd_soc_component_update_bits(component, SUN8I_ADDA_PAEN_HP_CTRL,
BIT(SUN8I_ADDA_PAEN_HP_CTRL_HPPAEN),
0x0);
}return 0;
}
离线
v3这么坑啊, 700ms,我还想用它做点音频相关的应用呢, 这样下来s3不能用了
连续播放不会酱紫,如果播放后停3秒(目测), 下一次播放又会延迟700ms, 如果播放间隔不超过3秒不会。
超过3秒,喇叭关闭的时候会播放 啵 的一声, 暂时不知道去哪里关闭,
有网友建议在 啵 一声前通过gpio关闭功放(mute引脚).
离线
晕哥 说:dbskcnc 说:v3这么坑啊, 700ms,我还想用它做点音频相关的应用呢, 这样下来s3不能用了
连续播放不会酱紫,如果播放后停3秒(目测), 下一次播放又会延迟700ms, 如果播放间隔不超过3秒不会。
超过3秒,喇叭关闭的时候会播放 啵 的一声, 暂时不知道去哪里关闭,
有网友建议在 啵 一声前通过gpio关闭功放(mute引脚).这样子已经是残废, 看样子还得另找其它芯片了
不知道是不是因为要省电,所以播放完之后关闭声卡???需要的时候再打开???
如果能一直开着,不知道能不能解决这个问题, 我们的产品是市电供电,不需要节电.
离线
晕哥 说:dbskcnc 说:这样子已经是残废, 看样子还得另找其它芯片了
不知道是不是因为要省电,所以播放完之后关闭声卡???需要的时候再打开???
如果能一直开着,不知道能不能解决这个问题, 我们的产品是市电供电,不需要节电.能不能验证下这个问题,如果每次播放都要延时700ms, 真的很大问题, 按理不应该这样子才对
验证过了, 如果每次播放间隔时间超过3秒(目测), 那么每次都是延迟 700ms.
上面是 linux4.13的结果,
不知道用bsp linux(3.4) 会不会这样.
离线
晕哥 说:dbskcnc 说:能不能验证下这个问题,如果每次播放都要延时700ms, 真的很大问题, 按理不应该这样子才对
验证过了, 如果每次播放间隔时间超过3秒(目测), 那么每次都是延迟 700ms.
上面是 linux4.13的结果,
不知道用bsp linux(3.4) 会不会这样.芯片内部功放启动的时候会相当于把音量“慢慢”调大,避免电平突然改变造成的咔嗒声。所以这个现象应该是驱动层把功放关闭了,再次启用的时候比较慢。
可以改驱动,一直不关闭功放。
或者,在播放完的时候,持续播放一段静音音频。
https://github.com/torvalds/linux/blob/master/sound/soc/sunxi/sun8i-codec-analog.c
我看了一下代码,
没有找到不关功放的寄存器,
或许找的姿势不对.
持续播放一段静音音频这个倒是可以有,
在应用程序端做就可以了。
离线
[ 356.628202] ZZZZZZZZZZ 111111
[ 356.628252] ZZZZZZZZZZ 22222222222[ 362.408079] ZZZZZZZZZZ 111111
[ 362.408139] ZZZZZZZZZZ 33333333333333
试了一下 12# 朋友的方法, 把功放关闭的代码屏蔽起来, 然而并没有什么用.
离线