前话:

之前使用方糖播放音乐时总感觉音质太差,就想着能否改装到音响上,3.5mm耳机孔输出或是蓝牙、FM发送出去。
在网上找了一大圈,也没有符合我要求的,只有将i2s接出来解码输出的,所以自己花了半天时间将协议分析了下。

第一步: 外壳拆解

拆解详情可以搜索百度,好多教程。不同于天猫X1,方糖的外壳是一体的,前面板拆下来后很难再恢复回去,我拆解的魔岩灰。

第二步:确定引脚定义

新版的方糖音频解码使用的是AM82884F,网上找不到资料,猜测是定制芯片,这个芯片的作用是i2s解码+功率放大。
这里需要知道的是i2s引脚和参数控制脚,因为没有datasheet,引脚确定费了点时间,如下定义:
引脚定义.jpg

音频数据引脚(iis):

  1. 串行时钟SCLK(BCLK),在每个边缘传送一位数据;
  2. 帧时钟LRCK(WS),用于切换左右声道的数据。‘1’表示传输右声道数据,为“0”则是左声道;
  3. 串行数据SDATA,音频数据。

芯片参数控制引脚(iic):
用来设置功放芯片的参数,比如音量、休眠、音效等。 AM82884使用的是iic串行协议,详细请百度。

  1. SDA :串行数据线
  2. SCL :串行时钟

第三步:音频数据 iis分析

引脚焊接图.jpg
飞线,测试...
从下图采集到的数据可以看出
1.主控芯片输出的音频数据是左右两个声道的,
2.采样率是48kHz,属于什么档次的音质,我也不太清楚。
方糖 声音捕捉采集.PNG

第四步:控制数据 iic分析

分析这个数据主要想得到mcu发出来的音量控制指令,看看后续改装是否可以通过原有语音功能调节音量大小。
1.首先我尝试操作音量, 静音、从0调到100,截获波形:
可以看出芯片地址是0x30, 音量寄存器是0x03,后面紧跟着1byte的音量值(0x3E 对应音量56%)。
音量56.PNG

2.然后喊出指令“天猫精灵” “放首歌”,截获以下数据。
每次天猫精灵开始播放声音时,都要发送 02 00指令,播放完都发送02 7f指令。
猜测0x02寄存器是控制芯片休眠之类的指令。
播放音乐.PNG
开始发声.PNG停止发声.PNG

3.测试上电时的初始化芯片指令
这部分真的想吐槽写下这段代码的兄台,首先初始化指令操作了2遍,每遍里面还重复者大量的类似指令(猜测是EQ模式),
我一共截取了500多条指令,我没见过哪个芯片需要重复设置这么多次,不过还是希望是我的错判,
我相信阿里的工程师都应该是很厉害的!
初始化.PNG

总结下

根据这次拆解,总结一下有用信息:
1.芯片引脚定义ok,见上图;
2.iis数据是两个声道的;
3.iis传输音频数据的采样率是48khz;
4.iic的通讯速率是100k;
5.信号高电平电压是1.8V;
6.可以通过iic接口获取到音量等控制指令;
附:音量大小对应的数据表:
音量值表.PNG

下一篇将介绍怎么进行实际改装,接下来几天需要设计一块小板。