hi TI
我把stm32f4 A3DPDemo_SNK demo 移植到我自己的一个stm32f4电路板,通过蓝牙和手机相连播放音乐时,手机端暂停、重新播放时,声音有时很大、有时很小。此时手机端的音量、电路板上的codec音量我都没有调整,不知道暂停、重新播放时,声音忽大忽小的可能的原因是什么?
非常感谢!
Yan:
ying xiao ,
蓝牙A2DP的SBC音频编码是不带音频gain的信息的(其他格式编码其实也一样),音量大小完全是取决于AVRCP(手机这边发送音量控制命令)或者codec的设置来决定的。
你这个最好有机会的话空中抓包看一下,同时看一下你的codec那边是不是有什么影响到了输出。
user440976568:
回复 Yan:
Y
非常感谢你的回复。
首先手机端的音量我没有调节,是固定的。codec的控制接口I2C在暂停/重新播放时,我用示波器捕捉了一下,没有额外的因素使得codec的音量被调节了。
在我的应用中 手机发送音乐给BT,然后BT通过i2s2发给stm32 ,stm32接收处理后通过i2s3再发给codec。其中 BT通过i2s2发给stm32时,BT 是master,stm32是slave。在暂停/重新播放时,我通过单步跟踪发现BT发给stm32时,数据就是有时大有时小
另外你说的空中抓包工具,针对cc2564有什么好的抓包工具推荐下,谢谢啦
Yan:
回复 user440976568:
ying xiao,
你是怎么发现“BT发给stm32时,数据就是有时大有时小”的呢?
专业的抓包工具可以是frontline的BPA600或者Ellisys 的蓝牙抓包工具。
user440976568:
回复 Yan:
Y
非常感谢!
BT通过i2s发给stm32时,我是放到stm32的一个缓冲区buffer中,然后通过iar中的live watch动态查看该buffer值,手机端我播放一个.wav格式的方波声音,然后暂停、重新播放时,我查看该变量值的数值有时大有时小,如果重新播放不暂停持续播放则不会出现该值忽大忽小。其实有时声音大时,从喇叭出来的声音像是噪声,但是声音中还是包含正常的声音的。
wing yip:
有可能是声音文件播放暂停再播放的过程中,fifo数据不对齐造成的,不意外的话应该是pcm编码16位以上的编码吧