WM8976是个Audio
Codec,原来用另外一个芯片,由于某种原因,现在需要更换成WM8976,平台上已经有驱动WM8976的程序,但是控制等有些变化。一开始接手,以为很简单,因为只是换芯片而已,程序也已经好了,以为只要更改几个控制的IO就可以了。
首先叫硬件设计者提供相关资料,他们说没有什么变化。然后就把平台上的程序换成WM8976的,下载后不能正常工作。用示波器发现BB有信号输出到WM8976,但是WM8976没有信号出来,初步判断WM8976没有工作起来,然后就做了以下一些工作:
1.测试供给WM8976的电源是否正常;测试结果是OK的
2.把BB的信号直接接到功放上,也没有声音出来,看来功放的控制也有问题。
查程序,发现控制没有问题;
叫硬件查硬件原理图,发现功放的控制有变,改后,把BB的信号直接接到功放上,有声音,看来功放控制是正常了。
3.测试与WM8976的通信是否正常,发现I2C有信号,但是I2C的应答位错误。详细的I2C应答可参考此处。I2C工作不正常,应该是WM8976没正常启动,跟WM8976供应商联系后,说MODE脚要拉低;
硬件上直接拉低后,有声音出来,看来工作正常。
然后根据这个反过来看硬件原理图,最后发现硬件上没有按照参考设计来做,有个电阻不该连接的连了。
到现在为止,MIDI已经可以播放,但是MP3还不能播放。输入信号是有的,就是没输出。
(待续)