【RK3576】【Android14】MIC开发调试_rockchip mic阵列
获取更多相关的【RK3576】【Android14】驱动开发,可收藏系列博文,持续更新中:
【RK3576】Android 14 驱动开发实战指南
简介
硬件接口
PDM方案
RK 平台支持 PDM 协议的数字麦或者 ADC,支持 最大8个 MIC 阵列,支持 16 ~ 24 bits 位宽,支持 8 ~ 48k 采样率,支持 高通滤波:3.79 Hz, 60 Hz, 243 Hz, 493 Hz。
使用 PDM接口 连接麦克风阵列(不经过I2S/TDM),则需要依赖SoC内置的 PDM控制器 直接处理PDM信号。
PDM麦克风 → RK PDM控制器:
每个PDM麦克风需连接至SoC的PDM接口(CLK
时钟线 +DATA
数据线),4个麦克风通常需要:
- 1组共享的PDM_CLK(主时钟,由SoC提供)
- 4条独立的PDM_DATA线(每个麦克风一条)。
信号流:
PDM麦克风 → PDM控制器(硬件解码为PCM)→ DMA传输 → 内存 → 应用层
驱动开发
DTS配置
/* PDM0控制器 - 基础配置 */
pdm0: pdm@273b0000 {
compatible = \"rockchip,rk3576-pdm\"; // 驱动兼容性标识
reg = ; // 寄存器物理地址范围
interrupts = ; // 中断号(202)及高电平触发(4)
clocks = , , ; // 时钟源:主时钟/HCLK/输出时钟
clock-names = \"pdm_clk\", \"pdm_hclk\", \"pdm_clk_out\"; // 时钟标识
dmas = ; // 使用DMA控制器0通道4
dma-names = \"rx\"; // DMA方向(接收)
pinctrl-names = \"default\", \"idle\", \"clk\"; // 引脚状态定义
pinctrl-0 = ; // 默认数据引脚
pinctrl-1 = ; // 空闲时钟引脚
pinctrl-2 = ; // 工作时钟引脚
#sound-dai-cells = ; // 无附加参数
sound-name-prefix = \"PDM0\"; // 声卡设备前缀
status = \"disabled\"; // 默认禁用
};/* PDM0引脚复用 - 支持4种模式(m0-m3) */
pdm0 {
// 模式0 (m0) - 基础引脚配置
pdm0m0_clk0: rockchip,pins = ; // GPIO0_B4, 功能3, 无上拉
pdm0m0_sdi0: rockchip,pins = ; // GPIO0_C0
// 模式1 (m1) - 备用引脚组
pdm0m1_clk0: rockchip,pins = ; // GPIO1_B1, 功能5
// 模式2/3配置省略...
};/* PDM空闲状态引脚 */
&pinctrl {
pdm0m0_clk0_idle: rockchip,pins = ; // 空闲状态: GPIO模式(0)
pdm1m1_clk0_idle: rockchip,pins = ; // GPIO4_A6
};/* 虚拟编解码器 */
pdmics: dummy-codec {
compatible = \"rockchip,dummy-codec\"; // 虚拟设备驱动
#sound-dai-cells = ; // 用于声卡绑定
};/* PDM麦克风阵列声卡 */
pdm_mic_array {
compatible = \"simple-audio-card\";
simple-audio-card,name = \"rockchip,pdm-mic-array\"; // 设备名称
simple-audio-card,cpu {
sound-dai = ; // 绑定到PDM1控制器
};
simple-audio-card,codec {
sound-dai = ; // 使用虚拟编解码器
};
};