1. 總結(jié)一些調(diào)試的心得,ES7243

        共 1977字,需瀏覽 4分鐘

         ·

        2021-11-15 16:58

        這兩天在調(diào)試一個與語音ADC芯片,也遇到了一些問題,到目前位置也解決了問題,所以想說一下嵌入式調(diào)試的一些心得,如果大家在調(diào)試設(shè)備的時候遇到問題,可以回頭來看看這篇文章,可能會得到一些啟發(fā)。


        我調(diào)試的系統(tǒng)架構(gòu)




        硬件方案如上圖


        我們一共可以采集到10ch音頻數(shù)據(jù),其中有兩路是最后的ES7243E給出來的,然后最后送給CPU的是最前面的那個ES7210.


        CPU給ES7243E提供MCLK,但是另外兩個ES7210芯片的時鐘是由ES7243ET提供的。


        音頻調(diào)試就必須提到ALSA,ALSA就必須提到三個很重要的東西。



        像應(yīng)用用到的很多接口,都是由alsa接口提供的。





        現(xiàn)在說下我遇到的問題

        第一個問題,我通過錄音命令可以錄取到兩個7210芯片上面的麥克風(fēng)數(shù)據(jù),但是錄取不到ES7243E上面的兩個麥克風(fēng)的數(shù)據(jù)。

        1、排查寄存器

        這個是最重要的,如果寄存器設(shè)置的模式不正確,那么工作就不可能正常。上面的圖中可以看到,7210的時鐘是由7243E提供的,所以7243E需要設(shè)置成master模式。

        2、測量時鐘

        這個是最關(guān)鍵的,音頻調(diào)試,需要測量MCLK、LRCK、BCLK。

        3、電源測量,這個時候比較次要了

        然后經(jīng)過各種調(diào)試,在順芯的FAE王工的指導(dǎo)下,發(fā)現(xiàn)是LRCK不正確的原因,而且因為設(shè)置的寄存器相差一個bit位,我們用示波器看到的時鐘是15.99K,實際需要的是16K。當(dāng)時還懷疑示波器的問題。

        那個關(guān)鍵的寄存器如下:


        這里寄存器的解釋,如果設(shè)置為0,那么時鐘就會從MCLK除以1,如果是4095,那么BCLK = MCLK 除以 4096。

        我的MCLK = 12288000HZ
        我的BCLK = 16000HZ? 采樣

        那么我就需要設(shè)置這個寄存器位?

        寄存器的值是?12288000 除以?16000 =?768

        然后寄存器設(shè)置的話,我就需要設(shè)置成??768 - 1 = 0x2FF

        寄存器設(shè)置正常后,可以看到LRCK非常穩(wěn)定在16K。

        并且,之前看到的,BCLK和LRCK下降沿不對齊的情況也沒有出現(xiàn)了。

        正確的波形如下:(兩個時鐘的下降沿可以正確對齊)







        第二個問題

        我們錄音的時候,使用12ch來錄音,但是錄取到的音頻發(fā)現(xiàn)有時候物理麥克風(fēng)1的音頻在通道1上,有時候在通道6上。

        我們使用的TDM錄音格式如下:



        這是一個非常典型的錄音格式,我們平時用的聲道只有兩個,所以在LRCK低電平的時候傳左聲道,LRCK在高電平的時候傳右聲道。

        TDM格式可以允許在LRCK上傳輸多個聲道。

        正常的時候,我們錄取的音頻如下


        出問題的時候,我們的錄取音頻如下:


        也就是LR音頻變成了RL的音頻


        因為這個問題,我用示波器看了TDM格式的音頻,7243E上的其中一個麥克風(fēng)錄取正弦波1K信號的時候波形如下:


        ?檢查這個的原因是想確認(rèn)下,在傳輸過程中,每個ADC芯片的輸出在LRCK的位置是不是正確的。

        然后,確認(rèn)了一遍后確定沒有問題。

        之后是和同事討論后,問題出現(xiàn)在每次錄音的時候,可能ADC的狀態(tài)不一致導(dǎo)致。

        然后我們抓取了ADC錄音的LRCK和BCLK的波形。

        正常情況下:


        另一種情況:


        上面兩張圖能說明的問題是,在每次開始錄音的時候,LRCK的電平跳變是不同的。

        然后我們檢查電路,發(fā)現(xiàn)電路是沒有上拉電阻在LRCK上的。

        然后檢查寄存器,發(fā)現(xiàn)寄存器有配置上拉電阻的情況,而且已經(jīng)配置上了。

        最后就是在不斷測試和驗證上下功夫,shutdown的時候,關(guān)閉掉ADC的使能,startup后,用work來使能寄存器讓ADC正常工作。

        研究發(fā)現(xiàn)如果不是代碼設(shè)置,用i2ctool設(shè)置還可能因為時序問題還會出現(xiàn)偶發(fā)的上述問題。

        在不斷的測試后,才找到正確的情況,用示波器抓的開始信號也一直是正常的。





        整理的不是十分充分,在調(diào)試通信問題上,最好還是以波形為主,不要著急,但是也要想清楚原理。

        而且在第一個問題的解決上,我覺得還是有疑問

        時鐘是由7243E提供的,7243E錄音出現(xiàn)問題,那為什么另外兩顆7210錄音正常?

        我只能說7210對時鐘的要求不是那么嚴(yán)格了。

        第二個問題

        TDM格式已經(jīng)說明高電平傳的是偶數(shù)通道數(shù)音頻,為什么還可能出現(xiàn)亂序,我這里只能猜測是音頻平臺部分的cpu dai軟件部分處理的不夠完美。

        即使在開始部分有異常,但是只要保證高低電平差異,我認(rèn)為TDM都應(yīng)該要處理正確。

        好了,就這些,歡迎大家評論討論~




        推薦閱讀:

        專輯|Linux文章匯總
        專輯|程序人生
        專輯|C語言
        我的知識小密圈

        關(guān)注公眾號,后臺回復(fù)「1024」獲取學(xué)習(xí)資料網(wǎng)盤鏈接。

        歡迎點贊,關(guān)注,轉(zhuǎn)發(fā),在看,您的每一次鼓勵,我都將銘記于心~
        瀏覽 314
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
          
          

            1. 美女黄片视频 | 水蜜桃一区二区三区 | 成人免费无遮挡无码黄漫视频契约 | 国产精品久久久久久久久久嫩草 | 欧美成人在线网 |