当前位置: 首页 > news >正文

【RK3576】【Android14】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 = <0x0 0x273b0000 0x0 0x1000>;  // 寄存器物理地址范围
    interrupts = <0 202 4>;             // 中断号(202)及高电平触发(4)
    clocks = <&cru 508>, <&cru 507>, <&cru 511>;  // 时钟源:主时钟/HCLK/输出时钟
    clock-names = "pdm_clk", "pdm_hclk", "pdm_clk_out";  // 时钟标识
    dmas = <&dmac0 4>;                  // 使用DMA控制器0通道4
    dma-names = "rx";                   // DMA方向(接收)
    pinctrl-names = "default", "idle", "clk";  // 引脚状态定义
    pinctrl-0 = <&pdm0m0_sdi0 &pdm0m0_sdi1 &pdm0m0_sdi2 &pdm0m0_sdi3>;  // 默认数据引脚
    pinctrl-1 = <&pdm0m0_clk0_idle &pdm0m0_clk1_idle>;  // 空闲时钟引脚
    pinctrl-2 = <&pdm0m0_clk0 &pdm0m0_clk1>;  // 工作时钟引脚
    #sound-dai-cells = <0>;             // 无附加参数
    sound-name-prefix = "PDM0";         // 声卡设备前缀
    status = "disabled";                // 默认禁用
};

/* PDM0引脚复用 - 支持4种模式(m0-m3) */
pdm0 {
    // 模式0 (m0) - 基础引脚配置
    pdm0m0_clk0: rockchip,pins = <0 20 3 &pcfg_pull_none>;  // GPIO0_B4, 功能3, 无上拉
    pdm0m0_sdi0: rockchip,pins = <0 24 3 &pcfg_pull_none>;  // GPIO0_C0
    
    // 模式1 (m1) - 备用引脚组
    pdm0m1_clk0: rockchip,pins = <1 9 5 &pcfg_pull_none>;   // GPIO1_B1, 功能5
    
    // 模式2/3配置省略...
};

/* PDM空闲状态引脚 */
&pinctrl {
    pdm0m0_clk0_idle: rockchip,pins = <0 20 0 &pcfg_pull_none>;  // 空闲状态: GPIO模式(0)
    pdm1m1_clk0_idle: rockchip,pins = <4 6 0 &pcfg_pull_none>;   // GPIO4_A6
};

/* 虚拟编解码器 */
pdmics: dummy-codec {
    compatible = "rockchip,dummy-codec";  // 虚拟设备驱动
    #sound-dai-cells = <0>;               // 用于声卡绑定
};

/* PDM麦克风阵列声卡 */
pdm_mic_array {
    compatible = "simple-audio-card";
    simple-audio-card,name = "rockchip,pdm-mic-array";  // 设备名称
    simple-audio-card,cpu {
        sound-dai = <&pdm1>;  // 绑定到PDM1控制器
    };
    simple-audio-card,codec {
        sound-dai = <&pdmics>;  // 使用虚拟编解码器
    };
};

http://www.lryc.cn/news/595880.html

相关文章:

  • 杭州网站建设选哪家?派迪科技项目实力展示
  • Python 正则表达式在数据分析中的应用:实战指南
  • OpenCV基本的图像处理
  • AI助力临床医学科研创新与效率双提升丨临床医学日常工作、论文高效撰写与项目申报、数据分析与可视化、机器学习建模等
  • 深入解析 Pandas:Python 数据分析的强大工具
  • AWE2026启动:加码AI科技,双展区联动开启产业新格局
  • 小玩 Lifecycle
  • ESP32-Cam三脚架机器人:DIY你的智能移动监控平台
  • 单一职责原则(SRP):构建高质量软件的基石
  • 【接口自动化】掌握接口自动化:核心概念讲解(理论知识)
  • Java 大视界 -- Java 大数据在智能医疗医疗设备维护与管理中的应用(358)
  • 阁楼式货架:垂直空间革命下的仓储效率升级方案
  • 在线教育培训课程视频如何防下载、防盗录?
  • 企业级IIS配置手册:安全加固/负载均衡/性能优化最佳实践
  • 为什么使用扩展坞会降低显示器的最大分辨率和刷新率
  • Cloud 与 VPS 的区别:如何选择最适合你的服务器解决方案?
  • vmware vsphere esxi6.5 使用工具导出镜像
  • SecretFlow (3) --- 添加合作方并创建项目
  • python小工具:测内网服务器网速和延迟
  • IPv4枯竭时代:从NAT技术到IPv6的演进之路
  • 本地代理和服务器代理区别
  • 目标检测系列(六)labelstudio实现自动化标注
  • JVM:工具
  • C++ 中重载函数右值引用和左值引用匹配的优先级
  • IP43半加固笔记本L156H
  • YOLO12论文阅读:Attention-Centric Real-Time Object Detectors
  • Linux操作系统从入门到实战(十二)Linux操作系统第一个程序(进度条)
  • iOS组件化详解
  • 深入浅出控制反转与依赖注入:从理论到实践
  • SOLIDWORKS 2025电脑硬件配置指南-代理商硕迪科技