?? record.txt
字號:
WM8782驅動調試記錄
張東
2008-4-22
驅動原理:
模擬信號從MIC IN進來,通過ADC轉換成PCM信號,通過IMX27的AUDIOMAX使外部的SSI2與內部的SSI1相連接,使PCM信號發送到CPU的SSI里的FIFO,傳到一定數量之后就通過DMA通道發送到內存里。
測試情況:
發生讀寫錯誤,通過 cat /proc/dma 查看到DMA通道已經打開,但是沒有數據通過。為什么會這樣呢?現在的問題是讀不到數據,于是就用示波器測一下CPU傳過來的時鐘有沒有傳過來。(補充一下:WM8782使用slave模式,因此BCLK和FS由CPU提供),可是沒有檢測到時鐘信號,通過查看mx27_i2s_master_mode_config(void),發現配置不對,通過查看MX27的spectifation,修改好后,可以看到時鐘信號。運行測試代碼,發現錄制10S的,才一秒就結束了,而且錄制聲音也聽不到。
還是時鐘上有問題,通過查看WM8782的文檔,對BCLK和FS以及DOUT進行研究,對BCLK進行相應的分頻,實現BCLK達到1.04MHZ,FS=8kHz,實現可以錄10S, cat /proc/interrupts 看到 33: CPU:261 - ALSA RX DMA,但是還是不能聽到錄的聲音.
暫時想不出問題的所在,不知道是CPU中的SSI出現問題,還是WM8782沒有工作。于是用MASTER模式來試試看,結果工作正常。那在SLAVE模式下,問題就一定出現在SSI上了,那些配置沒有完全搞好,再次查看WM8782的文檔,發現在SLAVE模式下,要求WM8782的MCLK和BCLK要求同步,而在電路上MCLK并沒有連上,于是讓硬件工程師把MCLK和BCLK連在一起,
再設置BCLK為1.04M,同時得到FS為8K,實際FS為8.1k,在LINE IN 上record。結果可以錄制了。
還有一個問題,就是錄制10S的,結果15S后 才結束,后來查到是系統時鐘的問題,需要在bootloader里設置系統時鐘。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -