文章目录
- 简介
- 实验准备
- 接线定义
- 示例程序
- 实验现象
- 总结
简介
SPH0645LM4H-B 是一款微型、低功耗、并且具有 I2S 数字输出的底部端口麦克风。I2S 接口简化了系统集成,并允许与数字处理器、应用处理器和微控制器直接互连。 SPH0645LM4H-B 无需外部音频编解码器,非常适合尺寸和功耗受限的便携式应用。
实验准备
Arduino MKRZero开发板 | 1个 |
---|---|
SPH0645模块 | 1个 |
离线语音模块 | 1个 |
杜邦线 | 若干 |
接线定义
Arduino MKRZero | SPH0645 |
---|---|
VCC | 3V |
GND | GND |
D2 | BCLK |
D3 | LRCL |
A6 | DOUT |
示例程序
#include <I2S.h>
void setup() {
// Open serial communications and wait for port to open:
// A baud rate of 115200 is used instead of 9600 for a faster data rate
// on non-native USB ports
SerialUSB.begin(115200);
while (!SerialUSB) {
; // wait for serial port to connect. Needed for native USB port only
}
// start I2S at 16 kHz with 32-bits per sample
if (!I2S.begin(I2S_PHILIPS_MODE, 16000, 32)) {
SerialUSB.println("Failed to initialize I2S!");
while (1); // do nothing
}
}
void loop() {
// read a sample
int sample = I2S.read();
if ((sample == 0) || (sample == -1) ) {
return;
}
// convert to 18 bit signed
sample >>= 14;
// if it's non-zero print value to serial
delay(10);
SerialUSB.println(sample);
}
注意这里选的开发板型号选择Arduino MKRZERO,端口选择对应的端口号(我这里是COM43,根据自己的端口号选择),这样编译才能通过。
实验现象
程序上传后,从“工具”打开“串口绘图器” ,波特率选择115200
可以看到串口输出的声音波形图。
打开串口也能看到样本数据。
总结
本文介绍了利用MKRZero通过I2S读取SPH0645音频数据,并将样本打印到串行控制台。