【Silicon Labs 开发套件评测】读取PDM的音频信号
[复制链接]
本帖最后由 北方 于 2021-9-3 10:55 编辑
读取PDM的音频信号
1、PDM简介
如下,pdm是一种和i2s并行的串行音频数据格式,代替传统的模拟mic,体积小,灵敏度高,是一种新的音频数据格式。
- Pulse Density Modulation =脉冲分时复用
- 手机和平板电脑等便携设备的音频,PDM在诸如手机和平板等对于空间限制严格的场合,即尺寸受限应用中优势明显,有着广泛的应用前景-》在数字麦克风应用很广,手机cpu到蓝牙的通话实时音频和mp3,codec的音频接口
- 一种用数字信号表示模拟信号的调制方法,PCM使用等间隔采样方法,将每次采样的模拟分量幅度表示为N位的数字分量(N = 量化深度),因此PCM方式每次采样的结果都是N bit字长的数据。PDM,只有2根线,传音乐,编码方式和I2S不同。PDM方式表示的正弦波
- PDM格式的音频信号可以在比如LCD屏这样Noise干扰强的电路附近走线(等于没说,这里指数字信号抗干扰能力相比于模拟信号更强,同样PCM也具有此优势)基于PDM的架构不同于I2S和TDM之处在于,抽取滤波器(Decimation Filter)不在发送设备,而在接收设备内部。源端输出是原始的高采样率(oversample)调制数据,如Sigma-Delta调制器的输出,而不是像I2S中那样的抽取数据。基于PDM接口的应用降低了发送设备的复杂性,由于作为接收设备的CODEC内部集成抽取滤波器,因此系统整体复杂度大大降低。对于数字麦克风而言,通过使用面向CODEC或处理器制造的更精细硅工艺,而非传统麦克风使用的工艺,可以实现更高效率的抽取滤波器。
2、创建工程并开启PDM外设
2.1 首先需要启动新建工程的slcp文件进行设置,找到board control进入
2.2 直接显示板载外设的增删
2.3 启动后显示硬件更改,
2.4 对应的是对配置文件的直接修改
2.5 下拉可以更改实用的引脚
2.6 对应显示需要设置的元件,因为没有installed所以,原来看不到这个选项
2.7 首先点击安装,然后就可以配置PDM的参数,
2.8 为了便于使用再这里提供了api手册和使用范例
2.9 根据代码是否使用rtos,选择快速使用代码,范例代码和主要的函数如下,
#include "sl_mic.h"
#define MIC_SAMPLE_RATE 44100
#define MIC_SAMPLE_BUFFER_SIZE 1024
#define MIC_N_CHANNELS 2
static int16_t buffer[MIC_SAMPLE_BUFFER_SIZE * MIC_N_CHANNELS];
int main( void )
{
float sound_level_0;
float sound_level_1;
uint32_t n_samples = 1024;
// Initialize microphone with sample rate and number of channels
sl_mic_init(MIC_SAMPLE_RATE, MIC_N_CHANNELS);
while(true){
// Read samples from the microphone
sl_mic_get_n_samples(buffer, n_samples);
while (!sl_mic_sample_buffer_ready()) {
// Wait until sample buffer ready
}
// Calculate sound level
sl_mic_calculate_sound_level(&sound_level_0, buffer, n_samples, 0);
sl_mic_calculate_sound_level(&sound_level_1, buffer, n_samples, 1);
}
}
3、代码编写和实用
代码开放首先初始化,然后定期读取buff中数据,就可以快速实现代码的取用了。
|