本周在调试AK4432 DAC芯片的过程中踩了几个小坑,记录一下:
1.选择IIC总线配置芯片寄存器,要注意该芯片IIC特有的格式,并不是从地址 + 寄存器地址 +数据,而是有其特定的格式,如下图:
需要注意在从地址发送之后,若是写操作还要再发送0xC0 0x00,然后再接上寄存器地址 + 数据。同理,读操作需要发送0x40 0x00 + 寄存器起始地址。
但是最让我疑惑的是,为什么没有按照datasheet上的格式发送,IIC还是能收到ACK,这个问题导致我一直坚信IIC写操作是没有问题的,全力在研究其寄存器的配置(其实也就6个寄存器QAQ),后面在添加读操作的接口时才发现问题所在,因为读不到数据啊~~
2.该DAC芯片的工作需要DSP给出LRCLK BCLK DATA以及MCLK。一开始看芯片手册的时候以为只有配置为Manual setting/normal mode/标准I2S 32bit格式(mode 7)/ unmuted 就完事了,等着BCLK/LRCLK/DATA信号过来就能量测到输出电压了,只能怪我太naive,竟然会认为MCLK是芯片内部自己倍频的(看了电路图设计MCLK的输入是DSP MCLK | DSP BCLK),然而结果可想而知,输出的电压0.47V并且数据变化电压不随着改变,GG,后面仔细阅读芯片手册内容,发现了这一句话:
之前竟然脑补成setting automatically ,其实是detected!!只能说是眼拙了,以后做类似外设芯片驱动一定要仔细看芯片手册,切记~之后更改了硬件电阻的连接,改为MCLK输入,一切都顺理成章啦~
完结撒花