求助:用MQTT client库连接MQTT服务器后音频DMA发送停止!
时间:10-02
整理:3721RD
点击:
我按照SDK里web audio和mqtt_client的例子, 打算实现一个远程通过MQTT服务控制音频播放的产品。例子单独运行没有任何问题,但是把2个例子结合到一起碰到了很奇怪的问题,当连接mosquitto服务器时几个数据包下来DMA发送就停止了。出问题后所有任务都正常,mqtt后续消息收发也正常。就是音频DMA中断没有了!
做过几个实验:
注释掉mqtt任务一切正常;
把mqtt任务换成while(1); 死循环也没有问题;说明不是CPU时间不够造成问题。
在mqtt库里增加一些osi_Sleep()有时能跑下去,但是稍微改点代码就会出同样问题,说明没有找到真正的原因;
看了IRQ寄存器,对应的IRQ clean被置1了,原因不明。(address 0xE000E180开始对应的中断bit);JTAG里手工改不回去
用HTTP cli库下载文件播放,音频没有任何问题;
现在没有任何头绪了,麻烦大牛提供一些线索,非常感谢!
有没有人遇到过这个问题啊?试了播放声音时做网络下载,或者TCP Socket通信都没有问题。看起来mqtt库也是调用sl网络接口通过socket收发数据,但是会出问题。怀疑sl某些函数或高级用法造成i2s dma冲突。
应该不是的,MQTT的库也是去调用TCP socket的,因为MQTT就是基于TCP的,它不会去调用其它特别的接口。