音頻codec調試心得

     本文介紹了一個CODEC芯片TLV320AIC3204音頻CODEC的調試經驗,記錄一下芯片的調試過程當中的一些心得。前端

一、硬件電路

      一個驅動的調試離不開硬件的電路的結構的與原理,調試驅動前要首先詳細的瞭解驅動電路的原理,原理圖以下:linux

    codec芯片的型號是TLV320AIC3204,這是TI公司的一款音頻處理芯片,能夠鏈接3路模擬mic輸出,2路音頻輸出能夠驅動耳機和揚聲器。與MCU的數字接口是I2S接口,能夠採集語音和播放語音,芯片的配置接口支持I2C和SPI接口,本電路採用的I2C接口。測試

     MIC通過一級放大器後把語音信號放大器TS472後輸入到TLV320AI3204的第一路音頻輸入IN1接口。電路以下圖所示:spa

     MCU使用的NXP的IMXRT1021芯片,使用的是SAI2接口與CODEC芯片相連,根據TLV320AI3204的數據手冊,配置I2S接口的MCLK爲6.144M,採樣率爲48Kbps,雙聲道,16位語音數據,bit clk=48kpbs*2*16。設計

二、驅動程序

     驅動程序參考了TI官網提供的linux下的驅動程序代碼,這個codec芯片的功能仍是挺多的,支持多路語音輸入,支持輸入信號放大等衆多功能,通過不斷的調試成功的實現了從MCU輸出一段音樂從codec芯片中播放出來,能夠清楚聽到播放的語音。爲了測試mic部分的電路的功能,採用一個一邊錄音,邊播放的方式來測試電路,這個測試程序在nxp評估板上已經能夠正常運行。實如今這個電路上,codec輸出的噪聲,只有在Mic處輸入的音樂很大時,codec才能播放出聲音,同時仍是具備很大的噪聲。調試

 

三、問題的分析

     首先的懷疑程序有問題,多是採集播放時,對音頻數據的處理速度不連續形成的,通訊修改程序,在採集的時間同步播放音樂,通過測試播放音樂正常,那說明播放部分沒有問題。可能出在採集上面,那是codec芯片的配置問題呢仍是硬件的問題呢?codec芯片的這個配置參數是在另一個產品上面使用,聽說配置是能夠實現錄音的功能。暫切認爲驅動沒有問題。code

       因爲硬件是別人設計,我沒有系統全倍分析過這個電路設計的是否有問題。根據個人最簡單的經驗分析,這個codec芯片自己就能夠直接接mic來工做,說明內部已經具在了足夠的放大增益,前端再加一級放大是否是多此一舉呢?我把這個問題反饋給設計者,設計者認爲,本身測試了前端mic通過放大後的聲音,鏈接到功放再接上喇叭能正常播放聲音,認爲本身的設計沒有問題。期間通過屢次溝通,沒法說服其修改電路來進行測試。--遇到問題,過於盲目自信,真的不利於解決問題,說明此人經驗還少呀。我遇到這樣的問題,沒有100%的把握都不敢說本身這裏沒有問題。blog

 

四、問題的解決

      如今我懷疑硬件mic放大部分有問題,可是光說無用,得拿出事實證據,就是本身修改硬件調試出來。從mic前端電路測量入手,測試了mic語音信號通過放大後在RINP信號上的波形,此處信號的峯峯值在mic有輸入音頻時,信號很容易超過0.7V,再詳細查閱TLV320AIC3204的音頻輸入的信號,芯片的模擬電路的供電電壓爲1.7V左右,輸入的信號的峯峯值爲0.75V,看來這裏就不對。前端的輸入的信號過大。再測量一下輸出語音LOR,LOL的信號,輸出的波形峯峯值達到了1.7V,說明前端輸入信號過大,致使內部的ADC電路採集的全是飽和的語音信號,形成了輸出全是噪聲(最大值的信號)。接口

        解決辦法天然就有了,直接接MIC到CODEC前端,可是目前的電路很差操做。另一個辦法就是下降前級電路的增益,修改電阻R50爲27K(因爲沒有470K電阻,最好是就成0DB)把增益變10db。此時一試仍是輸出噪聲,我想仍是信號過大,最後又在RINP,RINN處割開,使用0.1uF電容鏈接,至關於也下降了一部分增益。此時codec能夠正常的輸出語音,噪聲小了不少,還有一點噪聲,這點噪聲仍是因爲有時輸入的音頻信號仍是過大超過了0.75V致使的。調試到這裏已經足已證實個人分析和判斷。更好的調試結果,就要再改進一版電路,把MIC直接鏈接到CODEC芯片上去了。同步

相關文章
相關標籤/搜索