I2S

w801編譯sdk_1.00.08固件,運行t-i2s會卡死

發布於 2022-09-20 13:46:12

在測試I2S時,我改動wm_demo.h,只留下i2s相關的命令。

執行以下命令,使能I2S相關的引腳、使能I2S外設時鐘:

t-i2sioinit

執行以下命令,啟動I2S發送,進行簡單測試代碼(最後一個參數=0走中斷,=1走DMA):

t-i2s=(0,1,44100,16,0,0)

串口調試工具結果如下:

image.png

t-i2s命令對應於demo/wm_i2s_demo.c文件裡的tls_i2s_demo函數。

結合串口工具分析發現,它調用 tls_i2s_tx_int_demo();函數完成數據發送,因為我在它之前加了個printf("i2s tx int.n");函數。它執行完確實會打印send:xxx的信息。

在tls_i2s_tx_int_demo函數的結尾,對於中斷,會執行收發關閉操作。代碼如下:

if (WM_I2S_MODE_INT == mode)
{
    wm_i2s_tx_rx_stop();
        tls_dma_free(tx_channel);
            tls_dma_stop(ch);
        tls_dma_free(rx_channel);
    printf("\ntest done.\n");
}
    
經過調試發現,卡死在tls_dma_free()函數。如果只開啟中斷,那就沒有打開DMA。那麼為什麼要釋放DMA?在DMA stop函數裡,忙等DMA是否結束。然後一直卡死!你們也有這個問題嗎。請進行檢查。還是只有我這樣。
    
    

查看更多

關注者
0
被浏覽
2.8k
isme
isme 認證專家 2022-09-21
冰鎮大西瓜

兩種方式我都測試過了,波形都有出來呀。
image.png
image.png

3 個回答
ZYQ
ZYQ 2022-09-20
我已不再支持W80X任何相關問題的回複,請大家不要私信,有問題找 isme 謝謝

你確認是1.08固件麼
image.png

haoronMango
haoronMango 2022-09-21
這家夥很懶,什麼也沒寫!

WM-W800-SDK-202207-V1.00.08.rar

我用的是這個固件,是從本網頁,單擊資料下載按鈕,然後下載的。你們也試試,看看。是我板子的問題。還是我操作方法不對。

然後我把tls_dma_free(tx_channel);tls_dma_free(rx_channel);注釋了,它就不卡死了。

真的,騙你是小狗!

111.webp

撰寫答案

請登錄後再發布答案,點擊登錄

發布
問題

分享
好友

手機
浏覽

掃碼手機浏覽