菜根谭 发表于 2021-3-9 14:09:40

QCC5124 I2S输出,暂停输出几秒方波问题

求助大神:   目前使用QCC5124 做TWS开发,earbud工程 I2S输出,发现歌曲暂停后,数据停了之后还有几秒的方波输出,Android系统的手机时间大约3-5秒左右,苹果手机输出的方波大约7到8秒 然后消失。导致DAC有吱吱吱的噪音出现,SINK工程 目前也有这个问题。不同的ADK都有这个现象。求助大神有没有好的解决的办法。感谢了!

522315697 发表于 2021-3-9 19:05:00

这个无解吧,不好弄。

yaoziqiang 发表于 2021-3-10 08:08:44

用AB类输出,输出增加30KHZ的LPF电路可以解决。

菜根谭 发表于 2021-3-10 09:58:21

yaoziqiang 发表于 2021-3-10 08:08
用AB类输出,输出增加30KHZ的LPF电路可以解决。

耳朵能听到噪音 应该是20K以下就有的,30Khz的可能消不掉这个。

bluetooth 发表于 2021-3-10 23:08:55

这个是i2s输出,和ab类无关,应该就算信号一直有输出也不应该有噪声,所以dac部分还可以优化。

菜根谭 发表于 2021-3-11 08:52:31

bluetooth 发表于 2021-3-10 23:08
这个是i2s输出,和ab类无关,应该就算信号一直有输出也不应该有噪声,所以dac部分还可以优化。 ...

感谢,不过我们发现音量大的时候,一些专辑图片如果是动画的形式,会一直输出这个方波,音量调小了,输出六七秒就没有了。请问一下您,这种方波,DAC部分一般用什么方式来处理?

lyyxxuezheht 发表于 2021-4-23 09:38:35

可以尝试把蓝牙输出功率改小点看下对底噪是否有改善。

菜根谭 发表于 2021-5-20 15:03:49

lyyxxuezheht 发表于 2021-4-23 09:38
可以尝试把蓝牙输出功率改小点看下对底噪是否有改善。

没有改善,这个在SINK工程的APTX上也比较明显,其他协议好一些,但是到了earbud上 所有的协议AAC SBC APTX都会有这个暂停的方波,高通目前也没给出一个合理的解决办法

394645065 发表于 2021-5-20 22:43:04

DSP那边加一个source sync看能不能解决问题

菜根谭 发表于 2021-5-24 15:40:05

394645065 发表于 2021-5-20 22:43
DSP那边加一个source sync看能不能解决问题

static void appKymeraCreateOutputVolumeChain(uint32 rate, unsigned kick_period,
                                             unsigned buffer_size,uint8 volume)
{
    kymeraTaskData *theKymera = appGetKymera();

#ifdef USE_I2S_OUTPUT
    theKymera->chainu.output_vol_handle = ChainCreate(&chain_output_volume_iir_config);
#else
    theKymera->chainu.output_vol_handle = ChainCreate(&chain_output_volume_config);
#endif


#ifdef USE_I2S_OUTPUT
    appKymeraConfigureOutputChainOperators(theKymera->chainu.output_vol_handle, appConfigI2SOutputSampleRate, kick_period, buffer_size, volume);

    Operator sync_op;
    /* override the source sync op setting: as this op is before the resampler, it needs to be configured at 'rate' */
    if (GET_OP_FROM_CHAIN(sync_op, theKymera->chainu.output_vol_handle, OPR_SOURCE_SYNC))
    {
      /* SourceSync is optional in chains. */
      appKymeraConfigureSourceSync(sync_op, rate, kick_period);
    }

    Operator resampler_op;
    resampler_op = PanicZero(ChainGetOperatorByRole(theKymera->chainu.output_vol_handle, OPR_IIR_RESAMPLER));
    OperatorsResamplerSetConversionRate(resampler_op, rate, appConfigI2SOutputSampleRate);
#else
    appKymeraConfigureOutputChainOperators(theKymera->chainu.output_vol_handle, rate, kick_period, buffer_size, volume);
#endif

    ChainConnect(theKymera->chainu.output_vol_handle);

}是加在这里吗,这样好像没效果
页: [1]
查看完整版本: QCC5124 I2S输出,暂停输出几秒方波问题