除錯AKM4432 DAC驅動問題記錄

2021-10-07 06:00:57 字數 946 閱讀 1589

本週在除錯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訊號過來就能量測到輸出電壓了,只能怪我太*****,竟然會認為mclk是晶元內部自己倍頻的(看了電路圖設計mclk的輸入是dsp mclk | dsp bclk),然而結果可想而知,輸出的電壓0.47v並且資料變化電壓不隨著改變,gg,後面仔細閱讀晶元手冊內容,發現了這一句話:

之前竟然腦補成setting automatically ,其實是detected!!只能說是眼拙了,以後做類似外設晶元驅動一定要仔細看晶元手冊,切記~之後更改了硬體電阻的連線,改為mclk輸入,一切都順理成章啦~

完結撒花