406|3

59

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

【Follow me第二季第4期】任务2:PDM麦克风的学习 [复制链接]

 

本帖最后由 zsy-s 于 2024-12-4 17:23 编辑

硬件

麦克风使用的型号:MP34DT06JTR
手册

C503097_EF0A804A7781362D892B90F67AF71357.pdf

(9.77 MB, 下载次数: 4)

lr引脚的定义

知识点学习

高保真音频:44khz
数字音频信号PDM代表脉冲密度调制(Pulse Density Modulation)。以非常高的频率采集音频信号,也被称为:Oversampled 1-bit Audio。PDM是一种调制形式,用于表示数字域中的模拟信号。
采样时许:
sck是采样频率,在每个上升沿或者下降沿采集一位音频数据。
对于右声道来说,上升沿启动右声道数据,最多tren时间后,右声道数据有效,下降沿后延迟trdis时间后,数据可以变化,这样保证了下降沿采集音频数据时,数据能保证有效。

数据的使用

PDM信号无法直接驱动DA进行声音播放,PDM信号要变为声音信号还需要进行下采样,经过一次低通滤波和抽样,然后成为PCM信号。
pdm是快速对音频进行调制的一种协议,通过密度来表示音频的模拟信号的幅度。密集的1标志正幅度,密集的0标识负幅度,平均交替的01标识 0幅度。如下如所示。

代码

包含官方的pdm头文件。
#include <PDM.h>
配置pdm 并启动pdm数据采集。

  1. static const int frequency = 16000;
  2. static const char channels = 1;
  3. PDM.onReceive(onPDMdata);
  4. if (!PDM.begin(channels, frequency)) {
  5. Serial.println("Failed to start PDM!");
  6. while (1);
  7. }

回调读取数据并设置可读数据长度。

  1. void onPDMdata() {
  2. // Query the number of available bytes
  3. int bytesAvailable = PDM.available();
  4. // Read into the sample buffer
  5. PDM.read(sampleBuffer, bytesAvailable);
  6. // 16-bit, 2 bytes per sample
  7. samplesRead = bytesAvailable / 2;
  8. }

打印采集到pdm数据

  1. if (samplesRead) {
  2. for (int i = 0; i < samplesRead; i++) {
  3. if(channels == 2) {
  4. Serial.print("L:");
  5. Serial.print(sampleBuffer<i>);
  6. Serial.print(" R:");
  7. i++;
  8. }
  9. Serial.println(sampleBuffer<i>);
  10. }
  11. samplesRead = 0;
  12. }

效果

结论

pdm转换声音的逻辑,不太熟悉,学习到了,在更新一下

串口工具

V0.3.5-win64-MinGW.7z

(8.82 MB, 下载次数: 10)

最新回复

请教下最后一个波形图是怎么打印的?     详情 回复 发表于 2024-12-4 18:21
点赞 关注(1)
 
 

回复
举报

79

帖子

3

TA的资源

一粒金砂(中级)

沙发
 

大佬,你的串口数据是用什么工具采集的啊?

点评

我是菜鸟,我看论坛的各位都是大佬,我一会传上去  详情 回复 发表于 2024-12-4 17:22
个人签名

MCU 开发者和爱好者

 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(高级)

板凳
 
lijinlei 发表于 2024-12-4 12:32 大佬,你的串口数据是用什么工具采集的啊?

我是菜鸟,我看论坛的各位都是大佬,我一会传上去

 
 
 

回复

125

帖子

12

TA的资源

一粒金砂(中级)

4
 

请教下最后一个波形图是怎么打印的?

 
个人签名尽吾志也而不能至者,可以无悔矣。——王安石
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
福禄克有奖直播:高精度测温赋能电子制造 报名中!
直播时间:2025年2月28日(周五)上午10:00
直播主题:高精度测温赋能电子制造
小伙伴们儿快来报名直播吧~好礼等你拿!

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表