完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
问题描述:
i2s在slave模式下使用时 此时如果没有接设备,那么 MCLK/BCLK/LRCK管脚将没有信号输入 然后调用 audio_pipeline_stop 没有问题 再调用 audio_pipeline_wait_for_stop 将会陷入无限等待 |
|
相关推荐
1个回答
|
|
在I2S(Inter-IC Sound)通信中,Slave模式意味着设备接收来自Master设备的信号。在Slave模式下,MCLK(主时钟)、BCLK(位时钟)和LRCK(左右声道时钟)信号通常由Master设备提供。如果在Slave模式下没有连接Master设备,这些信号将无法输入。
要解决这个问题,您可以尝试以下方法: 1. 确保硬件连接正确:检查您的设备是否正确连接到Master设备,并确保所有信号线都已正确连接。 2. 使用外部时钟源:如果Master设备无法提供MCLK/BCLK/LRCK信号,您可以考虑使用外部时钟源来驱动Slave设备。这通常需要硬件设计上的修改。 3. 软件处理:在您的代码中,您可以添加一些条件判断,以检查MCLK/BCLK/LRCK信号是否有效。如果这些信号无效,您可以手动停止音频管道并避免无限等待。 例如,您可以在调用`audio_pipeline_stop`和`audio_pipeline_wait_for_stop`之前,添加以下代码: ```c if (!is_mclk_valid() || !is_bclk_valid() || !is_lrck_valid()) { // 手动停止音频管道 audio_pipeline_stop(); // 避免无限等待 return; } ``` 这里,`is_mclk_valid()`、`is_bclk_valid()`和`is_lrck_valid()`是您需要实现的函数,用于检查MCLK、BCLK和LRCK信号是否有效。 4. 考虑使用其他通信协议:如果I2S Slave模式无法满足您的需求,您可以考虑使用其他通信协议,如SPI或UART,这些协议可能更适合您的应用场景。 总之,解决这个问题需要从硬件和软件两个方面进行考虑。确保硬件连接正确,并在软件中添加适当的条件判断,以避免在没有信号输入时陷入无限等待。 |
|
|
|
只有小组成员才能发言,加入小组>>
486 浏览 1 评论
552浏览 6评论
461浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
443浏览 5评论
445浏览 4评论
415浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 17:09 , Processed in 0.802405 second(s), Total 80, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号