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
被浏览
1. 9k
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

撰写答案

请登录后再发布答案, 点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览