最近在搞 音频code wm8731 从模拟通道 输入单频交流信号 然后通过I2S 获取采样数据 再通过串口printf
得到如下图的波形 请教各位!为什么正弦波被拆开了 数据不连续?
音频code wm8731 I2S 采样波形
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 开发技术控 2023-05-25 14:17关注
从您提供的描述和示波图来看,这个问题很有可能是由于I2S通道的采样率设置过低导致的。
I2S是一种数字音频串行接口标准,它需要设置采样率来定义转换和传输音频数据的速率。如果采样率设置得太低,无法对模拟音频信号进行充分的采样和重构,会导致输出的数字音频波形失真严重,出现“拆分”的情况。
解决此问题的方案是:- 提高I2S通道的采样率。根据Nyquist定理,采样率至少要大于模拟输入信号的两倍频率,才能还原信号。所以您需要确保I2S的采样率足够高,比输入的单频交流信号频率高出2倍或更多。
- 在I2S通道之前添加低通滤波器。如果无法进一步提高采样率,可以先使用低通滤波器对输入模拟信号进行滤波,降低其最高频率分量,然后再采样。这可以一定程度上避免失真。
- 使用更高位宽的I2S通道。 higher bit depth 可以在一定的采样率下表达更细致的音频变化,从而减少失真情况。如果硬件支持,最好使用16位、24位或32位宽的I2S通道。
- 调整输入模拟信号幅度。如果输入信号幅度过大,采样时也容易出现失真和“ clipping ”现象。适当降低输入信号幅度也可以改善波形重构的效果。
除上述方案外,您还需要确认I2S通道的其他参数,如通道数、数据格式等设置是否正确,这也会对结果产生影响。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥60 ESP32怎么烧录自启动程序
- ¥50 html2canvas超出滚动条不显示
- ¥15 java业务性能问题求解(sql,业务设计相关)
- ¥15 52810 尾椎c三个a 写蓝牙地址
- ¥15 elmos524.33 eeprom的读写问题
- ¥15 使用Java milo连接Kepserver服务端报错?
- ¥15 用ADS设计一款的射频功率放大器
- ¥15 怎么求交点连线的理论解?
- ¥20 软件开发方法学习来了
- ¥15 微信小程序商城如何实现多商户收款 平台分润抽成