OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3796|回复: 2

使用STM32F411 discovery板子i2S音频接口的几个小问题

[复制链接]

4

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2015-5-12
在线时间
2 小时
发表于 2018-9-15 13:25:31 | 显示全部楼层 |阅读模式
1金钱
大家好,我用的是STMF411 discovery板子,软件用的是i2S hal库和st的pdm2pcm library,通过i2S总线采集音频数据,st官方给的audio record and playback例子我也看了,我自己也调试了一段时间,现在有几个小疑惑想请教下大家:

1.i2s hal库用户似乎无法直接设定pdm采样率,因为hal库的api似乎是通过用户设定的pcm采样率间接地帮用户设定了pdm采样率。我用定时计数器测定了一下,好像pdm采样率总是用户设定的pcm采样率的64倍,但是这个比例和64有误差(那么decimation factor应该永远是64么?)

2.我设定pcm采样率为48KHz,mic_gain默认,我对pcm数据加了带通滤波器,经过通带之后有这么大的噪音(如下图所示),最大值可以到50多,我觉得噪音太大,而我的应用必须严格控制噪音,我一直怀疑因为我哪里没有设置对导致采集转换之后的pcm数据有错(噪声过大)

3.官方给的例子最后转换好的pcm数据是uint16_t型,我试了一下官方的例子有很多的65535这样的异常数据,我换成了int16_t型结果正常多了,难道官方写错了?

4.在官方给的例子中,数据格式似乎都是LSB,在pdm转pcm的时候似乎总是要高低8位调换顺序,我曾经尝试改成MSB,但是结果就完全不对了,我对此有疑惑。


5.st的pdm2pcm 库比起硬件转换效果如何?假如这个库本身有问题,我可以考虑硬件pdm pcm转换。
谢谢!








1.jpg
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2015-5-12
在线时间
2 小时
 楼主| 发表于 2018-9-15 13:39:24 | 显示全部楼层
以下是我所有相关的设置

hi2s2.Init.Standard = I2S_STANDARD_LSB;

hi2s2.Init.DataFormat = I2S_DATAFORMAT_16B;



hi2s2.Init.AudioFreq = 2*(I2S_AUDIOFREQ_48K);



PDM_FilterHandler.bit_order = PDM_FILTER_BIT_ORDER_LSB;

PDM_FilterHandler.endianness = PDM_FILTER_ENDIANNESS_LE;

PDM_FilterHandler.high_pass_tap =2122358088;

PDM_FilterHandler.out_ptr_channels = 1;

PDM_FilterHandler.in_ptr_channels = 1;



PDM_FilterConfig.output_samples_number = 16;

PDM_FilterConfig.mic_gain = 24;

PDM_FilterConfig.decimation_factor = PDM_FILTER_DEC_FACTOR_64;


&#8203DM_BUFF_SIZE  128

PCM_OUT_SIZE  16
回复

使用道具 举报

31

主题

2183

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
14422
金钱
14422
注册时间
2018-8-3
在线时间
1157 小时
发表于 2018-9-15 14:47:06 | 显示全部楼层
帮顶...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 00:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表