Skip to content

I2S ​

Rhino Pi IQ9N 提供 1 路 I2S 数字音频接口,连接器型号为 WAFER-GH1.25-4PLB。

接口定义 ​

I2S 接口在板卡上的位置参见首页 Rhino Pi IQ9N 接口说明 中的接口位置示意图。

引脚信号说明
1DATA音频数据
2SCK位时钟
3WS声道选择(帧同步)
4GND地

该接口输出的是 I2S 数字音频信号,需外接带 I2S 输入的 DAC 或编解码芯片才能驱动扬声器。

音频系统概览 ​

项目说明
板载音频2 × 5W Speaker,通过 SPK 接口输出
阵列麦克风4Mic Array 全向麦克风
AEC支持回声消除,需配合 USB2.0 内部音频接口使用

扬声器与麦克风的接线说明参见 音频测试。

查看声卡与设备 ​

bash
aplay -l
arecord -l

播放音频 ​

使用 aplay 播放 WAV 文件:

bash
aplay -D hw:0,0 test.wav

指定声卡与设备:

bash
aplay -D plughw:<card>,<device> test.wav

录制音频 ​

bash
arecord -D hw:0,0 -f S16_LE -r 48000 -c 2 -d 5 rec.wav

参数说明:

参数说明
-f S16_LE16 位小端采样格式
-r 48000采样率 48 kHz
-c 2双声道
-d 5录制时长 5 秒

配置默认声卡 ​

查看可用声卡列表:

bash
cat /proc/asound/cards

设置默认声卡,可编辑 /etc/asound.conf:

text
defaults.pcm.card 0
defaults.ctl.card 0

示例:读取 I2S 麦克风数据(Python) ​

python
import wave
import pyaudio

FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 48000
CHUNK = 1024
SECONDS = 5

p = pyaudio.PyAudio()
stream = p.open(
    format=FORMAT,
    channels=CHANNELS,
    rate=RATE,
    input=True,
    frames_per_buffer=CHUNK,
)

frames = []
for _ in range(int(RATE / CHUNK * SECONDS)):
    frames.append(stream.read(CHUNK))

stream.stop_stream()
stream.close()
p.terminate()

with wave.open("rec.wav", "wb") as wf:
    wf.setnchannels(CHANNELS)
    wf.setsampwidth(p.get_sample_size(FORMAT))
    wf.setframerate(RATE)
    wf.writeframes(b"".join(frames))

依赖安装:

bash
sudo apt install -y python3-pyaudio

注意事项 ​

  • 接口为 3.3V 电平,外接器件需支持 3.3V I2S 时序。
  • 外接 I2S 器件时需确认器件是从模式还是主模式,避免时钟方向冲突。
  • 采样率、位宽等参数需与从设备能力一致,否则会出现噪声或无声。
  • 接线与接口位置说明参见 调试与扩展接口。