再战声卡无声难题(下)

今天是周五,吃过晚饭,继续讲调试声卡的故事。对于E工量一下频率的建议,方向上我是很认可的,如果没有给声卡提供合适的时钟信号,那么声卡是无法工作的。但如果真用示波器量,就需要拆外壳,看电路图,找管脚,.......挺麻烦的。为此,我还抱有一分侥幸,希望能靠软件工程师擅长的方法,从寄存器状态或者代码上看出问题,如果成功就不必动用示波器了。

核对管脚复用

本着这种侥幸和执拗,周二早上,我一边看芯片手册,一边看代码,排查频率有关的逻辑。

首先,我查找给声卡芯片提供时钟信号(MCLK)的管脚——GPIO1C2,这个管脚有多种用途,根据芯片手册,要通过BUS_IOC(总线IO控制器)的IOMUX寄存器来为其配置用途。

BUS_IOC的寄存器基地址是0xFD5F8000,GPIO1C复用设置寄存器的偏移是0x30。使用apt install devmem2安装上用于读设备寄存器的devmem2工具,然后就可以读寄存器了,结果如下:

geduer@ulan:~$ sudo devmem2 0xFD5F8030/dev/mem opened.Memory mapped at address 0x7f9611c000.Value at address 0xFD5F8030 (0x7f9611c030): 0x1199

读到的寄存器值为0x1199,gpio1c2对应的bit 11:8为1,是用作I2S0_MCLK,没有错。

没有错是好事,也是坏事,意味着还是没有找到问题。

上示波器

排查寄存器没有侥幸成功之后,我下定决心上示波器了。拆开外壳和散热板,找到声卡芯片。

上面的图是放大过的,实际芯片很小,只有4mmX4mm,也就是长和宽都是4mm,不到半厘米。

es8326一共有32个管脚,均匀分布在芯片四周,我关心的MCLK管脚刚好是1号管脚。

芯片的边长是4mm,有8个管脚,意味着管脚的间距不到0.5mm。对于这么密集的管脚,要用示波器的笔针精准点中1号管脚需要“准”,也需要“稳”。

为了缓解这个问题,我向ODM伙伴群发了条消息,询问是否有方便一些的测量点,很快收到回复:可以量R243电阻。因为它与1号管脚是直接连接的。

而且,ODM伙伴发来了一张非常清晰的器件布局图,图中的U40就是声卡芯片,R243电阻在它左侧。

虽然R243电阻是贴片电阻,也很小,但两侧有明显的焊锡,而且有一些空隙,好量多了。

调整好示波器,把表笔的地信号夹子夹到串口用的地线上(杜邦线引出),把笔针点到R243右侧。示波器有反应,但是屏幕上显示的信号很弱,而且杂乱无序,不像是有规律的时钟信号。

看起来波形不对!为了避免没有用好示波器而犯低级错误,我拍了张照片给好朋友文波,请他帮忙确认一下,得到的回复是“那就是没有信号”。

为了进一步确认,我特别又打开一台可以正常播放声音(使用老镜像)的幽兰,做同样的测量,可以得到一个有规律的波形。

使用示波器的测量功能,可以测出频率是12.25MHz,与前面提到的设置频率一致。

用了大约1个小时时间开外壳,查电路,上示波器,经过实际测量,证明了E工的怀疑非常精准,确实是没有MCLK。

但为什么没有MCLK呢?还不知道,需要继续排查。前方高能且包含敏感信息,加收费站限制(^-^)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值